Я получаю смешанные результаты здесь, предоставляя новые капли с некоторым новым кодом. Похоже, что, возможно, Ansible неправильно ожидает, пока сервер получит IP-адрес. Я предпринял несколько попыток исправить это безуспешно, и произвольное время ожидания не масштабируется. Может ли кто-нибудь увидеть, сделал ли я ошибку в коде, которая вызывает такое странное поведение. Прямо сейчас playbook предназначен для того, чтобы брать имена хостов из группы PROVISION, запускать виртуальные машины, отвечать с их IP-адресами, а затем добавлять новые адреса в группу DROPLETS. Обычно только часть IP-адресов попадает в группу DROPLETS.
Вот файл hosts:
[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