我在Mac机器上。
$ which ansible
/Library/Frameworks/Python.framework/Versions/3.5/bin/ansible
或者我猜,ansible
可以位于通用位置:/usr/bin/ansible
(例如:在CentOS / Ubuntu上)。
$ ansible --version
ansible 2.2.0.0
从我的其他vagrant / Ubuntu框中运行以下playbook工作正常。
Playbook文件如下:
- hosts: all
become: true
gather_facts: true
roles:
- a_role_which_just_say_hello_world_debug_msg
从我的本地计算机,我可以成功ssh
到目标服务器/以下服务器(没有任何密码,因为我已经使用ssh-add
添加了.pem密钥文件),这是失败的Ansible剧本中的Ansible剧本[Setup]
(收集事实步骤)。
在Mac机器上,我有时会收到此错误(不是每次都有)。错误:Failed to connect to the host via ssh: Connection timed out during banner exchange
。 PS:这个问题并非一直存在。
$ ansible-playbook -i inventory -l tag_cluster_mycluster myplabook.yml
PLAY [all] *********************************************************************
TASK [setup] *******************************************************************
ok: [myclusterSomeServer01_i_07f318688f6339971]
fatal: [myclusterSomeServer02_i_03df6f1f988e665d9]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Connection timed out during banner exchange\r\n", "unreachable": true}
好的,在15个服务器(我在mycluster集群中)中尝试了几次相同的行为,[SETUP]
设置在收集事实设置期间失败并且下次它正常工作。
重试的: $ ansible-playbook -i inventory -l tag_cluster_mycluster myplabook.yml
PLAY [all] *********************************************************************
TASK [setup] *******************************************************************
ok: [myclusterSomeServer01_i_07f318688f6339971]
ok: [myclusterSomeServer02_i_03df6f1f988e665d9]
ok: [myclusterSomeServer03_i_057dfr56u88e665d9]
...
.....more...this time it worked for all servers.
如上所述,这次上述步骤正常。在某些任务/操作(我正在尝试使用Ansible yum
模块安装某些内容时,会发生同样的问题(SSH连接超时)。如果我再试一次,它对上次失败的服务器工作正常但是对于上次成功的另一台服务器来说可能会失败。因此,行为是随机的。
我的/etc/ansible/ansible.cfg文件有:
[ssh_connection]
scp_if_ssh = True
答案 0 :(得分:2)
将以下timeout
设置添加到/etc/ansible/ansible.cfg配置文件时,我将其增加到25.当它是10或15时,由于连接超时,我仍然看到某些服务器中的错误横幅问题。
[defaults]
timeout = 25
[ssh_connection]
scp_if_ssh = True
除了上述内容之外,我不得不使用serial: N
或serial: N%
(其中N是一个数字)一次在N个数字或百分比的服务器上运行我的Playbook,然后它运行正常。
即
- hosts: all
become: true
gather_facts: true
serial: 2
#serial: "10%"
#serial: "{{ serialNumber }}"
#serial: "{{ serialNumber }}%"
vars:
- serialNumber: 5
roles:
- a_role_which_just_say_hello_world_debug_msg