无法让 Ansible 等待服务器重新启动并继续运行剧本

mas*_*ber 5 ansible

我正在创建一个剧本来安装软件,我需要在剧本中间重新启动服务器。

我需要我的 Ansible 主机等到服务器恢复并执行我的其余任务,但这并没有发生。

这些是我与重启和等待相关的 Ansible 任务:

...
- name: restart server
  shell: shutdown -r now
  async: 1
  poll: 0
  become: yes
  become_method: sudo
  ignore_errors: true
- name: waiting for server to come back after reboot
  local_action: wait_for host={{ ansible_ssh_host }} state=started port=22 delay=30 timeout=300 connect_timeout=15
....
Run Code Online (Sandbox Code Playgroud)

这是运行我的剧本的输出:

...

TASK [restart server] **********************************************************
fatal: [X.X.X.X]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true}
    to retry, use: --limit @ansible_pb.retry

PLAY RECAP *********************************************************************
X.X.X.X               : ok=2    changed=0    unreachable=1    failed=0
Run Code Online (Sandbox Code Playgroud)

知道出了什么问题,我该如何解决?

tec*_*raf 9

这是一个众所周知的问题。请参阅重新启动服务器并等待它返回。由于 Ansible 1.9.4 SSH 在继续下一个任务之前失去连接。

您需要sleepshutdown命令前添加延迟 ( ) :

- name: restart server
  shell: sleep 2 && shutdown -r now
  async: 1
  poll: 0
  become: yes
  become_method: sudo
  ignore_errors: true
- name: waiting for server to come back after reboot
  wait_for_connection:
....
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

12844 次

最近记录:

7 年 前