- Аналимые могут потянуть инвентарирующую информацию из динамических источников различными динамическими плагинами инвентаризации.
- Одним из них является aws_ec2 плагин, отличный способ для управления экземплярами AWS EC2 Linux без необходимости поддерживать стандартный местный инвентарь.
Вот лишь небольшой пример того, как использовать его.
1. Установите AWS_EC2 Anbible Plugin amazon.aws.aws_ec2 – Источник инвентаризации EC2 Примечание: Использует файл конфигурации YAML, который заканчивается AWS_EC2. (YML | YAML)
2. Настраивать ansible.cfg
[defaults] enable_plugins = aws_ec2 host_key_checking = False pipelining = True remote_user = ec2-user private_key_file=/pem/key-pem
3. Создать инвентарь my_aws_ec2.yml
Файл для групповой цели Фильтр здесь есть тег: имя и состояние экземпляра (работает)
--- plugin: aws_ec2 aws_profile: default regions: - us-east-1 filters: tag:Name: - dev-* - share-resource - hotfix instance-state-name : running keyed_groups: - prefix: env key: tags['env'] - prefix: dev key: tags['ssm']
4. Проверьте список и группу хостов
$ ansible-inventory -i my_aws_ec2.yml --list "all": { "children": [ "aws_ec2", "env_dev", "dev_ssm", "ungrouped" ] }, "aws_ec2": { "hosts": [ "ec2-111-111-111-111.us-east-1.compute.amazonaws.com", "ec2-11-111-111-112.us-east-1.compute.amazonaws.com", "ec2-11-111-111-113.us-east-1.compute.amazonaws.com", "ec2-11-111-111-114.us-east-1.compute.amazonaws.com", "ec2-11-111-111-115.us-east-1.compute.amazonaws.com", ] }, "env_dev": { "hosts": [ "ec2-111-111-111-111.us-east-1.compute.amazonaws.com", "ec2-11-111-111-112.us-east-1.compute.amazonaws.com", "ec2-11-111-111-113.us-east-1.compute.amazonaws.com", "ec2-11-111-111-114.us-east-1.compute.amazonaws.com", "ec2-11-111-111-115.us-east-1.compute.amazonaws.com", ] }, "dev_ssm": { "hosts": [ "ec2-111-111-111-111.us-east-1.compute.amazonaws.com" ] }
5. Теперь отправьте задачу к ожидаемой группе Задача здесь состоит в том, чтобы обновить файлы env to env_dev group. Имя файла и значение проанализированы из списка Ansible Host и элементов (Ansible echo в файл)
update_env.yaml.
--- - hosts: all become: yes tasks: - name: Get hostname command: echo {{ ansible_hostname.split('-')[1] }} register: hostname - name: Update env files become: yes become_user: root shell: | echo "AGENT_ID={{ hostname.stdout }}-{{ item }}::" >> "/opt/workdir/{{ item }}.env" with_items: - app - pet - gate - api tags: runcmd register: result - name: Print output debug: var: result
Запустить
$ ansible-playbook update_env.yaml -i my_aws_ec2.yml --limit env_dev -vv
Оригинал: «https://dev.to/vumdao/ansible-aws-ec2-dynamic-inventory-plugin-3bme»