Ubuntu cluster: properly formatting shell scripts

This commit is contained in:
Deyuan Deng
2015-06-23 23:01:59 -04:00
committed by Deyuan Deng
parent 09a274a7a5
commit 6f765708ad
5 changed files with 78 additions and 79 deletions

View File

@@ -21,8 +21,8 @@
set -e set -e
function cleanup { function cleanup {
# cleanup work # cleanup work
rm -rf flannel* kubernetes* etcd* binaries rm -rf flannel* kubernetes* etcd* binaries
} }
trap cleanup SIGHUP SIGINT SIGTERM trap cleanup SIGHUP SIGINT SIGTERM
@@ -33,8 +33,8 @@ mkdir -p binaries/minion
echo "Download flannel release ..." echo "Download flannel release ..."
FLANNEL_VERSION="0.4.0" FLANNEL_VERSION="0.4.0"
if [ ! -f flannel.tar.gz ] ; then if [ ! -f flannel.tar.gz ] ; then
curl -L https://github.com/coreos/flannel/releases/download/v${FLANNEL_VERSION}/flannel-${FLANNEL_VERSION}-linux-amd64.tar.gz -o flannel.tar.gz curl -L https://github.com/coreos/flannel/releases/download/v${FLANNEL_VERSION}/flannel-${FLANNEL_VERSION}-linux-amd64.tar.gz -o flannel.tar.gz
tar xzf flannel.tar.gz tar xzf flannel.tar.gz
fi fi
cp flannel-${FLANNEL_VERSION}/flanneld binaries/master cp flannel-${FLANNEL_VERSION}/flanneld binaries/master
cp flannel-${FLANNEL_VERSION}/flanneld binaries/minion cp flannel-${FLANNEL_VERSION}/flanneld binaries/minion
@@ -44,8 +44,8 @@ echo "Download etcd release ..."
ETCD_VERSION="v2.0.9" ETCD_VERSION="v2.0.9"
ETCD="etcd-${ETCD_VERSION}-linux-amd64" ETCD="etcd-${ETCD_VERSION}-linux-amd64"
if [ ! -f etcd.tar.gz ] ; then if [ ! -f etcd.tar.gz ] ; then
curl -L https://github.com/coreos/etcd/releases/download/${ETCD_VERSION}/${ETCD}.tar.gz -o etcd.tar.gz curl -L https://github.com/coreos/etcd/releases/download/${ETCD_VERSION}/${ETCD}.tar.gz -o etcd.tar.gz
tar xzf etcd.tar.gz tar xzf etcd.tar.gz
fi fi
cp $ETCD/etcd $ETCD/etcdctl binaries/master cp $ETCD/etcd $ETCD/etcdctl binaries/master
cp $ETCD/etcd $ETCD/etcdctl binaries/minion cp $ETCD/etcd $ETCD/etcdctl binaries/minion
@@ -54,8 +54,8 @@ cp $ETCD/etcd $ETCD/etcdctl binaries/minion
echo "Download kubernetes release ..." echo "Download kubernetes release ..."
K8S_VERSION="v0.18.0" K8S_VERSION="v0.18.0"
if [ ! -f kubernetes.tar.gz ] ; then if [ ! -f kubernetes.tar.gz ] ; then
curl -L https://github.com/GoogleCloudPlatform/kubernetes/releases/download/${K8S_VERSION}/kubernetes.tar.gz -o kubernetes.tar.gz curl -L https://github.com/GoogleCloudPlatform/kubernetes/releases/download/${K8S_VERSION}/kubernetes.tar.gz -o kubernetes.tar.gz
tar xzf kubernetes.tar.gz tar xzf kubernetes.tar.gz
fi fi
pushd kubernetes/server pushd kubernetes/server
tar xzf kubernetes-server-linux-amd64.tar.gz tar xzf kubernetes-server-linux-amd64.tar.gz

View File

