amazon.aws.aws_ec2 – Источник инвентаризации EC2
Примечание
Этот плагин входит в состав коллекции amazon.aws (версия 1.3.0).
Для его установки используйте: ansible-galaxy collection install amazon.aws
Для использования в книге задач укажите: amazon.aws.aws_ec2
Обзор
- Получение узлов инвентаризации из Amazon Web Services EC2.
- Использует файл конфигурации YAML, который заканчивается
aws_ec2.(yml|yaml).
Требования
Ниже перечислены требования, необходимые на локальном узле контроллера, на котором выполняется этот инвентарь.
- boto3
- botocore
Параметры
| Параметр | Варианты/Значения по умолчанию | Конфигурация | Комментарии |
|---|---|---|---|
| aws_access_key строка | env:EC2_ACCESS_KEY env:AWS_ACCESS_KEY env:AWS_ACCESS_KEY_ID | Ключ доступа AWS для использования. псевдонимы: aws_access_key_id | |
| aws_profile строка | env:AWS_DEFAULT_PROFILE env:AWS_PROFILE | Профиль AWS псевдонимы: boto_profile | |
| aws_secret_key строка | env:EC2_SECRET_KEY env:AWS_SECRET_KEY env:AWS_SECRET_ACCESS_KEY | Секретный ключ AWS, соответствующий ключу доступа. псевдонимы: aws_secret_access_key | |
| aws_security_token строка | env:EC2_SECURITY_TOKEN env:AWS_SESSION_TOKEN env:AWS_SECURITY_TOKEN | Токен безопасности AWS, если используются временные ключи доступа и секретные ключи. | |
| cache логическое |
| записи ini: [inventory] env:ANSIBLE_INVENTORY_CACHE | Включить/выключить кеширование исходных данных инвентаря. Требуется настройка плагина кеша для работы. |
| cache_connection строка | записи ini: [defaults] [inventory] env:ANSIBLE_CACHE_PLUGIN_CONNECTION env:ANSIBLE_INVENTORY_CACHE_CONNECTION | Данные или путь подключения к кешу. Для получения подробной информации ознакомьтесь с документацией плагина кеша. | |
| cache_plugin строка | По умолчанию: "память" | записи ini: [defaults] [inventory] env:ANSIBLE_CACHE_PLUGIN env:ANSIBLE_INVENTORY_CACHE_PLUGIN | Плагин кеша для использования для исходных данных инвентаря. |
| cache_prefix строка | По умолчанию: "ansible_inventory_" | записи ini: [default] [inventory] env:ANSIBLE_CACHE_PLUGIN_PREFIX env:ANSIBLE_INVENTORY_CACHE_PLUGIN_PREFIX | Префикс, используемый для файлов/таблиц плагина кеша |
| cache_timeout целое число | По умолчанию: 3600 | записи ini: [defaults] [inventory] env:ANSIBLE_CACHE_PLUGIN_TIMEOUT env:ANSIBLE_INVENTORY_CACHE_TIMEOUT | Длительность кеша в секундах |
| compose словарь | По умолчанию: {} | Создать переменные из выражений jinja2. | |
| filters словарь | По умолчанию: {} | Словарь пар значений фильтров. Доступные фильтры перечислены здесь http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html#options. | |
| groups словарь | По умолчанию: {} | Добавить хосты в группу на основе условных выражений Jinja2. | |
| hostnames список / элементы=строка | По умолчанию: [] | Список в порядке приоритета для переменных имени хоста. Вы можете использовать опции, указанные в http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html#options. Для использования тегов в качестве имен хостов используйте синтаксис tag:Name=Value для использования имени хоста Name_Value или tag:Name для использования значения тега Name. | |
| iam_role_arn строка | ARN роли IAM для принятия, чтобы выполнить поиск инвентаря. Вы по-прежнему должны предоставить учетные данные AWS с достаточными привилегиями для выполнения действия AssumeRole. | ||
| include_extra_api_calls логическое |
| Добавить две дополнительные API-вызовы для каждого экземпляра, чтобы включить переменные хостов 'persistent' и 'events'. Виртуальные машины могут быть постоянными, а экземпляры могут иметь связанные события. | |
| keyed_groups список / элементы=строка | По умолчанию: [] | Добавить хосты в группу на основе значений переменной. | |
| leading_separator логическое добавлено в 2.11 ansible.builtin |
| Используйте вместе с keyed_groups. По умолчанию, ключевая группа, у которой нет префикса или разделителя, будет иметь имя, начинающееся с подчеркивания. Это связано с тем, что префикс по умолчанию "" и разделитель по умолчанию "_". Установите этот параметр в значение False, чтобы опустить ведущее подчеркивание (или другой разделитель), если префикс не задан. Если имя группы получено из отображения, разделитель по-прежнему используется для конкатенации элементов. Чтобы вообще не использовать разделитель в имени группы, установите разделитель для ключевой группы в пустую строку вместо этого. | |
| plugin строка / требуется |
| Токен, который гарантирует, что это исходный файл для плагина. | |
| regions список / элементы=строка | По умолчанию: [] | Список областей, в которых следует описывать экземпляры EC2. Если пусто (по умолчанию), это будет включать все регионы, за исключением, возможно, ограниченных, таких как us-gov-west-1 и cn-north-1. | |
| strict логическое |
| Если yes сделать некорректные записи ошибкой, в противном случае пропустить и продолжить.Поскольку факты можно использовать в выражениях, они могут быть недоступны, и мы игнорируем эти ошибки по умолчанию. | |
| strict_permissions логическое |
| По умолчанию, если обнаружена ошибка 403 (Запрещено), этот плагин завершится неудачно. Вы можете установить этот параметр в значение False в файле конфигурации инвентаря, что позволит корректно пропустить ошибки 403. | |
| use_contrib_script_compatible_sanitization логическое |
| По умолчанию этот плагин использует общую очистку имени группы для создания безопасных и пригодных для использования имен групп для использования в Ansible. Этот параметр позволяет вам переопределить это, с целью разрешения миграции со старого скрипта инвентаря и соответствует очистке групп, когда параметр скрипта ``replace_dash_in_groups`` установлен в значение ``False``. Чтобы воспроизвести поведение ``replace_dash_in_groups = True`` с составленными группами, вам необходимо заменить дефисы подчеркиваниями с помощью фильтра regex_replace для этих записей. Для этого вы также должны отключить настройку TRANSFORM_INVALID_GROUP_CHARS, иначе основное ядро просто использует стандартную очистку поверх нее. Это не по умолчанию, так как такие имена нарушают определенную функциональность, так как не все символы являются допустимыми идентификаторами Python, которые имена групп в конечном итоге используются как. | |
| use_extra_vars логическое добавлено в 2.11 ansible.builtin |
| записи ini: [inventory_plugins] env:ANSIBLE_INVENTORY_USE_EXTRA_VARS | Объединить дополнительные переменные в доступные переменные для композиции (наивысший приоритет). |
Примечания
Примечание
- Если учетные данные не предоставлены, а у узла управления есть связанный профиль экземпляра IAM, то роль будет использоваться для аутентификации.
Примеры
# Minimal example using environment vars or instance role credentials
# Fetch all hosts in us-east-1, the hostname is the public DNS if it exists, otherwise the private IP address
plugin: aws_ec2
regions:
- us-east-1
# Example using filters, ignoring permission errors, and specifying the hostname precedence
plugin: aws_ec2
boto_profile: aws_profile
# Populate inventory with instances in these regions
regions:
- us-east-1
- us-east-2
filters:
# All instances with their `Environment` tag set to `dev`
tag:Environment: dev
# All dev and QA hosts
tag:Environment:
- dev
- qa
instance.group-id: sg-xxxxxxxx
# Ignores 403 errors rather than failing
strict_permissions: False
# Note: I(hostnames) sets the inventory_hostname. To modify ansible_host without modifying
# inventory_hostname use compose (see example below).
hostnames:
- tag:Name=Tag1,Name=Tag2 # Return specific hosts only
- tag:CustomDNSName
- dns-name
- private-ip-address
# Example using constructed features to create groups and set ansible_host
plugin: aws_ec2
regions:
- us-east-1
- us-west-1
# keyed_groups may be used to create custom groups
strict: False
keyed_groups:
# Add e.g. x86_64 hosts to an arch_x86_64 group
- prefix: arch
key: 'architecture'
# Add hosts to tag_Name_Value groups for each Name/Value tag pair
- prefix: tag
key: tags
# Add hosts to e.g. instance_type_z3_tiny
- prefix: instance_type
key: instance_type
# Create security_groups_sg_abcd1234 group for each SG
- key: 'security_groups|json_query("[].group_id")'
prefix: 'security_groups'
# Create a group for each value of the Application tag
- key: tags.Application
separator: ''
# Create a group per region e.g. aws_region_us_east_2
- key: placement.region
prefix: aws_region
# Create a group (or groups) based on the value of a custom tag "Role" and add them to a metagroup called "project"
- key: tags['Role']
prefix: foo
parent_group: "project"
# Set individual variables with compose
compose:
# Use the private IP address to connect to the host
# (note: this does not modify inventory_hostname, which is set via I(hostnames))
ansible_host: private_ip_address
Авторы
- Слоан Хертел (@s-hertel)
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/amazon/aws/aws_ec2_inventory.html