Невозможно получить Ansible playbook для запуска при первом запуске - PullRequest
0 голосов
/ 06 января 2020

У меня проблема с Ansible 2.9, когда я получаю следующую ошибку после создания экземпляра ec2 и до того, как он попытается запустить apt update для этого экземпляра в первый раз, используя созданную мной пьесу:

[WARNING]: Could not match supplied host pattern, ignoring: tag_type_master

Тем не менее, когда я запускаю его во второй раз, он находит хост, соответствующий этому тегу, и продолжает выполнение обновления apt и остальных задач playbook.

Вот команда I Я бегу:

ansible-playbook deploy.yaml --private-key ../../../../../Downloads/XXXXXXX.pem --inventory=inventory_aws_ec2.yaml

Вот мой файл deploy.yaml:

- name: Build out AWS Infrastructure
  hosts: localhost
  connection: local
  gather_facts: False
  roles:
    - role: aws

- name: Setup Master
  hosts: tag_type_master
  remote_user: ubuntu
  become: yes
  roles:
    - role: master

- name: Build Master AMI
  hosts: localhost
  connection: local
  roles:
    - role: master_ami

Вот мой файл inventory_aws_ec2.yaml:

plugin: aws_ec2
regions:
    - us-east-2
keyed_groups:
  - key: tags.type
    prefix: tag_type_
    separator: ""
hostnames:
    - dns-name
compose:
  ansible_host: dns-name
cache: yes
cache_plugin: memory
cache_timeout: 7200
cache_prefix: aws_ec2

А вот мой ansible .cfg file:

[defaults]
host_key_checking = False
fact_caching = memory
cache_timeout = 3600

[inventory_aws_ec2]
enable_plugins = aws_ec2
cache = yes

Есть что-то, чего мне не хватает? Заранее спасибо!

ОБНОВЛЕНИЕ:

Я также могу без проблем выполнить команду ansible-inventory, и она дает ожидаемые результаты:

ansible-inventory -i inventory_aws_ec2.yaml --graph
@all:
  |--@aws_ec2:
  |  |--ec2-XX-XX-XX-XX.us-east-2.compute.amazonaws.com
  |  |--ec2-XX-XX-XX-XX.us-east-2.compute.amazonaws.com
  |  |--ec2-XX-XX-XX-XX.us-east-2.compute.amazonaws.com
  |  |--ec2-XX-XX-XX-XX.us-east-2.compute.amazonaws.com
  |  |--ec2-XX-XX-XX-XX.us-east-2.compute.amazonaws.com
  |  |--ec2-XX-XX-XX-XX.us-east-2.compute.amazonaws.com
  |--@tag_type_master:
  |  |--ec2-XX-XX-XX-XX.us-east-2.compute.amazonaws.com
  |--@ungrouped:

Ответы [ 3 ]

1 голос
/ 08 января 2020

Я понял это. Мне нужно было добавить refresh_inventory шаг:

- name: Refresh inventory to ensure new instances exist in inventory
  meta: refresh_inventory
0 голосов
/ 07 января 2020

Подозревает проблему синхронизации по времени c.

  • Обычно для запуска экземпляра требуется некоторое время.
  • вы можете попробовать добавить задачу sleep / wait_for и убедиться, что экземпляр запущен и запущен, прежде чем выполнять master роль.
    - name: Status
      debug:
        msg: "{{ item }} : Waiting for instances online..."
      with_items: "{{ new_ec2_list }}"

Pls в любом случае поделится результатом

Спасибо

0 голосов
/ 06 января 2020

Я не вижу хостов в файле инвентаризации, который вы предоставили мастеру тегов

должно быть что-то вроде

[master]
127.0.0.1 ansible_connection=local
...