Инвентаризация azure.azcollection.azure_rm — плагин инвентаризации Azure Resource Manager
Примечание
Этот плагин инвентаризации входит в коллекцию azure.azcollection (версия 3.18.0).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Чтобы установить её, используйте: ansible-galaxy collection install azure.azcollection. Для использования этого плагина инвентаризации требуются дополнительные зависимости. Подробнее см. в разделе Требования.
Чтобы использовать его в плейбуке, укажите: azure.azcollection.azure_rm.
Краткое описание
- Запрос сведений о виртуальных машинах из Azure Resource Manager
- Требуется файл конфигурации YAML с именем, оканчивающимся на «azure_rm.(yml|yaml)»
- По умолчанию для
ansible_hostзадаётся первый найденный общедоступный IP-адрес (приоритет отдаётся основному сетевому интерфейсу). Если общедоступные IP-адреса не найдены, используется первый частный IP-адрес (также с приоритетом основного сетевого интерфейса). Значение по умолчанию можно переопределить с помощьюhostvar_expressions; см. примеры.
Требования
Указанные ниже зависимости необходимы на локальном управляющем узле, который выполняет эту инвентаризацию.
- python >= 2.7
- На узле, выполняющем этот модуль, должна быть установлена коллекция azure.azcollection из Galaxy
- Все пакеты Python, перечисленные в файле requirements.txt коллекции, должны быть установлены с помощью pip на узле, выполняющем модули из azure.azcollection
- Полные инструкции по установке доступны по адресу https://galaxy.ansible.com/azure/azcollection
Параметры
Параметр | Комментарии |
|---|---|
ad_user string | Имя пользователя Active Directory. Используйте при аутентификации с учетной записью пользователя Active Directory, а не с субъектом-службой. |
adfs_authority_url string добавлено в azure.azcollection 0.0.1 | URL-адрес центра Azure AD. Используйте при аутентификации с именем пользователя и паролем, если у вас есть собственный центр ADFS. |
api_profile string добавлено в azure.azcollection 0.0.1 | Выбирает профиль API для взаимодействия со службами Azure. Значение по умолчанию По умолчанию: |
auth_source string добавлено в azure.azcollection 0.0.1 | Определяет источник учетных данных для аутентификации. Также можно задать с помощью переменной окружения Если задано значение Если задано значение Если задано значение Если задано значение Если задано значение Параметр Варианты:
|
batch_fetch string | Для повышения производительности результаты извлекаются с помощью неподдерживаемого пакетного API. Отключение По умолчанию: |
batch_fetch_interval integer | Интервал проверки завершения пакетных запросов По умолчанию: |
batch_fetch_timeout integer | Тайм-аут ожидания выполнения пакетных запросов По умолчанию: |
cache boolean | Включает или отключает кэширование исходных данных инвентаризации; для работы требуется настроенный подключаемый модуль кэша. Варианты:
Конфигурация:
|
cache_connection string | Данные подключения к кэшу или путь к нему; подробную информацию см. в документации подключаемого модуля кэша. Конфигурация:
|
cache_plugin string | Подключаемый модуль кэша для исходных данных инвентаризации. По умолчанию: Конфигурация:
|
cache_prefix string | Префикс для файлов/таблиц подключаемого модуля кэша. По умолчанию: Конфигурация:
|
cache_timeout integer | Длительность хранения данных в кэше в секундах. По умолчанию: Конфигурация:
|
cert_validation_mode string добавлено в azure.azcollection 0.0.1 | Управляет проверкой сертификатов для конечных точек Azure. По умолчанию все модули проверяют сертификат сервера, однако при использовании HTTPS-прокси или Azure Stack может потребоваться отключить эту проверку, передав Варианты:
|
client_id string | Идентификатор клиента Azure. Используйте при аутентификации с субъектом-службой или управляемым удостоверением (msi). Также можно задать с помощью переменной окружения |
cloud_environment string добавлено в azure.azcollection 0.0.1 | Для облачных сред, отличных от общедоступного облака США, укажите имя среды (определенное в Azure Python SDK, например, По умолчанию: |
compose dictionary | Создает переменные на основе выражений Jinja2. По умолчанию: |
conditional_groups string | Соответствие имен групп выражениям Jinja2. Если соответствующее выражение истинно, хост добавляется в указанную группу. |
default_host_filters string | Набор фильтров по умолчанию, применяемый вместе с условиями в По умолчанию: |
disable_instance_discovery boolean добавлено в azure.azcollection 2.3.0 | Определяет, выполняется ли обнаружение экземпляров при попытке аутентификации. Если задать значение true, обнаружение экземпляров и проверка центра будут полностью отключены. Эта возможность предназначена для сценариев, в которых конечная точка метаданных недоступна, например в частных облаках или Azure Stack. В ходе обнаружения экземпляров метаданные центра извлекаются с https://login.microsoft.com/ для проверки центра. Если задать значение **True**, проверка центра отключается. Поэтому крайне важно убедиться, что настроенный хост центра является действительным и заслуживающим доверия. Задается в профиле файла учетных данных или с помощью переменной окружения Варианты:
|
exclude_host_filters string | Исключает хосты из инвентаризации с помощью списка условных выражений Jinja2. Каждое выражение из списка вычисляется для каждого хоста; если выражение истинно, хост исключается из инвентаризации. По умолчанию: |
fail_on_template_errors string | Если значение false, ошибки шаблонов при обработке групп и фильтров игнорируются без уведомления (например, если выражение фильтра или группы ссылается на неопределенную переменную хоста) Варианты:
|
groups dictionary | Добавляет хосты в группу на основе условий Jinja2. По умолчанию: |
hostnames list / элементы=string | Список выражений Jinja2 в порядке приоритета для формирования inventory_hostname. Выражение игнорируется, если результатом является пустая строка или значение None. По умолчанию inventory_hostname формируется на основе имени хоста виртуальной машины, чтобы быть уникальным в глобальном масштабе. Подробнее о значении по умолчанию см. в Выражение Используйте По умолчанию: |
hostvar_expressions string | Соответствие имен переменных хоста выражениям Jinja2. Значение для каждого хоста является результатом выражения Jinja2 (которое может ссылаться на любые существующие переменные хоста на момент запуска этого подключаемого модуля инвентаризации). |
include_arc_resource_groups string | Список имен групп ресурсов для поиска компьютеров Azure ARC. Значение ‘\*’ включает все группы ресурсов в подписке. По умолчанию: |
include_hcivm_resource_groups string | Список имен групп ресурсов для поиска виртуальных машин Azure StackHCI. Значение ‘\*’ включает все группы ресурсов в подписке. По умолчанию: |
include_host_filters string | Включает хосты в инвентаризацию с помощью списка условных выражений Jinja2. Каждое выражение из списка вычисляется для каждого хоста; если выражение истинно, хост включается в инвентаризацию. По умолчанию в инвентаризацию включаются все хосты. По умолчанию: |
include_vm_resource_groups string | Список имен групп ресурсов для поиска виртуальных машин. Значение ‘\*’ включает все группы ресурсов в подписке. Список имен групп ресурсов через запятую также можно задать с помощью переменной окружения По умолчанию: |
include_vmss_resource_groups string | Список имен групп ресурсов для поиска масштабируемых наборов виртуальных машин (VMSS). Значение ‘\*’ включает все группы ресурсов в подписке. По умолчанию: |
keyed_groups list / элементы=dictionary | Создает группы на основе значения переменной хоста. Требуется список словарей с параметрами По умолчанию: |
|
default_value string добавлено в ansible-core 2.12 |
Значение по умолчанию, если значение переменной хоста равно Этот параметр несовместим с |
|
key string |
Ключ входного словаря, используемый для создания групп. |
|
parent_group string |
Родительская группа для группы с ключом. |
|
prefix string |
Имя группы с ключом будет начинаться с этого префикса. По умолчанию: |
|
separator string |
Разделитель, используемый для формирования имени группы с ключом. По умолчанию: |
|
trailing_separator boolean добавлено в ansible-core 2.12 |
Задайте этому параметру значение Этот параметр несовместим с Варианты:
|
leading_separator boolean добавлено в ansible-core 2.11 | Используется вместе с По умолчанию имя группы с ключом, для которой не задан префикс или разделитель, начинается с символа подчеркивания. Это происходит потому, что префикс по умолчанию — Задайте этому параметру значение Если имя группы формируется из сопоставления, разделитель по-прежнему используется для объединения элементов. Чтобы вообще не использовать разделитель в имени группы, задайте для группы с ключом пустую строку в качестве разделителя. Варианты:
|
log_mode string | Родительский аргумент. |
log_path string | Родительский аргумент. |
oidc_token string добавлено в azure.azcollection 3.17.0 | Токен OpenID Connect (OIDC) (JWT), используемый для аутентификации с удостоверением рабочей нагрузки. Этот токен обменивается с Azure AD посредством федеративного удостоверения OIDC. Полезен в системах CI (например, GitHub Actions и Azure DevOps), где платформа напрямую предоставляет токен OIDC. Также можно задать с помощью переменной окружения |
oidc_token_file_path path добавлено в azure.azcollection 3.17.0 | Путь к файлу, содержащему токен OpenID Connect (OIDC) (JWT), используемый для аутентификации рабочей нагрузки. Файл должен содержать только необработанный токен. Этот метод обычно используется на платформах, которые сохраняют токены OIDC в файлах. Также можно задать с помощью переменной среды |
password string | Пароль пользователя Active Directory. Используйте при аутентификации от имени пользователя Active Directory, а не субъекта-службы. |
plain_host_names boolean добавлено в azure.azcollection 0.0.1 | По умолчанию этот плагин использует глобально уникальные имена узлов. Этот параметр позволяет переопределить такое поведение и использовать имена, соответствующие соглашениям об именовании старого скрипта инвентаризации. Это поведение не используется по умолчанию, поскольку такие имена не являются по-настоящему уникальными и могут совпадать с именами других узлов. По умолчанию в конец имени узла добавляется дополнительный хеш, чтобы избежать таких конфликтов. Варианты:
|
plugin string / обязательно | указывает, что это экземпляр плагина ‘azure_rm’ Варианты:
|
profile string | Профиль безопасности из файла ~/.azure/credentials. |
secret string | Секрет клиента Azure. Используйте при аутентификации с помощью субъекта-службы. |
strict boolean | Если Поскольку в выражениях можно использовать факты, они могут быть доступны не всегда, поэтому по умолчанию такие ошибки игнорируются. Варианты:
|
subscription_id string | Идентификатор вашей подписки Azure. |
tenant string | Идентификатор клиента Azure. Используйте при аутентификации с помощью субъекта-службы. |
thumbprint string добавлено в azure.azcollection 1.14.0 | Отпечаток закрытого ключа, указанного в x509_certificate_path. Используйте при аутентификации с помощью субъекта-службы. Обязателен, если задан x509_certificate_path. |
use_contrib_script_compatible_sanitization boolean добавлено в azure.azcollection 0.0.1 | По умолчанию этот плагин использует общую очистку имен групп для создания безопасных и пригодных для использования в Ansible имен. Этот параметр позволяет переопределить такое поведение, чтобы упростить переход со старого скрипта инвентаризации и обеспечить очистку имен групп, соответствующую поведению скрипта при значении параметра Для работы этой функции также следует отключить параметр TRANSFORM_INVALID_GROUP_CHARS, иначе основной механизм применит стандартную очистку дополнительно. По умолчанию эта функция отключена, поскольку такие имена нарушают работу некоторых функций: не все символы допустимы в идентификаторах Python, которыми становятся имена групп. Варианты:
|
use_extra_vars boolean добавлено в ansible-core 2.11 | Объединить дополнительные переменные с доступными переменными для формирования значений (наивысший приоритет). Варианты:
Конфигурация:
|
x509_certificate_path path добавлено в azure.azcollection 1.14.0 | Путь к сертификату X509 в формате PEM, используемому для создания субъекта-службы. К сертификату необходимо добавить закрытый ключ. Используйте при аутентификации с помощью субъекта-службы. |
Примечание
Перечисленные выше записи конфигурации для каждого типа записи (переменная Ansible, переменная среды и т. д.) расположены в порядке от низкого приоритета к высокому. Например, переменная, находящаяся ниже в списке, переопределит переменную, расположенную выше. Типы записей также упорядочены по приоритету от низкого к высокому. Например, запись ansible.cfg (расположенная выше в списке) переопределяется переменной Ansible (расположенной ниже в списке).
Примечания
Примечание
- Для аутентификации в Azure можно передать параметры, задать переменные среды, использовать профиль из ~/.azure/credentials или войти в систему до запуска задач или плейбука с помощью
az login. - Также можно выполнить аутентификацию с помощью субъекта-службы или пользователя Active Directory.
- Для аутентификации через OIDC передайте client_id, tenant и oidc_token либо oidc_token_file_path или задайте переменные среды AZURE_CLIENT_ID, AZURE_TENANT и AZURE_FEDERATED_TOKEN либо AZURE_FEDERATED_TOKEN_FILE.
- Для аутентификации с помощью субъекта-службы передайте subscription_id, client_id, secret и tenant либо задайте переменные среды AZURE_SUBSCRIPTION_ID, AZURE_CLIENT_ID, AZURE_SECRET и AZURE_TENANT.
- Для аутентификации от имени пользователя Active Directory передайте ad_user и password или задайте в среде AZURE_AD_USER и AZURE_PASSWORD.
- Кроме того, учетные данные можно сохранить в ~/.azure/credentials. Это INI-файл, содержащий раздел [default] и следующие ключи: subscription_id, client_id, secret и tenant либо subscription_id, ad_user и password. Также можно добавить дополнительные профили. Укажите профиль, передав profile или задав в среде AZURE_PROFILE.
- На этом этапе инвентаризация еще не завершена, поэтому автоматически заполненные группы
allиungroupedбудут содержать только данные, явно добавленные в них предыдущими источниками инвентаризации. - Во время построения инвентаризации «магические» переменные среды выполнения недоступны. Например,
groupsиhostvarsеще не существуют.
См. также
См. также
- Вход с помощью Azure CLI
-
Инструкции по аутентификации с помощью команды
az login.
Примеры
# The following host variables are always available:
# public_ipv4_addresses: all public IP addresses, with the primary IP config from the primary NIC first
# public_dns_hostnames: all public DNS hostnames, with the primary IP config from the primary NIC first
# private_ipv4_addresses: all private IP addressses, with the primary IP config from the primary NIC first
# id: the VM's Azure resource ID, eg /subscriptions/00000000-0000-0000-1111-1111aaaabb/resourceGroups/my_rg/providers/Microsoft.Compute/virtualMachines/my_vm
# location: the VM's Azure location, eg 'westus', 'eastus'
# name: the VM's resource name, eg 'myvm'
# os_profile: The VM OS properties, a dictionary, only system is currently available, eg 'os_profile.system not in ['linux']'
# powerstate: the VM's current power state, eg: 'running', 'stopped', 'deallocated'
# provisioning_state: the VM's current provisioning state, eg: 'succeeded'
# tags: dictionary of the VM's defined tag values
# resource_type: the VM's resource type, eg: 'Microsoft.Compute/virtualMachines', 'Microsoft.Compute/virtualMachineScaleSets/virtualMachines',
# 'microsoft.azurestackhci/virtualmachineinstances'
# vmid: the VM's internal SMBIOS ID, eg: '36bca69d-c365-4584-8c06-a62f4a1dc5d2'
# vmss: if the VM is a member of a scaleset (vmss), a dictionary including the id and name of the parent scaleset
# availability_zone: availability zone in which VM is deployed, eg '1','2','3'
# creation_time: datetime object of when the VM was created, eg '2023-07-21T09:30:30.4710164+00:00'
#
# The following host variables are sometimes available:
# computer_name: the Operating System's hostname. Will be available if azure agent is available and picking it up.
# The following host variables are available for Azure Stack HCI vms:
# customLocation: the azure arc custom location.
# virtual_machine_memoryMB: RAM allowed (static)
# virtual_machine_processors: number of vCPUs
# sample 'myazuresub.azure_rm.yaml'
# required for all azure_rm inventory plugin configs
plugin: azure.azcollection.azure_rm
# forces this plugin to use a CLI auth session instead of the automatic auth source selection (eg, prevents the
# presence of 'ANSIBLE_AZURE_RM_X' environment variables from overriding CLI auth)
auth_source: cli
# fetches VMs from an explicit list of resource groups instead of default all (- '*')
include_vm_resource_groups:
- myrg1
- myrg2
# fetches VMs from VMSSs in all resource groups (defaults to no VMSS fetch)
include_vmss_resource_groups:
- '*'
# fetches VMs from Azure StackHCI in specific resource groups (defaults to no HCI vm fetch)
include_hcivm_resource_groups:
- myrg1
# fetches ARC hosts in specific resource groups (defaults to no ARC fetch)
include_arc_resource_groups:
- myrg1
# places a host in the named group if the associated condition evaluates to true
conditional_groups:
# since this will be true for every host, every host sourced from this inventory plugin config will be in the
# group 'all_the_hosts'
all_the_hosts: true
# if the VM's "name" variable contains "dbserver", it will be placed in the 'db_hosts' group
db_hosts: "'dbserver' in name"
# adds variables to each host found by this inventory plugin, whose values are the result of the associated expression
hostvar_expressions:
my_host_var:
# A statically-valued expression has to be both single and double-quoted, or use escaped quotes, since the outer
# layer of quotes will be consumed by YAML. Without the second set of quotes, it interprets 'staticvalue' as a
# variable instead of a string literal.
some_statically_valued_var: "'staticvalue'"
# overrides the default ansible_host value with a custom Jinja2 expression, in this case, the first DNS hostname, or
# if none are found, the first public IP address.
ansible_host: (public_dns_hostnames + public_ipv4_addresses) | first
# change how inventory_hostname is generated. Each item is a jinja2 expression similar to hostvar_expressions.
hostnames:
- tags.vm_name
- default_inventory_hostname + ".domain.tld" # Transfer to fqdn if you use shortnames for VMs
- default # special var that uses the default hashed name
# places hosts in dynamically-created groups based on a variable value.
keyed_groups:
# places each host in a group named 'tag_(tag name)_(tag value)' for each tag on a VM.
- prefix: tag
key: tags
# places each host in a group named 'azure_loc_(location name)', depending on the VM's location
- prefix: azure_loc
key: location
# places host in a group named 'some_tag_X' using the value of the 'sometag' tag on a VM as X, and defaulting to the
# value 'none' (eg, the group 'some_tag_none') if the 'sometag' tag is not defined for a VM.
- prefix: some_tag
key: tags.sometag | default('none')
# excludes a host from the inventory when any of these expressions is true, can refer to any vars defined on the host
exclude_host_filters:
# excludes hosts in the eastus region
- location in ['eastus']
- tags['tagkey'] is defined and tags['tagkey'] == 'tagvalue'
- tags['tagkey2'] is defined and tags['tagkey2'] == 'tagvalue2'
# excludes hosts that are powered off
- powerstate != 'running'
# includes a host to the inventory when any of these expressions is true, can refer to any vars defined on the host
include_host_filters:
# includes hosts that in the eastus region and power on
- location in ['eastus'] and powerstate == 'running'
# includes hosts in the eastus region and power on OR includes hosts in the eastus2 region and tagkey value is tagvalue
- location in ['eastus'] and powerstate == 'running'
- location in ['eastus2'] and tags['tagkey'] is defined and tags['tagkey'] == 'tagvalue'
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/azure/azcollection/azure_rm_inventory.html