Meta Description: This blog post provides a detailed guide on how to export and import Apache Ranger policies from one cluster to another, along with a python script that simplifies the process. The post includes pre-requisites, policy export and import steps, and shell scripts for each step.
Keywords: Apache Ranger, policies, export, import, clusters, python script, pre-requisites, policy export, policy import, shell script, step-by-step guide
Introduction:
This blog post provides a step-by-step guide to exporting and importing Apache Ranger policies between clusters. The guide includes a python script that simplifies the process and shell scripts for each step. The post also includes pre-requisites and policy export and import steps.
- Pre-requisites: The post mentions that having the same Ranger groups and users available on both the clusters is necessary, as some of the ranger imports may fail if a user or group doesn't exist.
- Policy export steps: The post provides detailed steps on how to export policies, including a command to extract the first 25000 Hive policy names, a command to export each policy in a separate file, and instructions on how to check the output and move the files to the target cluster.
- Policy import steps: The post provides detailed steps on how to prepare the exported policies for import on the target cluster, including a command to change the source cluster's ranger hive repository name to the target cluster's name. It also provides a shell script for the policy import step, including instructions on how to run the script on the target cluster and check the policies in the Ranger UI.
Step1:- Prepare the exported policies ready for import on target cluster.
As my source cluster ranger hive repository name is "c349_hive" and i need to change those to "c149_hive" which is my target cluster ranger hive repository name.
shell command to convert this :- This will change all the copied files and replace the values.
sed -i -e 's/c349_hive/c149_hive/g' *.json
Step2:- Prepare the shell script for import( Just change the target cluster Ranger host and port accordingly and /service/c149_hive/policy in URL)
for i in `cat policy_names.txt`; do echo "curl -u admin:admin -H \"Content-Type: application/json\" -X POST http://c149-node4:6080/service/public/v2/api/policy -d @policy_$i.json ">> curl_import_policy.sh; done
Step3:- Run the shell script "curl_import_policy.sh" on the target cluster to import the policies.
nohup ./curl_import_policy.sh &
The import should take time depending on the number of policies. Once finished you can check in target Ranger UI to check the policies.
Conclusion:
Exporting and importing Apache Ranger policies between clusters can be a complex task, but this guide and the accompanying python script can help simplify the process. By following the pre-requisites and the detailed policy export and import steps, users can ensure that their policies are successfully transferred between clusters.