Skip to content

Instantly share code, notes, and snippets.

@abajwa-hw
Last active July 16, 2017 20:29
Show Gist options
  • Save abajwa-hw/176aa9f7a43d46068206cbdb96179e00 to your computer and use it in GitHub Desktop.
Save abajwa-hw/176aa9f7a43d46068206cbdb96179e00 to your computer and use it in GitHub Desktop.
Script to onboard users for sandbox tutorials on SoftLayer
#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