Я обыскал весь Интернет и не нашел ответа на этот вопрос. "как я могу завершить работу экземпляра ec2, используя динамический инвентарь с тегами?" поэтому, если я могу завершить экземпляр или группу экземпляров ec2 с определенным тегом (ами)
модуль ec2 требует, чтобы он передавал идентификатор экземпляра, но для этого нет ничего автоматизированного. ТАК ищет способ настроить таргетинг на определенные теги с помощью динамического инвентаря с доступным
- name: terminate single instance
hosts: all
tasks:
- action: ec2_facts
- name: terminating single instance
local_action:
module: ec2
state: 'absent'
region: us-east-1
instance_ids: "{{ ansible_ec2_instance_id }}"
Я пробовал вышеуказанное с помощью следующей команды
ansible-playbook terminate.yml --tags "tag_Name_web_server"
что означает, что я тоже хочу удалить экземпляры ec2 с помощью Name' tag 'web-server
Прямо сейчас, когда я запускаю это, он просматривает несколько экземпляров ec2, но нацелен только на те, которые имеют указанные теги. Коротко, не работает.
Любая помощь будет оценена
Я столкнулся с той же проблемой, что и ты
На сегодняшний день (если быть точным, Ansible 2.5) можно делать то, что вы хотите, без host_vars с ec2_instance
модуль (это отличается от ec2
модуль)
Например, вы хотите завершить все экземпляры ec2 парой тег-значение: Usage:k8s-ansible
, это задача, которая вам понадобится:
ec2_instance:
state: absent
filters:
tag:Usage: k8s-ansible
--tags
switch не имеет ничего общего с тегами ec2:
-t TAGS, --tags = TAGS запускать только игры и задачи, помеченные этими значениями
Вы должны использовать внешние переменные и шаблон хоста:
- name: Terminate tagged instances
hosts: tag_{{ tag_name }}_{{ tag_value }}
tasks:
- ec2_facts:
- ec2:
state: absent
region: "{{ ansible_ec2_placement_region }}"
instance_ids: "{{ ansible_ec2_instance_id }}"
delegate_to: localhost
исполнение: ansible-playbook -e tag_name=Name -e tag_value=web_server terminate.yml