Skip to content

Commit 41224aa

Browse files
kencochranemavenugo
authored andcommitted
switched over to use the new metatoken service (docker-archive#444)
Signed-off-by: Ken Cochrane <[email protected]>
1 parent 1b9fdcf commit 41224aa

File tree

8 files changed

+75
-70
lines changed

8 files changed

+75
-70
lines changed

aws/cloudformation/docker_for_aws.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -547,6 +547,7 @@
547547
"echo \"localhost: ", {"Ref": "ExternalLoadBalancer"}, "\" >> /var/lib/docker/swarm/elb.config\n",
548548
"echo \"default: ", {"Ref": "ExternalLoadBalancer"}, "\" >> /var/lib/docker/swarm/elb.config\n",
549549
"export DOCKER_FOR_IAAS_VERSION='", { "Fn::FindInMap" : [ "DockerForAWS", "version", "forAws" ] }, "'\n",
550+
"export LOCAL_IP=$(wget -qO- http://169.254.169.254/latest/meta-data/local-ipv4)\n",
550551
"echo '{\"experimental\": true, \"log-driver\": \"awslogs\",\"log-opts\": {\"awslogs-group\":\"",
551552
{ "Fn::Join": [ "-", [ { "Ref": "AWS::StackName"}, "lg" ] ] },
552553
"\" }}' > /etc/docker/daemon.json \n",
@@ -555,6 +556,13 @@
555556
"rc-service docker restart\n",
556557
"sleep 5\n",
557558

559+
"docker run --log-driver=json-file --name=meta-aws --restart=always -d -p $LOCAL_IP:9024:8080 ",
560+
"-e AWS_REGION='",{ "Ref" : "AWS::Region" }, "' ",
561+
"-e MANAGER_SECURITY_GROUP_ID='",{ "Ref" : "ManagerVpcSG" }, "' ",
562+
"-e WORKER_SECURITY_GROUP_ID='",{ "Ref" : "NodeVpcSG" }, "' ",
563+
"-v /var/run/docker.sock:/var/run/docker.sock ",
564+
"docker4x/meta-aws:$DOCKER_FOR_IAAS_VERSION\n",
565+
558566
"docker run --log-driver=json-file --restart=no -d ",
559567
"-e DYNAMODB_TABLE='", { "Ref" : "SwarmDynDBTable" } , "' ",
560568
"-e NODE_TYPE='manager' ",

aws/cloudformation/docker_for_aws_cloud.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -572,6 +572,7 @@
572572
"echo \"localhost: ", {"Ref": "ExternalLoadBalancer"}, "\" >> /var/lib/docker/swarm/elb.config\n",
573573
"echo \"default: ", {"Ref": "ExternalLoadBalancer"}, "\" >> /var/lib/docker/swarm/elb.config\n",
574574
"export DOCKER_FOR_IAAS_VERSION='", { "Fn::FindInMap" : [ "DockerForAWS", "version", "forAws" ] }, "'\n",
575+
"export LOCAL_IP=$(wget -qO- http://169.254.169.254/latest/meta-data/local-ipv4)\n",
575576
"echo '{\"experimental\": true, \"log-driver\": \"awslogs\",\"log-opts\": {\"awslogs-group\":\"",
576577
{ "Fn::Join": [ "-", [ { "Ref": "AWS::StackName"}, "lg" ] ] },
577578
"\" }}' > /etc/docker/daemon.json \n",
@@ -580,6 +581,13 @@
580581
"rc-service docker restart\n",
581582
"sleep 5\n",
582583

584+
"docker run --log-driver=json-file --name=meta-aws --restart=always -d -p $LOCAL_IP:9024:8080 ",
585+
"-e AWS_REGION='",{ "Ref" : "AWS::Region" }, "' ",
586+
"-e MANAGER_SECURITY_GROUP_ID='",{ "Ref" : "ManagerVpcSG" }, "' ",
587+
"-e WORKER_SECURITY_GROUP_ID='",{ "Ref" : "NodeVpcSG" }, "' ",
588+
"-v /var/run/docker.sock:/var/run/docker.sock ",
589+
"kencochrane/meta:latest\n",
590+
583591
"docker run --log-driver=json-file --restart=no -d ",
584592
"-e DYNAMODB_TABLE='", { "Ref" : "SwarmDynDBTable" } , "' ",
585593
"-e NODE_TYPE='manager' ",

aws/cloudformation/docker_for_aws_ddc.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -574,6 +574,7 @@
574574
"echo \"localhost: ", {"Ref": "ExternalLoadBalancer"}, "\" >> /var/lib/docker/swarm/elb.config\n",
575575
"echo \"default: ", {"Ref": "ExternalLoadBalancer"}, "\" >> /var/lib/docker/swarm/elb.config\n",
576576
"export DOCKER_FOR_IAAS_VERSION='", { "Fn::FindInMap" : [ "DockerForAWS", "version", "forAws" ] }, "'\n",
577+
"export LOCAL_IP=$(wget -qO- http://169.254.169.254/latest/meta-data/local-ipv4)\n",
577578
"echo '{\"log-driver\": \"awslogs\",\"log-opts\": {\"awslogs-group\":\"",
578579
{ "Fn::Join": [ "-", [ { "Ref": "AWS::StackName"}, "lg" ] ] },
579580
"\" }}' > /etc/docker/daemon.json \n",
@@ -582,6 +583,13 @@
582583
"rc-service docker restart\n",
583584
"sleep 5\n",
584585

586+
"docker run --log-driver=json-file --name=meta-aws --restart=always -d -p $LOCAL_IP:9024:8080 ",
587+
"-e AWS_REGION='",{ "Ref" : "AWS::Region" }, "' ",
588+
"-e MANAGER_SECURITY_GROUP_ID='",{ "Ref" : "ManagerVpcSG" }, "' ",
589+
"-e WORKER_SECURITY_GROUP_ID='",{ "Ref" : "NodeVpcSG" }, "' ",
590+
"-v /var/run/docker.sock:/var/run/docker.sock ",
591+
"kencochrane/meta:latest\n",
592+
585593
"docker run --log-driver=json-file --restart=no -d ",
586594
"-e DYNAMODB_TABLE='", { "Ref" : "SwarmDynDBTable" } , "' ",
587595
"-e NODE_TYPE='manager' ",

aws/dockerfiles/Dockerfile.guide

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,10 @@ ADD files/guide/crontab.txt /usr/docker/crontab.txt
1818
ADD files/guide/watcher.sh /usr/bin
1919
ADD files/guide/cleanup.sh /usr/bin
2020
ADD files/guide/buoy.sh /usr/bin
21-
ADD files/guide/refresh.sh /usr/bin
2221
ADD files/bin/buoy /usr/bin
2322
COPY files/guide/entry.sh /entry.sh
2423
RUN chmod 755 /usr/bin/watcher.sh /entry.sh /usr/bin/cleanup.sh \
25-
/usr/bin/buoy /usr/bin/buoy.sh /usr/bin/refresh.sh
24+
/usr/bin/buoy /usr/bin/buoy.sh
2625
RUN /usr/bin/crontab /usr/docker/crontab.txt
2726

2827
CMD ["/entry.sh"]

aws/dockerfiles/files/guide/crontab.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,3 @@
22
*/1 * * * * /usr/bin/watcher.sh >> /var/log/docker/watcher.log
33
*/5 * * * * /usr/bin/cleanup.sh >> /var/log/docker/cleanup.log
44
24 * * * * /usr/bin/buoy.sh >> /var/log/docker/buoy.log
5-
42 * * * * /usr/bin/refresh.sh >> /var/log/docker/refresh.log

aws/dockerfiles/files/guide/refresh.sh

Lines changed: 0 additions & 39 deletions
This file was deleted.

aws/dockerfiles/files/guide/watcher.sh

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,6 @@ if [ "$NODE_TYPE" == "manager" ] ; then
8383

8484
MANAGER=$(aws dynamodb get-item --region $REGION --table-name $DYNAMODB_TABLE --key '{"node_type":{"S": "primary_manager"}}')
8585
export CURRENT_MANAGER_IP=$(echo $MANAGER | jq -r '.Item.ip.S')
86-
export MANAGER_TOKEN=$(echo $MANAGER | jq -r '.Item.manager_token.S')
87-
export WORKER_TOKEN=$(echo $MANAGER | jq -r '.Item.worker_token.S')
88-
echo "MANAGER_TOKEN=$MANAGER_TOKEN"
89-
echo "WORKER_TOKEN=$WORKER_TOKEN"
9086

9187
echo "Current manager IP = $CURRENT_MANAGER_IP ; my IP = $MYIP"
9288

@@ -154,7 +150,7 @@ if [ "$NODE_TYPE" == "manager" ] ; then
154150
aws dynamodb put-item \
155151
--table-name $DYNAMODB_TABLE \
156152
--region $REGION \
157-
--item '{"node_type":{"S": "primary_manager"},"ip": {"S":"'"$NEW_MANAGER_IP"'"},"manager_token": {"S":"'"$MANAGER_TOKEN"'"},"worker_token": {"S":"'"$WORKER_TOKEN"'"}}' \
153+
--item '{"node_type":{"S": "primary_manager"},"ip": {"S":"'"$NEW_MANAGER_IP"'"}}' \
158154
--return-consumed-capacity TOTAL
159155
fi
160156
fi

aws/dockerfiles/files/init/entry.sh

Lines changed: 49 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -40,36 +40,68 @@ get_primary_manager_ip()
4040
# query dynamodb and get the Ip for the primary manager.
4141
MANAGER=$(aws dynamodb get-item --region $REGION --table-name $DYNAMODB_TABLE --key '{"node_type":{"S": "primary_manager"}}')
4242
export MANAGER_IP=$(echo $MANAGER | jq -r '.Item.ip.S')
43-
export MANAGER_TOKEN=$(echo $MANAGER | jq -r '.Item.manager_token.S')
44-
export WORKER_TOKEN=$(echo $MANAGER | jq -r '.Item.worker_token.S')
45-
echo "MANAGER_TOKEN=$MANAGER_TOKEN"
46-
echo "WORKER_TOKEN=$WORKER_TOKEN"
43+
echo "MANAGER_IP=$MANAGER_IP"
4744
}
4845

