SlickNik commented on a change in pull request #278: Fixes #268: Setup fails 
when swarmmanager enabled
URL: https://github.com/apache/fluo-muchos/pull/278#discussion_r320103606
 
 

 ##########
 File path: ansible/docker.yml
 ##########
 @@ -48,5 +48,5 @@
       changed_when: "'active' not in swarm_status.stdout_lines"
     - name: join worker to swarm
       shell: >
-        docker swarm join --token={{ swarm_token }} {{ manager_ip }}:2377
+        docker swarm leave || true && docker swarm join --token={{ 
swarm_token_stdout }} {{ manager_ip }}:2377
 
 Review comment:
   `docker swarm join` doesn't have a `--force` flag, and errors out if the 
node is already part of a swarm (so subsequent runs of the ansible state fail 
since this isn't idempotent). To make this idempotent, we issue a `leave` 
followed by a `join`. However `leave` fails with a non-zero exit code when the 
node isn't already part of a swarm, which fails the execution of the entire 
shell section. The `|| true` here ignores the exit code of `docker swarm leave` 
and continues executing the rest of the command. 
   
   `;` wouldn't work here since it just joins the two commands together, and 
the shell still errors and bails when the first command before the `;` exits 
with a non-zero exit code. Another alternative here would be to explicitly 
disable the shell's exit code checking for the `docker swarm leave` command 
(i.e. something like `set +e; docker swarm leave; set -e; ...`), but I slightly 
prefer the `|| true` variant for the sake of brevity.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to