Ansible Digital Ocean APIv2 太快了吗?

Ansible Digital Ocean APIv2 太快了吗?

我在这里使用一些新代码配置新的 droplet 时得到了不同的结果。似乎 Ansible 可能没有正确等待服务器获取 IP 地址。我曾多次尝试修复它,但没有成功,并且输入一些任意的等待时间不会扩展。有人能看看我是否在代码中犯了导致这种奇怪行为的错误吗?现在,剧本旨在从 PROVISION 组中获取主机名,启动虚拟机,回复它们的 IP 地址,然后将新地址附加到 DROPLETS 组。通常只有部分 IP 地址会进入 DROPLETS 组。

这是主机文件:

[DIGITALOCEAN]
localhost ansible_connection=local

[PROVISION]
TEST1
TEST2
TEST3

[DROPLETS]
TEST1 ansible_ssh_host=x.x.x.x
TEST2 ansible_ssh_host=y.y.y.y
See, this one didn't make it in... Not always this one... and they get unordered sometimes.

以下是剧本:

---
- hosts: PROVISION
  gather_facts: no

  vars:
    do_token: TOKEN

  tasks:
  - name: Create new droplet
    digital_ocean: >
      state=present
      command=droplet
      name={{ inventory_hostname }}
      unique_name=yes
      size_id=512mb
      region_id=nyc3
      image_id=ubuntu-18-04-x64
      ssh_key_ids=KEY
      api_token={{ do_token }}
      wait=yes
      wait_timeout=500
    register: hostname
    delegate_to: localhost

  - name: Add host to Ansible config
    lineinfile:
      dest: "/etc/ansible/hosts"
      insertafter: '^\[DROPLETS\]'
      state: present
      line: "{{ hostname.droplet.name }} ansible_ssh_host={{ hostname.droplet.ip_address }}"
    delegate_to: localhost

相关内容