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