@@ -22,11 +22,10 @@ KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../..
source "config-default.sh" source "config-default.sh"
if [ "${ENABLE_CLUSTER_DNS}" == true ]; then if [ "${ENABLE_CLUSTER_DNS}" == true ]; then
echo "Deploying DNS on kubernetes" echo "Deploying DNS on kubernetes"
sed -e "s/{{ pillar\['dns_replicas'\] }}/${DNS_REPLICAS}/g;s/{{ pillar\['dns_domain'\] }}/${DNS_DOMAIN}/g" skydns-rc.yaml.template > skydns-rc.yaml sed -e "s/{{ pillar\['dns_replicas'\] }}/${DNS_REPLICAS}/g;s/{{ pillar\['dns_domain'\] }}/${DNS_DOMAIN}/g" skydns-rc.yaml.template > skydns-rc.yaml
sed -e "s/{{ pillar\['dns_server'\] }}/${DNS_SERVER_IP}/g" skydns-svc.yaml.template > skydns-svc.yaml sed -e "s/{{ pillar\['dns_server'\] }}/${DNS_SERVER_IP}/g" skydns-svc.yaml.template > skydns-svc.yaml
# use kubectl to create skydns rc and service # use kubectl to create skydns rc and service
"${KUBE_ROOT}/cluster/kubectl.sh" create -f skydns-rc.yaml "${KUBE_ROOT}/cluster/kubectl.sh" create -f skydns-rc.yaml
"${KUBE_ROOT}/cluster/kubectl.sh" create -f skydns-svc.yaml "${KUBE_ROOT}/cluster/kubectl.sh" create -f skydns-svc.yaml
fi fi

View File

@@ -49,5 +49,5 @@ sudo brctl delbr docker0
source /run/flannel/subnet.env source /run/flannel/subnet.env
echo DOCKER_OPTS=\"-H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock \ echo DOCKER_OPTS=\"-H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock \
--bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU}\" > /etc/default/docker --bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU}\" > /etc/default/docker
sudo service docker restart sudo service docker restart

View File

