Last active
July 16, 2017 20:29
-
-
Save abajwa-hw/176aa9f7a43d46068206cbdb96179e00 to your computer and use it in GitHub Desktop.
Script to onboard users for sandbox tutorials on SoftLayer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Script to onboard users for sandbox tutorials. One liner to download and run: | |
#curl -sSL https://gist.github.com/abajwa-hw/176aa9f7a43d46068206cbdb96179e00/raw | sudo -E bash | |
export ambari_pass=${ambari_pass:-'IBMDem0s!'} #ambari password | |
export refresh_notebooks=${refresh_notebooks:-'false'} #whether to pull latest Zeppelin notebooks from github. Disabling as there may not be access | |
ambari_url="https://localhost:8080/api/v1" | |
echo "Turning off iptables..." | |
sudo service iptables stop | |
echo "Starting Ambari server..." | |
sudo ambari-server start | |
echo "Waiting 30s for Ambari to be fully up..." | |
sleep 30 | |
echo "Adding maria_dev as user to local OS..." | |
sudo groupadd sandbox | |
sudo useradd -g sandbox maria_dev | |
echo "Creating home dir for maria_dev and admin..." | |
sudo -u hdfs hdfs dfs -mkdir /user/maria_dev | |
sudo -u hdfs hdfs dfs -chown maria_dev:sandbox /user/maria_dev | |
sudo -u hdfs hdfs dfs -mkdir /user/admin | |
sudo -u hdfs hdfs dfs -chown admin:hdfs /user/admin | |
users="maria_dev" | |
groups="sandbox" | |
for user in ${users}; do | |
echo "adding user ${user} to Ambari" | |
curl -ku admin:${ambari_pass} -H "X-Requested-By: blah" -X POST -d "{\"Users/user_name\":\"${user}\",\"Users/password\":\"${ambari_pass}\",\"Users/active\":\"true\",\"Users/admin\":\"false\"}" ${ambari_url}/users | |
done | |
#create groups in Ambari | |
for group in ${groups}; do | |
echo "adding group ${group} to Ambari" | |
curl -ku admin:${ambari_pass} -H "X-Requested-By: blah" -X POST -d "{\"Groups/group_name\":\"${group}\"}" ${ambari_url}/groups | |
done | |
#sandbox group membership | |
echo "adding maria_dev to sandbox group in Ambari" | |
curl -ku admin:${ambari_pass} -H "X-Requested-By: blah" -X POST -d '{"MemberInfo/user_name":"maria_dev", "MemberInfo/group_name":"sandbox"}' ${ambari_url}/groups/sandbox/members | |
#add Hive view for group | |
#curl -ku admin:${ambari_pass} -i -H 'X-Requested-By: blah' -X PUT ${ambari_url}/views/HIVE/versions/2.0.0/instances/AUTO_HIVE20_INSTANCE/privileges --data '{"PrivilegeInfo":{"permission_name":"VIEW.USER","principal_name":"sandbox","principal_type":"GROUP"}},{"PrivilegeInfo":{"permission_name":"VIEW.USER","principal_name":"CLUSTER.ADMINISTRATOR","principal_type":"ROLE"}},{"PrivilegeInfo":{"permission_name":"VIEW.USER","principal_name":"CLUSTER.OPERATOR","principal_type":"ROLE"}},{"PrivilegeInfo":{"permission_name":"VIEW.USER","principal_name":"SERVICE.OPERATOR","principal_type":"ROLE"}},{"PrivilegeInfo":{"permission_name":"VIEW.USER","principal_name":"SERVICE.ADMINISTRATOR","principal_type":"ROLE"}},{"PrivilegeInfo":{"permission_name":"VIEW.USER","principal_name":"CLUSTER.USER","principal_type":"ROLE"}}' | |
#make maria_dev an ambari admin | |
echo "Making maria_dev an ambari admin so she can access all views" | |
curl -ku admin:${ambari_pass} -i -H 'X-Requested-By: blah' -X PUT ${ambari_url}/users/maria_dev --data '{"Users/admin":true}' | |
echo "Kill Zeppelin if already running..." | |
sudo fuser -k 9995/tcp | |
sudo mkdir /var/run/zeppelin | |
sudo chown zeppelin:hadoop /var/run/zeppelin | |
if [ "${refresh_notebooks}" = true ]; then | |
echo "updating Zeppelin notebooks..." | |
sudo yum install -y git | |
curl -sSL https://raw.githubusercontent.com/hortonworks-gallery/zeppelin-notebooks/master/update_all_notebooks.sh | sudo -u zeppelin -E sh | |
fi | |
output=$(curl -ku admin:${ambari_pass} -i -H 'X-Requested-By: blah' ${ambari_url}/clusters) | |
CLUSTER=$(echo $output | sed -n 's/.*"cluster_name" : "\([^\"]*\)".*/\1/p') | |
echo "cluster name detected to be $CLUSTER" | |
echo "Disabling maintenance mode for Zeppelin/Spark and starting them..." | |
curl -ku admin:${ambari_pass} -i -H 'X-Requested-By: blah' -X PUT -d '{"RequestInfo": {"context" :"Remove Zeppelin from maintenance mode"}, "Body": {"ServiceInfo": {"maintenance_state": "OFF"}}}' ${ambari_url}/clusters/$CLUSTER/services/ZEPPELIN | |
curl -ku admin:${ambari_pass} -i -H 'X-Requested-By: blah' -X PUT -d '{"RequestInfo": {"context" :"Remove Spark from maintenance mode"}, "Body": {"ServiceInfo": {"maintenance_state": "OFF"}}}' ${ambari_url}/clusters/$CLUSTER/services/SPARK | |
curl -ku admin:${ambari_pass} -i -H 'X-Requested-By: blah' -X PUT -d '{"RequestInfo": {"context" :"Start Zeppelin via REST"}, "Body": {"ServiceInfo": {"state": "STARTED"}}}' ${ambari_url}/clusters/$CLUSTER/services/ZEPPELIN | |
curl -ku admin:${ambari_pass} -i -H 'X-Requested-By: blah' -X PUT -d '{"RequestInfo": {"context" :"Start Spark via REST"}, "Body": {"ServiceInfo": {"state": "STARTED"}}}' ${ambari_url}/clusters/$CLUSTER/services/SPARK | |
echo "Done! Now follow steps from lab guide" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment