Я хочу использовать Ansible для обновления программного обеспечения удаленного сервера (на основе BSD unix). В конце обновления система автоматически перезагружается (эта перезагрузка не инициируется Ansible). Я хочу убедиться, что ansible будет ждать, пока сервер вернется, а затем продолжит выполнение других задач. Скрипт отлично работает для обновления, но не работает при перезагрузке (жаловался на сбой общего соединения ssh).
script1:
- hosts: remote_server
remote_user: ansible
become: yes
become_method: sudo
connection: ssh
gather_facts: yes
vars:
ansible_ssh_host: 192.168.1.131
ansible_ssh_port: 22
tasks:
- name: Install SW version xxx
....
....
- name: waiting for server to reboot
wait_for: host="{{ ansible_ssh_host | default(inventory_hostname) }}" port={{ ansible_ssh_port | default(22) }} search_regex=OpenSSH delay=60 timeout=300
connection: local
sudo: false
- shell: uptime
register: output
- debug: msg=" {{ output.stdout }} "
Любая идея, что мне здесь не хватает? Спасибо...
Так что во время этой перезагрузки обычно происходит сбой. Вы используете такую метазадачу, чтобы игнорировать сбой
- meta: clear_host_errors
После этого вы можете использовать waitfor, а затем продолжить любые задачи.
- name: Wait for system to become reachable
wait_for_connection:
timeout: 300