У меня есть этот 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"
, в зависимости от того, какой способ правильный.
Спасибо!
Во-первых: правильный синтаксис для цикла 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