我得到Ansible一个奇怪的错误。首先,第一个作用,工作正常,但Ansible试图何时执行一个Seconde系列失败,因为SSH的错误。
环境:
其中执行命令Ansible:
ansible-playbook -vvvv -i inventory/dev playbook_update_system.yml --limit "db[0]"
剧本:
- name: "HUB Playbook | Updating system packages on {{ ansible_hostname }}"
hosts: release_first_half
roles:
- upgrade_system_package
- reboot_server
作用:upgrade_system_package:
- name: "upgrading CentOS system packages on {{ ansible_hostname }}"
shell: sudo puppet apply -e 'exec{"upgrade-package":command => "/usr/bin/yum clean all; /usr/bin/yum -y update;"}'
when: ansible_distribution == 'CentOS' and 'cassandra' not in group_names
作用:reboot_server:
- name: "reboot CentOS [{{ ansible_hostname }}] server"
shell: sudo puppet apply -e 'exec{"reboot-os":command => "/usr/sbin/reboot"}'
when: ansible_distribution == 'CentOS' and 'cassandra' not in group_names
当前的行为:
通过Ansible返回的错误信息:
致命:[DB1]:UNREACHABLE! => { “改变”:假, “msg” 中:“未能通过ssh连接到主机:OpenSSH_6.6.1,OpenSSL的1.0.1e-FIPS 2013年2月11日\ r \ ndebug1:读取配置数据/ USR / newtprod /。 SSH /配置\ r \ ndebug1:读取配置数据的/ etc / SSH / ssh_config中\ r \ ndebug1:在/ etc / SSH / ssh_config中管线56:应用选项* \ r \ ndebug1:自动MUX:试图现有主\ r \ ndebug2:FD 3设置O_NONBLOCK \ r \ ndebug2:mux_client_hello_exchange:主版本4 \ r \ ndebug3:mux_client_forwards:请求forwardings:0本地,0远程\ r \ ndebug3:mux_client_request_session:进入\ r \ ndebug3:mux_client_request_alive:进入\ r \ ndebug3:mux_client_request_alive:进行PID = 64994 \ r \ ndebug3:mux_client_request_session:会话请求发送\ r \ ndebug1:mux_client_request_session:主会话ID:2 \ r \ ndebug3:mux_client_read_packet:读头失败:中断的管道\ r \ ndebug2:控制主意外终止\ r \ nShared到DB1连接关闭\ r \ n”, “可达”:真正}
我不明白,因为以前的角色已在此节点上成功执行。此外,我们有很多这是使用相同的库存文件剧本和他们工作得很好。我尝试另一个节点太多,但同样的结果上。
这是一个简单而漂亮的著名问题:关机过程中导致SSH守护进程退出,这打破当前的SSH会话(你得到的“断管”的错误)。服务器重新启动正常,但Ansible流被中断。
您需要将延迟添加到您的shell
命令,并与async
选项来运行它,这样Ansible的SSH会话能够完成它被杀害之前。
shell: sleep 5; sudo puppet apply -e 'exec{"reboot-os":command => "/usr/sbin/reboot"}'
async: 0
poll: 0