#docker #ansible
#docker #ansible
Вопрос:
В моей задаче Ansible я перезапускаю docker:
- name: restarting docker on all the nodes
command: systemctl restart docker
become: yes
После этого как я могу проверить и дождаться, пока docker не будет запущен и запущен, а затем перейти к следующим задачам?
Комментарии:
1. Используйте
service
модуль, а не команду оболочки.2. Спасибо за предложение, но с помощью service module помогает ли ждать, пока docker будет запущен и запущен?
Ответ №1:
Используя сервисы, на самом деле это проще. Это должно сработать, только что попробованное
- name: wait for docker service
service:
name: docker
state: started
register: docker_service
until: docker_service.status.ActiveState == "active"
retries: 10
delay: 20
Комментарии:
1. Последняя версия ansible и docker возвращает: {«msg»: «Условная проверка ‘docker_service.status. Сбой ActiveState == «активный». Ошибка была: ошибка при оценке условного (docker_service.status. ActiveState == «активный «): ‘dict object’ не имеет атрибута ‘status'»}
Ответ №2:
Это сработало для меня:
- name: Wait for service 'docker' to be running
service_facts:
register: sfax
until: "sfax.ansible_facts.services.docker.state == 'running'"
retries: 10
delay: 5
Ответ №3:
Вы можете попробовать с
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/service_facts_module.html amp;
Что-то вроде этого:
- name: Wait for service 'docker' to be running
service_facts:
until: "(ansible_facts.services | selectattr('name', 'docker')).state == 'running'"
retries: 10
delay: 5
Комментарии:
1. Я попытался использовать вышеуказанную задачу, но получил эту ошибку:
The conditional check '(ansible_facts.services | selectattr('name', 'docker')).state == 'running''' failed. The error was: template error while templating string: unexpected char u"'" at 80. String: {% if (ansible_facts.services | selectattr('name', 'docker')).state == 'running'' %} True {% else %} False {% endif %}
2. Да, в
until:
строке была опечатка.''
В конце должно быть просто'
. Я это исправил.3. Я попробовал обновленный, но он терпит неудачу с
The conditional check '(ansible_facts.services | selectattr('name', 'docker')).state == 'running'' failed. The error was: error while evaluating conditional ((ansible_facts.services | selectattr('name', 'docker')).state == 'running'): 'generator object' has no attribute 'state'