当使用Ansible Playbook远程管理主机时,有时会遇到“Unreachable host”的错误消息,这通常是由于网络连接故障或主机配置不正确造成的。当这种错误发生时,Playbook将会继续阻塞,并尝试再次连接主机,直到达到最大重试次数。
要解决这个问题,可以在Playbook的hosts选项中添加连接超时设置,将超时时间设置为较短的时间,如10秒。这样,如果主机十秒钟内未响应请求,Ansible将会放弃连接,以避免继续阻塞。
以下是一个示例Playbook,其中包含ConnectionTimeout选项:
- name: Manage web servers
hosts: webservers
connection: ssh
gather_facts: yes
become: yes
become_method: sudo
become_user: root
vars:
ansible_ssh_common_args: "-o StrictHostKeyChecking=no"
ansible_user: webadmin
ansible_password: "{{ vault_ansible_password }}"
tasks:
- name: Ping web server
ping:
vars:
ansible_connection_timeout: 10
在这个示例中,将所有的web服务器添加到hosts选项中,在Task的vars下设置了ansible_connection_timeout为10秒。如果在10秒内无法连接到web服务器,则Ansible将会放弃连接并继续执行Playbook。