Рубрики
Uncategorized

Anbible AWS EC2 Динамический плагин инвентаризации

Аналимые могут потянуть инвентарирующую информацию из динамических источников различными динамическими плагинами инвентаризации. На… Теги от AWS, Anbible, Devops.

  • Аналимые могут потянуть инвентарирующую информацию из динамических источников различными динамическими плагинами инвентаризации.
  • Одним из них является 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»