--- - name: Check node state. register: node_state shell: "docker info --format '{{ '{{' }}.Swarm.LocalNodeState{{ '}}' }}'" ignore_errors: true - name: Add worker to swarm. register: join_cmd shell: > docker swarm join --token {{ hostvars.admin.worker_token }} {{ hostvars.admin.ansible_host }}:2377 # 0 means it was successfully added, 1 means it's already in the swarm. failed_when: join_cmd.rc != 0 changed_when: join_cmd.rc == 0 when: node_state.stdout not in [ 'active', 'locked', 'error' ]