ansible 重启 2.1.1.0 失败
ansible reboot 2.1.1.0 fails
我一直在尝试创建一个非常简单的 Ansible 剧本,它将重启服务器并等待它恢复。
我过去在 Ansible 1.9 上有过一个有效的,但我最近升级到 2.1.1.0 但失败了。
我正在重启的主机名为 idm,IP 为 192.168.200.23。
剧本正在从我的主机 192.168.200.1 运行 使用命令
$ ansible-playbook reboot.yml -vvvv
这是我正在使用的剧本
---
- hosts: idm
tasks:
- name: Restart server
become: yes
shell: sleep 2 && /sbin/shutdown -r now "Ansible system package upgraded"
- name: waiting 60 secs for server to come back
local_action: wait_for host=192.168.200.23 port=22 delay=60 connect_timeout=200
become: false
它可以很好地重启机器,但几乎立即失败
<192.168.200.23> ESTABLISH SSH CONNECTION FOR USER: root
<192.168.200.23> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/myork/.ansible/cp/ansible-ssh-%h-%p-%r -tt 192.168.200.23 '/bin/sh -c '"'"'LANG=en_GB.UTF-8 LC_ALL=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1472242630.58-176546106960362/command; rm -rf "/root/.ansible/tmp/ansible-tmp-1472242630.58-176546106960362/" > /dev/null 2>&1 && sleep 0'"'"''
fatal: [idm]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true}
知道我错过了什么吗?
谢谢!
我用async
即发即忘模式重启服务器:
- name: Restart server
become: yes
shell: sleep 2 && /sbin/shutdown -r now "Ansible system package upgraded"
async: 1
poll: 0
Konstantin 的以下代码运行完美。
- name: Restart server
become: yes
shell: sleep 2 && /sbin/shutdown -r now "Ansible system package upgraded"
async: 1
poll: 0
- name: waiting 60 secs for server to come back
local_action: wait_for host=192.168.200.23 port=22 delay=20 connect_timeout=200
become: false
delegate_to: 127.0.0.1
更新@Konstantin Suvorov 的评论。
这是避免硬 IP 的更好解决方案
- name: Restart server
shell: /sbin/shutdown -r now "Ansible system package upgraded"
async: 1
poll: 0
- set_fact: wait_host="{{ ansible_host }}"
- name: Wait for server to come back
local_action: wait_for host={{wait_host}} delay=20 port=22 state=started
become: false
埃里克
我一直在尝试创建一个非常简单的 Ansible 剧本,它将重启服务器并等待它恢复。
我过去在 Ansible 1.9 上有过一个有效的,但我最近升级到 2.1.1.0 但失败了。
我正在重启的主机名为 idm,IP 为 192.168.200.23。
剧本正在从我的主机 192.168.200.1 运行 使用命令
$ ansible-playbook reboot.yml -vvvv
这是我正在使用的剧本
---
- hosts: idm
tasks:
- name: Restart server
become: yes
shell: sleep 2 && /sbin/shutdown -r now "Ansible system package upgraded"
- name: waiting 60 secs for server to come back
local_action: wait_for host=192.168.200.23 port=22 delay=60 connect_timeout=200
become: false
它可以很好地重启机器,但几乎立即失败
<192.168.200.23> ESTABLISH SSH CONNECTION FOR USER: root
<192.168.200.23> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/myork/.ansible/cp/ansible-ssh-%h-%p-%r -tt 192.168.200.23 '/bin/sh -c '"'"'LANG=en_GB.UTF-8 LC_ALL=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1472242630.58-176546106960362/command; rm -rf "/root/.ansible/tmp/ansible-tmp-1472242630.58-176546106960362/" > /dev/null 2>&1 && sleep 0'"'"''
fatal: [idm]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true}
知道我错过了什么吗?
谢谢!
我用async
即发即忘模式重启服务器:
- name: Restart server
become: yes
shell: sleep 2 && /sbin/shutdown -r now "Ansible system package upgraded"
async: 1
poll: 0
Konstantin 的以下代码运行完美。
- name: Restart server
become: yes
shell: sleep 2 && /sbin/shutdown -r now "Ansible system package upgraded"
async: 1
poll: 0
- name: waiting 60 secs for server to come back
local_action: wait_for host=192.168.200.23 port=22 delay=20 connect_timeout=200
become: false
delegate_to: 127.0.0.1
更新@Konstantin Suvorov 的评论。
这是避免硬 IP 的更好解决方案
- name: Restart server
shell: /sbin/shutdown -r now "Ansible system package upgraded"
async: 1
poll: 0
- set_fact: wait_host="{{ ansible_host }}"
- name: Wait for server to come back
local_action: wait_for host={{wait_host}} delay=20 port=22 state=started
become: false
埃里克