首页 > 解决方案 > 获得 ansible 等待 ssh 连接

问题描述

你如何让 ansible 等待或重试 ssh 连接?我有一个 ansible tsk 可以运行govc以将 vm 上传到 vcenter 但之后我 ssh 进入机器以运行如下命令:

  hosts: vcenter
  gather_facts: false
  tasks:
    - name: Download GOVC
      get_url:
        url: https://github.com/vmware/govmomi/releases/download/v0.20.0/govc_linux_amd64.gz
        dest: /home/gkeadmin/govc_linux_amd64.gz

但是在我得到这个之后马上做:fatal: [139.178.66.91]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: connect to host 1.2.3.4 port 22: Operation timed out", "unreachable": true}

我用命令再次运行它--retry,然后它继续。似乎只需要某个时间才能通过 ssh 连接...我如何等待 ssh 连接在 ansible 中建立?

标签: ansible

解决方案


例如,您可以在剧本顶部添加一个部分以等待它

---
- name: wait for ssh
  tasks:
  - wait_for:
      port: 22
      host: '{{ inventory_hostname }}'
    delegate_to: localhost
- name: my playbook
  hosts: vcenter
  gather_facts: false
  tasks:
   - name: Download GOVC
  [ ... etc ... ]

https://docs.ansible.com/ansible/latest/modules/wait_for_module.html#examples


推荐阅读