amazon.aws.aws_ec2 инвентаризация – источник EC2 инвентаризации
Примечание
Этот плагин инвентаризации входит в состав коллекции amazon.aws (версия 8.2.1).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить установку, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install amazon.aws. Для использования этого плагина инвентаризации необходимы дополнительные требования. Подробности см. в разделе Требования.
Чтобы использовать его в плейбуке, укажите: amazon.aws.aws_ec2.
Обзор
- Получение хостов инвентаризации из Amazon Web Services EC2.
- Файл инвентаризации представляет собой конфигурационный файл YAML и должен заканчиваться
aws_ec2.{yml|yaml}. Пример:my_inventory.aws_ec2.yml.
Требования
Ниже перечислены требования, необходимые на локальном контроллере узла, который выполняет эту инвентаризацию.
- python >= 3.6
- boto3 >= 1.26.0
- botocore >= 1.29.0
Параметры
Параметр | Комментарии |
|---|---|
access_key aliases: aws_access_key_id, aws_access_key, ec2_access_key string | Идентификатор ключа доступа AWS. См. документацию AWS для получения дополнительной информации о токенах доступа https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys. Параметры aws_access_key и profile являются взаимоисключающими. Псевдоним aws_access_key_id был добавлен в релизе 5.1.0 для согласованности с SDK AWS botocore. Псевдоним ec2_access_key устарел и будет удален в релизе после 2024-12-01. Конфигурация:
|
allow_duplicated_hosts boolean добавлено в amazon.aws 5.0.0 | По умолчанию возвращается первое имя, соответствующее записи списка hostnames. Включите этот флаг, если вас не беспокоят дубликаты в инвентаре, и вы хотите получить все совпадающие имена хостов. Варианты:
|
assume_role_arn aliases: iam_role_arn string | ARN роли IAM, которую нужно принять для выполнения поиска. Вы все еще должны предоставить учетные данные AWS с достаточными привилегиями для выполнения действия AssumeRole. |
cache boolean | Переключатель для включения/отключения кэширования исходных данных инвентаря, для работы требуется настроенный плагин кэша. Варианты:
Конфигурация:
|
cache_connection string | Данные подключения кэша или путь, см. документацию плагина кэша для получения подробной информации. Конфигурация:
|
cache_plugin string | Плагин кэша, используемый для исходных данных инвентаря. По умолчанию: Конфигурация:
|
cache_prefix string | Префикс для использования в файлах/таблицах плагина кэша По умолчанию: Конфигурация:
|
cache_timeout integer | Продолжительность кэша в секундах По умолчанию: Конфигурация:
|
compose dictionary | Создать переменные из выражений jinja2. По умолчанию: |
endpoint_url aliases: aws_endpoint_url, endpoint string | URL для подключения вместо стандартных конечных точек AWS. Хотя это можно использовать для подключения к другим совместимым с AWS сервисам, коллекции amazon.aws и community.aws тестируются только с AWS. Псевдоним endpoint устарел и будет удален в релизе после 2024-12-01. Конфигурация: |
exclude_filters список / элементы=словарь добавлено в amazon.aws 1.5.0 | Список фильтров. Любые экземпляры, соответствующие одному из фильтров, исключаются из результата. Фильтры из Доступные фильтры перечислены здесь http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html#options. Каждая запись в этом списке запускает запрос поиска. Поэтому с точки зрения производительности лучше всего держать список как можно короче. По умолчанию: |
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. По умолчанию: |
|
name строка / обязательно |
Имя хоста. |
|
prefix строка |
Префикс, добавляемый к name. Те же варианты, что и у name. Если prefix указан, окончательное имя хоста будет prefix + separator + name. По умолчанию: |
|
separator строка |
Значение для разделения prefix и name, когда указан prefix. По умолчанию: |
hostvars_prefix строка добавлено в amazon.aws 3.1.0 | Префикс для имен переменных хоста, полученных из AWS. |
hostvars_suffix строка добавлено в amazon.aws 3.1.0 | Суффикс для имён переменных хоста, полученных из AWS. |
include_extra_api_calls логическое | Добавить две дополнительные API-вызовы для каждого экземпляра, чтобы включить переменные хоста «постоянные» и «события». Виртуальные машины на спот-инстансах могут быть постоянными, а у экземпляров могут быть связанные события. Параметр include_extra_api_calls был устаревшим и будет удален в версии 6.0.0. Варианты:
|
include_filters список / элементы=словарь добавлено в amazon.aws 1.5.0 | Список фильтров. Любые экземпляры, соответствующие хотя бы одному из фильтров, включаются в результат. Доступные фильтры перечислены здесь http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html#options. Каждая запись в этом списке запускает запрос поиска. Поэтому с точки зрения производительности лучше всего держать список как можно короче. По умолчанию: |
keyed_groups список / элементы=словарь | Добавление хостов в группу на основе значений переменной. По умолчанию: |
|
default_value строка добавлено в ansible-core 2.12 |
Значение по умолчанию, когда значение переменной хоста — пустая строка. Этот параметр взаимоисключающий с |
|
key строка |
Ключ из входного словаря, используемый для генерации групп |
|
parent_group строка |
родительская группа для группировки по ключу |
|
prefix строка |
Имя группы по ключу будет начинаться с этого префикса По умолчанию: |
|
separator строка |
Разделитель, используемый для построения имени группы по ключу По умолчанию: |
|
trailing_separator boolean added in ansible-core 2.12 |
Установите этот параметр в значение Этот параметр несовместим с Варианты:
|
leading_separator boolean added in ansible-core 2.11 | Используется совместно с keyed_groups. По умолчанию, имя группы keyed, у которой нет префикса или разделителя, начинается с символа подчёркивания. Это связано с тем, что по умолчанию префикс — пустая строка, а разделитель — «_». Установите этот параметр в значение False, чтобы опустить ведущий подчёркивание (или другой разделитель), если префикс не задан. Если имя группы получено из отображения, разделитель всё ещё используется для конкатенации элементов. Чтобы вообще не использовать разделитель в имени группы, установите разделитель для группы keyed в пустую строку. Варианты:
|
profile aliases: aws_profile, boto_profile string | Используемый профиль AWS для аутентификации. Дополнительную информацию о профилях см. в документации AWS: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html. Параметр profile несовместим с параметрами aws_access_key, aws_secret_key и security_token. Псевдоним boto_profile устарел и будет удалён в выпуске после 2024-12-01. Настройка:
|
region aliases: aws_region, ec2_region string | Регион AWS для использования. Дополнительную информацию см. в документации Amazon AWS: http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region. Настройка:
|
regions list / elements=string | Список регионов, в которых нужно описать экземпляры EC2. Если пусто (по умолчанию), это будет включать все регионы, за исключением, возможно, ограниченных, таких как us-gov-west-1 и cn-north-1. По умолчанию: |
secret_key aliases: aws_secret_access_key, aws_secret_key, ec2_secret_key string | Секретный ключ доступа AWS. Дополнительную информацию о маркерах доступа см. в документации AWS: https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys. Параметры secret_key и profile несовместимы. Псевдоним aws_secret_access_key был добавлен в релизе 5.1.0 для согласованности с SDK AWS botocore. Псевдоним ec2_secret_key устарел и будет удалён в выпуске после 2024-12-01. Настройка:
|
session_token aliases: aws_session_token, security_token, aws_security_token, access_token string | Токен сессии AWS STS для использования с временными учетными данными. Дополнительную информацию о маркерах доступа см. в документации AWS: https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys. Параметры security_token и profile несовместимы. Псевдонимы aws_session_token и session_token были добавлены в релизе 3.2.0, а параметр был переименован из security_token в session_token в релизе 6.0.0. Псевдонимы security_token, aws_security_token и access_token устарели и будут удалены в выпуске после 2024-12-01. Настройка:
|
strict boolean | Если Поскольку в выражениях можно использовать факты, они могут быть недоступны, и эти ошибки игнорируются по умолчанию. Варианты:
|
strict_permissions boolean | По умолчанию, если возникает ошибка 403 (Запрещено), этот плагин завершится с ошибкой. Вы можете установить это значение в False в файле конфигурации инвентаризации, что позволит игнорировать ошибки 403. Варианты:
|
use_contrib_script_compatible_ec2_tag_keys boolean добавлен в amazon.aws 1.5.0 | Отобразить метки хостов с ключами ec2_tag_TAGNAME, как в старом скрипте инвентаризации ec2.py. Использование этой функции не рекомендуется, и мы рекомендуем мигрировать на новую структуру ``tags``. Варианты:
|
use_contrib_script_compatible_sanitization boolean | По умолчанию этот плагин использует общую очистку имён групп для создания безопасных и удобных имён групп, которые можно использовать в Ansible. Этот параметр позволяет переопределить это действие, чтобы можно было мигрировать со старого скрипта инвентаризации и соответствовать очистке групп, когда параметр скрипта ``replace_dash_in_groups`` установлен в ``False``. Чтобы воспроизвести поведение ``replace_dash_in_groups = True`` для созданных групп, вам необходимо заменить дефисы на подчёркивания с помощью фильтра regex_replace для этих записей. Для этого вы также должны отключить настройку TRANSFORM_INVALID_GROUP_CHARS, иначе основной движок просто применит стандартную очистку поверх неё. Это не значение по умолчанию, так как такие имена нарушают определённые функции, поскольку не все символы являются допустимыми идентификаторами Python, которые в конечном итоге используются как имена групп. Варианты:
|
use_extra_vars boolean добавлен в ansible-core 2.11 | Объединить дополнительные переменные в доступные переменные для композиции (самый высокий приоритет). Варианты:
Конфигурация:
|
use_ssm_inventory boolean добавлен в amazon.aws 6.0.0 | Включает получение дополнительной информации об экземплярах EC2 из сервиса инвентаризации AWS Systems Manager (SSM) в hostvars. Используя данные инвентаризации SSM, параметр use_ssm_inventory предоставляет дополнительные сведения и атрибуты об экземплярах EC2 в вашем инвентаре. Эти данные могут включать информацию об операционной системе, установленных программах, конфигурациях сети и пользовательских атрибутах инвентаризации, определённых в SSM. Варианты:
|
Примечания
Примечание
- Если учетные данные не предоставлены, и у узла управления есть связанный профиль экземпляра IAM, то для аутентификации будет использоваться роль.
- Предупреждение: Для модулей переменные среды и файлы конфигурации считываются из контекста Ansible «хост», а не из контекста «контроллер». Таким образом, файлы могут потребоваться скопировать явно на «хост». Для плагинов поиска и подключения переменные среды и файлы конфигурации считываются из контекста Ansible «контроллер», а не из контекста «хост».
- AWS SDK (boto3), который используется Ansible, также может считывать значения по умолчанию для учетных данных и других настроек, таких как регион, из своих файлов конфигурации в контексте Ansible «хост» (обычно
~/.aws/credentials). Для получения дополнительной информации см. https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html.
Примеры
# 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: amazon.aws.aws_ec2
regions:
- us-east-1
---
# Example using filters, ignoring permission errors, and specifying the hostname precedence
plugin: amazon.aws.aws_ec2
# The values for profile, access key, secret key and token can be hardcoded like:
profile: aws_profile
# or you could use Jinja as:
# profile: "{{ lookup('env', 'AWS_PROFILE') | default('aws_profile', true) }}"
# 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
- name: 'tag:Name=Tag1,Name=Tag2'
- name: 'private-ip-address'
separator: '_'
prefix: 'tag:Name'
- name: 'test_literal' # Using literal values for hostname
separator: '-' # Hostname will be aws-test_literal
prefix: 'aws'
# Returns all the hostnames for a given instance
allow_duplicated_hosts: false
---
# Example using constructed features to create groups and set ansible_host
plugin: amazon.aws.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
---
# Example using include_filters and exclude_filters to compose the inventory.
plugin: amazon.aws.aws_ec2
regions:
- us-east-1
- us-west-1
include_filters:
- tag:Name:
- 'my_second_tag'
- tag:Name:
- 'my_third_tag'
exclude_filters:
- tag:Name:
- 'my_first_tag'
---
# Example using groups to assign the running hosts to a group based on vpc_id
plugin: amazon.aws.aws_ec2
profile: aws_profile
# Populate inventory with instances in these regions
regions:
- us-east-2
filters:
# All instances with their state as `running`
instance-state-name: running
keyed_groups:
- prefix: tag
key: tags
compose:
ansible_host: public_dns_name
groups:
libvpc: vpc_id == 'vpc-####'
---
# Define prefix and suffix for host variables coming from AWS.
plugin: amazon.aws.aws_ec2
regions:
- us-east-1
hostvars_prefix: 'aws_'
hostvars_suffix: '_ec2'
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/amazon/aws/aws_ec2_inventory.html