ANSIBLE установить теги для каждого элемента в цикле with_items

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

---
- name: Build or Check environment
  hosts: localhost
  connection: local
  become: yes
  vars_files:
    - ../vars/kafka-east.yml

  tasks:

    # name: launch kafka-east-1 ec2 instance
    - ec2:
       image: "{{ ami_id }}"
       key_name: "{{ key_name }}"
       instance_type: "{{ instance_type }}"
       instance_profile_name: "{{ instance_profile_name }}"
       region: us-east-1
       network_interfaces: "{{ item.eni }}"
       with_items:
          - {eni: 'kafka_east_1', tag: 'kafka_east_1'}
          - {eni: 'kafka_east_2', tag: 'kafka_east_2'}
       volumes:
       - device_name: /dev/sda1
         volume_size: "{{ ebs_size }}"
         device_type: "{{ ebs_type }}"
         delete_on_termination: true
       user_data: "{{ lookup('file', '../group_vars/kafka-east/user_data') }}"
       state: present

я получаю сообщения об ошибках, но просто публикую, чтобы показать, чего я пытаюсь достичь. Кто-нибудь знает, как этого добиться? и установить теги для каждого элемента в with_items и выполнить цикл

, чтобы я мог запустить playbook и настроить таргетинг на конкретный тег, например этот

ansible-playbook launch_ec2.yml --extra-vars "items_tags=kafka_east_1"

ИЛИ

ansible-playbook launch_ec2.yml --tags "kafka_east_1"

, в зависимости от того, какой способ правильный.

Спасибо!

0
задан 22 July 2017 в 22:18
1 ответ

Во-первых: правильный синтаксис для цикла with_items :

- name: task name
  module:
    parameter1: value1
    parameter2: "{{ item }}"
  with_items:
    - item1
    - item2

Так что это неправильно, и мне интересно, почему Ansible не выдал ошибку.

Во-вторых: Вы смешиваете теги в AWS с тегами в Ansible . Теги в AWS используются для тегирования ресурсов в AWS, и модули Ansible AWS обычно предоставляют это через параметры. Но это отличается от тегов в Ansible . Они используются для маркировки задач в playbook, чтобы иметь возможность ограничить задачи, выполняемые ansible-playbook , подмножеством задач в play.

пометить задачу в Ansible следующим образом:

- name: task name
  module:
    parameter1: value1
  tags:
    - tag1
    - tag2

Вы могли бы ограничить задачи, выполняемые ansible-playbook следующим образом:

ansible-playbook --tags=tag1 play.yml
0
ответ дан 5 December 2019 в 07:40

Теги

Похожие вопросы