@@ -40,36 +40,36 @@ function setClusterInfo() {
ii=0 ii=0
for i in $nodes for i in $nodes
do do
name="infra"$ii name="infra"$ii
nodeIP=${i#*@} nodeIP=${i#*@}
item="$name=http://$nodeIP:2380" item="$name=http://$nodeIP:2380"
if [ "$ii" == 0 ]; then if [ "$ii" == 0 ]; then
CLUSTER=$item CLUSTER=$item
else else
CLUSTER="$CLUSTER,$item" CLUSTER="$CLUSTER,$item"
fi fi
mm[$nodeIP]=$name mm[$nodeIP]=$name
if [ "${roles[${ii}]}" == "ai" ]; then if [ "${roles[${ii}]}" == "ai" ]; then
MASTER_IP=$nodeIP MASTER_IP=$nodeIP
MASTER=$i MASTER=$i
MINION_IPS="$nodeIP"
elif [ "${roles[${ii}]}" == "a" ]; then
MASTER_IP=$nodeIP
MASTER=$i
elif [ "${roles[${ii}]}" == "i" ]; then
if [ -z "${MINION_IPS}" ];then
MINION_IPS="$nodeIP" MINION_IPS="$nodeIP"
elif [ "${roles[${ii}]}" == "a" ]; then
MASTER_IP=$nodeIP
MASTER=$i
elif [ "${roles[${ii}]}" == "i" ]; then
if [ -z "${MINION_IPS}" ];then
MINION_IPS="$nodeIP"
else
MINION_IPS="$MINION_IPS,$nodeIP"
fi
else else
echo "unsupported role for ${i}. please check" MINION_IPS="$MINION_IPS,$nodeIP"
exit 1
fi fi
else
echo "unsupported role for ${i}. please check"
exit 1
fi
((ii=ii+1)) ((ii=ii+1))
done done
} }
@@ -153,7 +153,7 @@ function verify-master(){
validated="0" validated="0"
local daemon local daemon
for daemon in "${required_daemon[@]}"; do for daemon in "${required_daemon[@]}"; do
ssh "$MASTER" "pgrep -f ${daemon}" >/dev/null 2>&1 || { ssh "$MASTER" "pgrep -f ${daemon}" >/dev/null 2>&1 || {
printf "." printf "."
validated="1" validated="1"
sleep 2 sleep 2
@@ -172,7 +172,7 @@ function verify-minion(){
validated="0" validated="0"
local daemon local daemon
for daemon in "${required_daemon[@]}"; do for daemon in "${required_daemon[@]}"; do
ssh "$1" "pgrep -f $daemon" >/dev/null 2>&1 || { ssh "$1" "pgrep -f $daemon" >/dev/null 2>&1 || {
printf "." printf "."
validated="1" validated="1"
sleep 2 sleep 2
@@ -320,18 +320,18 @@ function kube-up {
for i in ${nodes} for i in ${nodes}
do do
{ {
if [ "${roles[${ii}]}" == "a" ]; then if [ "${roles[${ii}]}" == "a" ]; then
provision-master provision-master
elif [ "${roles[${ii}]}" == "i" ]; then elif [ "${roles[${ii}]}" == "i" ]; then
provision-minion $i provision-minion $i
elif [ "${roles[${ii}]}" == "ai" ]; then elif [ "${roles[${ii}]}" == "ai" ]; then
provision-masterandminion provision-masterandminion
else else
echo "unsupported role for ${i}. please check" echo "unsupported role for ${i}. please check"
exit 1 exit 1
fi fi
} }
((ii=ii+1)) ((ii=ii+1))
done done
@@ -371,14 +371,14 @@ function provision-master() {
} }
function provision-minion() { function provision-minion() {
# copy the binaries and scripts to the ~/kube directory on the minion # copy the binaries and scripts to the ~/kube directory on the minion
echo "Deploying minion on machine ${1#*@}" echo "Deploying minion on machine ${1#*@}"
echo echo
ssh $SSH_OPTS $1 "mkdir -p ~/kube/default" ssh $SSH_OPTS $1 "mkdir -p ~/kube/default"
scp -r $SSH_OPTS ubuntu/config-default.sh ubuntu/util.sh ubuntu/reconfDocker.sh ubuntu/minion/* ubuntu/binaries/minion "${1}:~/kube" scp -r $SSH_OPTS ubuntu/config-default.sh ubuntu/util.sh ubuntu/reconfDocker.sh ubuntu/minion/* ubuntu/binaries/minion "${1}:~/kube"
# remote login to MASTER and use sudo to configue k8s master # remote login to MASTER and use sudo to configue k8s master
ssh $SSH_OPTS -t $1 "source ~/kube/util.sh; \ ssh $SSH_OPTS -t $1 "source ~/kube/util.sh; \
setClusterInfo; \ setClusterInfo; \
create-etcd-opts "${mm[${1#*@}]}" "${1#*@}" "${CLUSTER}"; \ create-etcd-opts "${mm[${1#*@}]}" "${1#*@}" "${CLUSTER}"; \
create-kubelet-opts "${1#*@}" "${MASTER_IP}" "${DNS_SERVER_IP}" "${DNS_DOMAIN}"; create-kubelet-opts "${1#*@}" "${MASTER_IP}" "${DNS_SERVER_IP}" "${DNS_DOMAIN}";
@@ -419,10 +419,10 @@ function kube-down {
source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE-"config-default.sh"}" source "${KUBE_ROOT}/cluster/ubuntu/${KUBE_CONFIG_FILE-"config-default.sh"}"
for i in ${nodes}; do for i in ${nodes}; do
{ {
echo "Cleaning on node ${i#*@}" echo "Cleaning on node ${i#*@}"
ssh -t $i 'pgrep etcd && sudo -p "[sudo] password for cleaning etcd data: " service etcd stop && sudo rm -rf /infra*' ssh -t $i 'pgrep etcd && sudo -p "[sudo] password for cleaning etcd data: " service etcd stop && sudo rm -rf /infra*'
} }
done done
wait wait
} }