:<&2 } docker-ps() { #docker ps|sed "s/ \{3,\}/#/g"|cut -d '#' -f 1,2,7|sed "s/#/\t/g" docker inspect --format="{{.Name}} {{.NetworkSettings.IPAddress}} {{.Config.Image}} {{.Config.Entrypoint}} {{.Config.Cmd}}" $(docker ps -q) } docker-psa() { #docker ps|sed "s/ \{3,\}/#/g"|cut -d '#' -f 1,2,7|sed "s/#/\t/g" docker inspect --format="{{.Name}} {{.NetworkSettings.IPAddress}} {{.Config.Image}} {{.Config.Entrypoint}} {{.Config.Cmd}}" $(docker ps -qa) } amb-start-cluster() { local act_cluster_size=$1 : ${act_cluster_size:=$CLUSTER_SIZE} echo starting an ambari cluster with: $act_cluster_size nodes amb-start-first [ $act_cluster_size -gt 1 ] && for i in $(seq $((act_cluster_size - 1))); do amb-start-node $i done } _amb_run_shell() { COMMAND=$1 : ${COMMAND:? required} get-ambari-server-ip EXPECTED_HOST_COUNT=$(docker inspect --format="{{.Config.Image}} {{.Name}}" $(docker ps -q)|grep $AMBARI_AGENT_IMAGE|grep $NODE_PREFIX|wc -l|xargs) run-command docker run -it --rm -e EXPECTED_HOST_COUNT=$EXPECTED_HOST_COUNT -e BLUEPRINT=$BLUEPRINT --link ${AMBARI_SERVER_NAME}:ambariserver \ --entrypoint /bin/sh $AMBARI_SERVER_IMAGE -c $COMMAND } amb-shell() { _amb_run_shell /tmp/ambari-shell.sh } amb-deploy-cluster() { local act_cluster_size=$1 : ${act_cluster_size:=$CLUSTER_SIZE} if [[ $# -gt 1 ]]; then BLUEPRINT=$2 else [ $act_cluster_size -gt 1 ] && BLUEPRINT=multi-node-hdfs-yarn || BLUEPRINT=single-node-hdfs-yarn fi : ${BLUEPRINT:?" required (single-node-hdfs-yarn / multi-node-hdfs-yarn / hdp-singlenode-default / hdp-multinode-default)"} amb-start-cluster $act_cluster_size _amb_run_shell /tmp/install-cluster.sh } amb-start-first() { local dns_port_command="" if [[ "$EXPOSE_DNS" == "true" ]]; then dns_port_command="-p 53:$DNS_PORT/udp" fi run-command docker run -d $dns_port_command --name $CONSUL -h $CONSUL.service.consul $CONSUL_IMAGE -server -bootstrap sleep 5 run-command docker run -d $DOCKER_OPTS --privileged --name $AMBARI_SERVER_NAME -h $AMBARI_SERVER_NAME.service.consul $AMBARI_SERVER_IMAGE \ systemd.setenv=NAMESERVER_ADDR=$(get-consul-ip) get-ambari-server-ip _consul-register-service $AMBARI_SERVER_NAME $AMBARI_SERVER_IP _consul-register-service ambari-8080 $AMBARI_SERVER_IP } amb-copy-to-hdfs() { get-ambari-server-ip FILE_PATH=${1:?"usage: "} FILE_NAME=${2:?"usage: "} DIR=${3:?"usage: "} amb-create-hdfs-dir $DIR DATANODE=$(curl -si -X PUT "http://$AMBARI_SERVER_IP:50070/webhdfs/v1$DIR/$FILE_NAME?user.name=hdfs&op=CREATE" |grep Location | sed "s/\..*//; s@.*http://@@") DATANODE_IP=$(get-host-ip $DATANODE) curl -T $FILE_PATH "http://$DATANODE_IP:50075/webhdfs/v1$DIR/$FILE_NAME?op=CREATE&user.name=hdfs&overwrite=true&namenoderpcaddress=$AMBARI_SERVER_IP:8020" } amb-create-hdfs-dir() { get-ambari-server-ip DIR=$1 curl -X PUT "http://$AMBARI_SERVER_IP:50070/webhdfs/v1$DIR?user.name=hdfs&op=MKDIRS" > /dev/null 2>&1 } amb-scp-to-first() { get-ambari-server-ip FILE_PATH=${1:?"usage: "} DEST_PATH=${2:?"usage: "} scp $FILE_PATH root@$AMBARI_SERVER_IP:$DEST_PATH } amb-start-node() { get-ambari-server-ip : ${AMBARI_SERVER_IP:?"AMBARI_SERVER_IP is needed"} NUMBER=${1:?"please give a parameter it will be used as node"} if [[ $# -eq 1 ]]; then MORE_OPTIONS="-d" else shift MORE_OPTIONS="$@" fi run-command docker run $MORE_OPTIONS $DOCKER_OPTS --privileged --name ${NODE_PREFIX}$NUMBER -h ${NODE_PREFIX}${NUMBER}.service.consul $AMBARI_AGENT_IMAGE \ systemd.setenv=NAMESERVER_ADDR=$(get-consul-ip) _consul-register-service ${NODE_PREFIX}${NUMBER} $(get-host-ip ${NODE_PREFIX}$NUMBER) } _consul-register-service() { curl -X PUT -d "{ \"Node\": \"$1\", \"Address\": \"$2\", \"Service\": { \"Service\": \"$1\" } }" http://$(get-consul-ip):8500/v1/catalog/register }