#docker #docker-swarm
#docker #docker-swarm
Вопрос:
У меня возникли проблемы с проверкой, присоединился ли рабочий узел docker swarm к swarm в Ansible.
- name: Check if Worker has already joined
shell: docker node ls
register: swarm_status
ignore_errors: true
- name: Join Swarm
shell: shell: docker swarm join --token {{ hostvars[groups['leader'][0]]['worker_token']['stdout'] }} {{ hostvars[groups['leader'][0]]['ec2_public_ip']['stdout'] }}:2377
when: swarm_status.rc != 0
run_once: true
Это не работает, так как swarm_status
всегда будет отображаться ошибка, поскольку работник не может проверить себя.
Спасибо.
Ответ №1:
Редактировать: вы можете проверить с узла менеджера с помощью docker_node_info. Отладьте файл json, чтобы найти необходимую информацию:
- name: Docker Node Info
docker_node_info:
name: worker
register: worker_status
- name: Debug
debug:
msg: "{{ worker_status }}"
Затем используйте json-запрос для фильтрации результатов с помощью jmespath
- name:
debug:
msg: "{{ worker_status | json_query('nodes[*].Spec.Role')}}"
Вывод:
worker