Spec-Zone.ru › Ansible

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
END_OF_DOCUMENT_MARKER

Параметры

Параметр

Комментарии

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.

Конфигурация:

  • Переменная окружения: AWS_ACCESS_KEY_ID
  • Переменная окружения: AWS_ACCESS_KEY
  • Переменная окружения: EC2_ACCESS_KEY

    Удалено в: основном релизе после 2024-12-01

    Почему: EC2 в названии подразумевало, что оно ограничено ресурсами EC2. Однако оно используется для всех подключений.

    Альтернатива: AWS_ACCESS_KEY_ID

allow_duplicated_hosts

boolean

добавлено в amazon.aws 5.0.0

По умолчанию возвращается первое имя, соответствующее записи списка hostnames.

Включите этот флаг, если вас не беспокоят дубликаты в инвентаре, и вы хотите получить все совпадающие имена хостов.

Варианты:

  • false ← (по умолчанию)
  • true

assume_role_arn

aliases: iam_role_arn

string

ARN роли IAM, которую нужно принять для выполнения поиска.

Вы все еще должны предоставить учетные данные AWS с достаточными привилегиями для выполнения действия AssumeRole.

cache

boolean

Переключатель для включения/отключения кэширования исходных данных инвентаря, для работы требуется настроенный плагин кэша.

Варианты:

  • false ← (по умолчанию)
  • true

Конфигурация:

  • Запись INI:

    [inventory]
    cache = false
    
  • Переменная окружения: ANSIBLE_INVENTORY_CACHE

cache_connection

string

Данные подключения кэша или путь, см. документацию плагина кэша для получения подробной информации.

Конфигурация:

  • Записи INI:

    [defaults]
    fact_caching_connection = VALUE
    
    [inventory]
    cache_connection = VALUE
    
  • Переменная окружения: ANSIBLE_CACHE_PLUGIN_CONNECTION
  • Переменная окружения: ANSIBLE_INVENTORY_CACHE_CONNECTION

cache_plugin

string

Плагин кэша, используемый для исходных данных инвентаря.

По умолчанию: "memory"

Конфигурация:

  • Записи INI:

    [defaults]
    fact_caching = memory
    
    [inventory]
    cache_plugin = memory
    
  • Переменная окружения: ANSIBLE_CACHE_PLUGIN
  • Переменная окружения: ANSIBLE_INVENTORY_CACHE_PLUGIN

cache_prefix

string

Префикс для использования в файлах/таблицах плагина кэша

По умолчанию: "ansible_inventory_"

Конфигурация:

  • Записи INI:

    [defaults]
    fact_caching_prefix = ansible_inventory_
    
    [inventory]
    cache_prefix = ansible_inventory_
    
  • Переменная окружения: ANSIBLE_CACHE_PLUGIN_PREFIX
  • Переменная окружения: ANSIBLE_INVENTORY_CACHE_PLUGIN_PREFIX

cache_timeout

integer

Продолжительность кэша в секундах

По умолчанию: 3600

Конфигурация:

  • Записи INI:

    [defaults]
    fact_caching_timeout = 3600
    
    [inventory]
    cache_timeout = 3600
    
  • Переменная окружения: ANSIBLE_CACHE_PLUGIN_TIMEOUT
  • Переменная окружения: ANSIBLE_INVENTORY_CACHE_TIMEOUT

compose

dictionary

Создать переменные из выражений jinja2.

По умолчанию: {}

endpoint_url

aliases: aws_endpoint_url, endpoint

string

URL для подключения вместо стандартных конечных точек AWS. Хотя это можно использовать для подключения к другим совместимым с AWS сервисам, коллекции amazon.aws и community.aws тестируются только с AWS.

Псевдоним endpoint устарел и будет удален в релизе после 2024-12-01.

Конфигурация:

  • Переменная окружения: AWS_URL
  • Переменная окружения: EC2_URL

    Удалено в: основном релизе после 2024-12-01

    Почему: EC2 в названии подразумевало, что оно ограничено ресурсами EC2. Однако оно используется для всех подключений.

    Альтернатива: AWS_URL

exclude_filters

список / элементы=словарь

добавлено в amazon.aws 1.5.0

Список фильтров. Любые экземпляры, соответствующие одному из фильтров, исключаются из результата.

Фильтры из exclude_filters имеют приоритет над include_filters и filters ключами.

Доступные фильтры перечислены здесь 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.

Варианты:

  • false ← (по умолчанию)
  • true

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

Значение по умолчанию, когда значение переменной хоста — пустая строка.

Этот параметр взаимоисключающий с keyed_groups[].trailing_separator.

key

строка

Ключ из входного словаря, используемый для генерации групп

parent_group

строка

родительская группа для группировки по ключу

prefix

строка

Имя группы по ключу будет начинаться с этого префикса

По умолчанию: ""

separator

строка

Разделитель, используемый для построения имени группы по ключу

По умолчанию: "_"

END_OF_DOCUMENT_MARKER

trailing_separator

boolean

added in ansible-core 2.12

Установите этот параметр в значение False, чтобы опустить keyed_groups[].separator после переменной хоста, когда значение является пустой строкой.

Этот параметр несовместим с keyed_groups[].default_value.

Варианты:

  • false
  • true ← (по умолчанию)

leading_separator

boolean

added in ansible-core 2.11

Используется совместно с keyed_groups.

По умолчанию, имя группы keyed, у которой нет префикса или разделителя, начинается с символа подчёркивания.

Это связано с тем, что по умолчанию префикс — пустая строка, а разделитель — «_».