49-
get_tokens()
46+
get_manager_token()
5047
{
51-
export MANAGER_TOKEN=$(docker swarm join-token manager -q)
52-
export WORKER_TOKEN=$(docker swarm join-token worker -q)
53-
echo "MANAGER_TOKEN=$MANAGER_TOKEN"
54-
echo "WORKER_TOKEN=$WORKER_TOKEN"
48+
if [ -n "$MANAGER_IP" ]; then
49+
export MANAGER_TOKEN=$(wget -qO- http://$MANAGER_IP:9024/token/manager/)
50+
echo "MANAGER_TOKEN=$MANAGER_TOKEN"
51+
else
52+
echo "MANAGER_TOKEN can't be found yet. MANAGER_IP isn't set yet."
53+
fi
54+
}
55+
56+
get_worker_token()
57+
{
58+
if [ -n "$MANAGER_IP" ]; then
59+
export WORKER_TOKEN=$(wget -qO- http://$MANAGER_IP:9024/token/worker/)
60+
echo "WORKER_TOKEN=$WORKER_TOKEN"
61+
else
62+
echo "WORKER_TOKEN can't be found yet. MANAGER_IP isn't set yet."
63+
fi
5564
}
5665

57-
confirm_primary_ready()
66+
confirm_manager_ready()
5867
{
5968
n=0
6069
until [ $n -ge 5 ]
6170
do
6271
get_primary_manager_ip
6372
echo "PRIMARY_MANAGER_IP=$MANAGER_IP"
73+
get_manager_token
6474
# if Manager IP or manager_token is empty or manager_token is null, not ready yet.
6575
# token would be null for a short time between swarm init, and the time the
6676
# token is added to dynamodb
6777
if [ -z "$MANAGER_IP" ] || [ -z "$MANAGER_TOKEN" ] || [ "$MANAGER_TOKEN" == "null" ]; then
68-
echo "Primary manager Not ready yet, sleep for 60 seconds."
78+
echo "Manager: Primary manager Not ready yet, sleep for 60 seconds."
6979
sleep 60
7080
n=$[$n+1]
7181
else
72-
echo "Primary manager is ready."
82+
echo "Manager: Primary manager is ready."
83+
break
84+
fi
85+
done
86+
}
87+
88+
confirm_node_ready()
89+
{
90+
n=0
91+
until [ $n -ge 5 ]
92+
do
93+
get_primary_manager_ip
94+
echo "PRIMARY_MANAGER_IP=$MANAGER_IP"
95+
get_worker_token
96+
# if Manager IP or manager_token is empty or manager_token is null, not ready yet.
97+
# token would be null for a short time between swarm init, and the time the
98+
# token is added to dynamodb
99+
if [ -z "$MANAGER_IP" ] || [ -z "$WORKER_TOKEN" ] || [ "$WORKER_TOKEN" == "null" ]; then
100+
echo "Worker: Primary manager Not ready yet, sleep for 60 seconds."
101+
sleep 60
102+
n=$[$n+1]
103+
else
104+
echo "Worker: Primary manager is ready."
73105
break
74106
fi
75107
done
@@ -79,7 +111,7 @@ join_as_secondary_manager()
79111
{
80112
echo " Secondary Manager"
81113
if [ -z "$MANAGER_IP" ] || [ -z "$MANAGER_TOKEN" ] || [ "$MANAGER_TOKEN" == "null" ]; then
82-
confirm_primary_ready
114+
confirm_manager_ready
83115
fi
84116
echo " MANAGER_IP=$MANAGER_IP"
85117
echo " MANAGER_TOKEN=$MANAGER_TOKEN"
@@ -146,17 +178,9 @@ setup_manager()
146178
# we are the primary, so init the cluster
147179
docker swarm init --listen-addr $PRIVATE_IP:2377 --advertise-addr $PRIVATE_IP:2377
148180
# we can now get the tokens.
149-
get_tokens
150181
get_swarm_id
151182
get_node_id
152183

153-
# update dynamodb with the tokens
154-
aws dynamodb put-item \
155-
--table-name $DYNAMODB_TABLE \
156-
--region $REGION \
157-
--item '{"node_type":{"S": "primary_manager"},"ip": {"S":"'"$PRIVATE_IP"'"},"manager_token": {"S":"'"$MANAGER_TOKEN"'"},"worker_token": {"S":"'"$WORKER_TOKEN"'"}}' \
158-
--return-consumed-capacity TOTAL
159-
160184
echo " Primary Manager init complete"
161185
# send identify message
162186
buoy -event=identify -swarm_id=$SWARM_ID -flavor=aws -node_id=$NODE_ID
@@ -180,8 +204,8 @@ setup_node()
180204
{
181205
echo " Setup Node"
182206
# setup the node, by joining the swarm.
183-
if [ -z "$MANAGER_IP" ] || [ -z "$WORKER_TOKEN" ] || [ "$MANAGER_TOKEN" == "null" ]; then
184-
confirm_primary_ready
207+
if [ -z "$MANAGER_IP" ] || [ -z "$WORKER_TOKEN" ] || [ "$WORKER_TOKEN" == "null" ]; then
208+
confirm_node_ready
185209
fi
186210
echo " MANAGER_IP=$MANAGER_IP"
187211
# try an connect to the swarm manager.
@@ -222,9 +246,11 @@ get_primary_manager_ip
222246
# if it is a manager, setup as manager, if not, setup as worker node.
223247
if [ "$NODE_TYPE" == "manager" ] ; then
224248
echo " It's a Manager, run setup"
249+
get_manager_token
225250
setup_manager
226251
else
227252
echo " It's a worker Node, run setup"
253+
get_worker_token
228254
setup_node
229255
fi
230256

0 commit comments

Comments
 (0)