У меня есть эта книга для создания экземпляров 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"
в зависимости от того, какой способ правильный.
Спасибо!
Во-первых: правильный синтаксис для with_items
цикл:
- name: task name
module:
parameter1: value1
parameter2: "{{ item }}"
with_items:
- item1
- item2
Так что это неправильно, и мне интересно, почему Ansible не выдал ошибку.
Во-вторых: вы путаете tags in AWS
с участием tags in Ansible
. Tags in AWS
используются для тегирования ресурсов в AWS, а модули Ansible AWS обычно предоставляют это с помощью параметров. Но это отличается от tags in Ansible
. Они используются для маркировки задач в playbook, чтобы иметь возможность ограничивать задачи, выполняемые ansible-playbook
к подмножеству задач в игре.
пометить задачу в Ansible следующим образом:
- name: task name
module:
parameter1: value1
tags:
- tag1
- tag2
Вы можете ограничить количество задач, выполняемых ansible-playbook
как это:
ansible-playbook --tags=tag1 play.yml