Установите этот параметр в значение False, чтобы опустить ведущий подчёркивание (или другой разделитель), если префикс не задан.

Если имя группы получено из отображения, разделитель всё ещё используется для конкатенации элементов.

Чтобы вообще не использовать разделитель в имени группы, установите разделитель для группы keyed в пустую строку.

Варианты:

  • false
  • true ← (по умолчанию)

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.

Настройка:

  • Переменная окружения: AWS_PROFILE
  • Переменная окружения: AWS_DEFAULT_PROFILE

region

aliases: aws_region, ec2_region

string

Регион AWS для использования.

Дополнительную информацию см. в документации Amazon AWS: http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region.

Настройка:

  • Переменная окружения: AWS_REGION
  • Переменная окружения: EC2_REGION

    Удалено в: основной релиз после 2024-12-01

    Почему: EC2 в названии подразумевало ограничение ресурсами EC2, но используется для всех подключений

    Альтернатива: AWS_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.

Настройка:

  • Переменная окружения: AWS_SECRET_ACCESS_KEY
  • Переменная окружения: AWS_SECRET_KEY
  • Переменная окружения: EC2_SECRET_KEY

    Удалено в: основной релиз после 2024-12-01

    Почему: EC2 в названии подразумевало ограничение ресурсами EC2, но используется для всех подключений.

    Альтернатива: AWS_SECRET_ACCESS_KEY

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.

Настройка:

  • Переменная окружения: AWS_SESSION_TOKEN
  • Переменная окружения: AWS_SECURITY_TOKEN

    Удалено в: основной релиз после 2024-12-01

    Почему: AWS_SECURITY_TOKEN использовался для совместимости с исходным SDK boto, поддержка которого прекращена

    Альтернатива: AWS_SESSION_TOKEN

  • Переменная окружения: EC2_SECURITY_TOKEN

    Удалено в: основной релиз после 2024-12-01

    Почему: EC2 в названии подразумевало ограничение ресурсами EC2, но используется для всех подключений.

    Альтернатива: AWS_SESSION_TOKEN

strict

boolean

Если yes, то недействительные записи будут считаться фатальной ошибкой, в противном случае они будут проигнорированы и выполнение продолжится.

Поскольку в выражениях можно использовать факты, они могут быть недоступны, и эти ошибки игнорируются по умолчанию.

Варианты:

  • false ← (по умолчанию)
  • true

strict_permissions

boolean

По умолчанию, если возникает ошибка 403 (Запрещено), этот плагин завершится с ошибкой.

Вы можете установить это значение в False в файле конфигурации инвентаризации, что позволит игнорировать ошибки 403.

Варианты:

  • false
  • true ← (по умолчанию)

use_contrib_script_compatible_ec2_tag_keys

boolean

добавлен в amazon.aws 1.5.0

Отобразить метки хостов с ключами ec2_tag_TAGNAME, как в старом скрипте инвентаризации ec2.py.

Использование этой функции не рекомендуется, и мы рекомендуем мигрировать на новую структуру ``tags``.

Варианты:

  • false ← (по умолчанию)
  • true

use_contrib_script_compatible_sanitization

boolean

По умолчанию этот плагин использует общую очистку имён групп для создания безопасных и удобных имён групп, которые можно использовать в Ansible. Этот параметр позволяет переопределить это действие, чтобы можно было мигрировать со старого скрипта инвентаризации и соответствовать очистке групп, когда параметр скрипта ``replace_dash_in_groups`` установлен в ``False``. Чтобы воспроизвести поведение ``replace_dash_in_groups = True`` для созданных групп, вам необходимо заменить дефисы на подчёркивания с помощью фильтра regex_replace для этих записей.

Для этого вы также должны отключить настройку TRANSFORM_INVALID_GROUP_CHARS, иначе основной движок просто применит стандартную очистку поверх неё.

Это не значение по умолчанию, так как такие имена нарушают определённые функции, поскольку не все символы являются допустимыми идентификаторами Python, которые в конечном итоге используются как имена групп.

Варианты:

  • false ← (по умолчанию)
  • true

use_extra_vars

boolean

добавлен в ansible-core 2.11

Объединить дополнительные переменные в доступные переменные для композиции (самый высокий приоритет).

Варианты:

  • false ← (по умолчанию)
  • true

Конфигурация:

  • Запись INI:

    [inventory_plugins]
    use_extra_vars = false
    
  • Переменная среды: ANSIBLE_INVENTORY_USE_EXTRA_VARS

use_ssm_inventory

boolean

добавлен в amazon.aws 6.0.0

Включает получение дополнительной информации об экземплярах EC2 из сервиса инвентаризации AWS Systems Manager (SSM) в hostvars.

Используя данные инвентаризации SSM, параметр use_ssm_inventory предоставляет дополнительные сведения и атрибуты об экземплярах EC2 в вашем инвентаре. Эти данные могут включать информацию об операционной системе, установленных программах, конфигурациях сети и пользовательских атрибутах инвентаризации, определённых в SSM.

Варианты:

  • false ← (по умолчанию)
  • true

Примечания

Примечание

  • Если учетные данные не предоставлены, и у узла управления есть связанный профиль экземпляра 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'

Авторы

  • Sloane Hertel (@s-hertel)

Подсказка

Элементы конфигурации для каждого типа имеют порядок приоритета от низкого к высокому. Например, переменная, которая находится ниже в списке, переопределит переменную, которая находится выше.

Ссылки на коллекцию

  • Отслеживание ошибок
  • Репозиторий (источники)
  • Связь

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API