我想使用 Ansible 升级远程服务器(基于 BSD unix)的软件。升级结束时,系统会自动重启(此重启不是由 Ansible 发起的)。我想确保 ansible 会等待服务器恢复,然后继续执行其他任务。脚本在升级时运行良好,但在重启时失败(抱怨 ssh 共享连接失败)。
脚本1:
- 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 }} "
知道我这里遗漏了什么吗?谢谢...
答案1
因此,在重启期间,通常会失败。您可以使用这样的元任务来忽略失败
- meta: clear_host_errors
之后您可以使用 waitfor,然后继续任何任务。
- name: Wait for system to become reachable
wait_for_connection:
timeout: 300