azure.azcollection.azure_rm inventory – Плагин инвентаризации Azure Resource Manager
Примечание
Этот плагин инвентаризации является частью коллекции azure.azcollection (версия 2.7.0).
Эта коллекция может быть уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить установку, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install azure.azcollection. Для использования этого плагина инвентаризации требуются дополнительные компоненты, см. Требования для получения подробностей.
Для использования в playbook укажите: 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 added in azure.azcollection 0.0.1 | URL-адрес узла Azure AD. Используйте при аутентификации с помощью имени пользователя/пароля и имеете собственный узел ADFS. |
api_profile string added in azure.azcollection 0.0.1 | Выбирает профиль API для использования при взаимодействии с службами Azure. Значение по умолчанию Default: |
auth_source string added in azure.azcollection 0.0.1 | Управляет источником учетных данных для аутентификации. Также может быть установлен через переменную среды При установке в При установке в При установке в При установке в При установке в Параметр Варианты:
|
batch_fetch string | Для повышения производительности результаты извлекаются с помощью неподдерживаемого пакетного API. Отключение Default: |
cert_validation_mode string added in azure.azcollection 0.0.1 | Управляет поведением проверки сертификата для конечных точек Azure. По умолчанию все модули будут проверять серверный сертификат, но когда используется прокси-сервер HTTPS или Azure Stack, может потребоваться отключить это поведение, передав Варианты:
|
client_id string | Идентификатор клиента Azure. Используйте при аутентификации с помощью субъекта безопасности или управляемой идентичности (msi). Также может быть установлен через переменную среды |
cloud_environment string added in azure.azcollection 0.0.1 | Для облачных сред, отличных от общедоступного облака США, имя среды (как определено в Azure Python SDK, например, Default: |
compose dictionary | Создать переменные из выражений jinja2. Default: |
conditional_groups string | Сопоставление имен групп с выражениями Jinja2. Когда сопоставленное выражение истинно, хост добавляется в именованную группу. |
default_host_filters string | Набор фильтров по умолчанию, который применяется в дополнение к условиям в Default: |
disable_instance_discovery boolean added in azure.azcollection 2.3.0 | Определяет, будет ли выполняться обнаружение экземпляров при попытке аутентификации. Установка этого значения в true полностью отключит как обнаружение экземпляров, так и проверку подлинности. Эта функция предназначена для использования в сценариях, когда конечная точка метаданных недоступна, например, в частных облаках или Azure Stack. Процесс обнаружения экземпляров включает в себя получение метаданных полномочий из https://login.microsoft.com/ для проверки полномочий. Установив это значение в **True**, проверка полномочий отключается. В результате важно убедиться, что настроенный узел полномочий является действительным и заслуживающим доверия. Устанавливается через профиль файла учетных данных или переменную среды Варианты:
|
exclude_host_filters string | Исключает хосты из инвентаризации со списком условных выражений Jinja2. Каждое выражение в списке оценивается для каждого хоста; когда выражение истинно, хост исключается из инвентаризации. Default: |
fail_on_template_errors string | При значении false, ошибки шаблонов во время обработки групп и фильтров будут проигнорированы (например, если выражение фильтра или группы ссылается на неопределённую переменную хоста). Варианты:
|
groups dictionary | Добавление хостов в группы на основе условных выражений Jinja2. По умолчанию: |
hostnames list / elements=string | Список выражений Jinja2 в порядке приоритета для составления inventory_hostname. Игнорирует выражение, если результат — пустая строка или значение None. По умолчанию, inventory_hostname генерируется как глобально уникальное имя, основанное на имени хоста виртуальной машины. Подробнее о поведении по умолчанию см. Выражение Используйте По умолчанию: |
hostvar_expressions string | Сопоставление имён hostvar с выражениями Jinja2. Значение для каждого хоста — результат выражения Jinja2 (которое может ссылаться на любые существующие переменные хоста на момент выполнения этого плагина инвентаризации). |
include_host_filters string | Включение хостов из инвентаризации с помощью списка условных выражений Jinja2. Каждое выражение в списке оценивается для каждого хоста; если выражение истинно, хост включается в инвентаризацию. По умолчанию, все хосты включаются. По умолчанию: |
include_vm_resource_groups string | Список имён групп ресурсов для поиска виртуальных машин. «\*» включает все группы ресурсов в подписке. Также может быть задан через перечисленные через запятую имена групп ресурсов в переменной среды По умолчанию: |
include_vmss_resource_groups string | Список имён групп ресурсов для поиска наборов виртуальных машин (VMSS). «\*» включает все группы ресурсов в подписке. По умолчанию: |
keyed_groups list / elements=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 | Используется в сочетании с keyed_groups. По умолчанию, имя ключевой группы, для которой не указан префикс или разделитель, начинается с подчёркивания. Это потому, что по умолчанию префикс — “” и разделитель — “_”. Установите этот параметр в False, чтобы опустить ведущее подчёркивание (или другой разделитель), если не задан префикс. Если имя группы получено из сопоставления, разделитель всё ещё используется для конкатенации элементов. Чтобы вообще не использовать разделитель в имени группы, установите разделитель ключевой группы в пустую строку. Варианты:
|
log_mode string | Родительский аргумент. |
log_path string | Родительский аргумент. |
пароль строка | Пароль пользователя Active Directory. Используется при аутентификации с пользователем Active Directory вместо служебного принципала. |
plain_host_names булево добавлен в azure.azcollection 0.0.1 | По умолчанию этот плагин использует уникальные имена хостов. Этот параметр позволяет переопределить это и использовать имя, соответствующее старому названию скрипта инвентаризации. Это не значение по умолчанию, так как эти имена не являются по-настоящему уникальными и могут конфликтовать с другими хостами. По умолчанию поведение добавляет дополнительное хеширование в конец имени хоста, чтобы предотвратить такие конфликты. Варианты:
|
plugin строка / обязательный | помечает это как экземпляр плагина ‘azure_rm’ Варианты:
|
профиль строка | Профиль безопасности, найденный в файле ~/.azure/credentials. |
секрет строка | Секрет клиента Azure. Используется при аутентификации с помощью служебного принципала. |
строго булево | Если Поскольку в выражениях можно использовать факты, они могут быть не всегда доступны, и мы по умолчанию игнорируем такие ошибки. Варианты:
|
идентификатор_подписки строка | Ваш идентификатор подписки Azure. |
арендатор строка | Идентификатор арендатора Azure. Используется при аутентификации с помощью служебного принципала. |
отпечаток_пальца строка добавлен в azure.azcollection 1.14.0 | Отпечаток цифрового сертификата открытого ключа, указанного в x509_certificate_path. Используется при аутентификации с помощью служебного принципала. Требуется, если задан x509_certificate_path. |
использовать_совместимую_санизацию_скрипта_contrib булево добавлен в azure.azcollection 0.0.1 | По умолчанию этот плагин использует общую санизацию имен групп для создания безопасных и пригодных для использования имен групп для использования в Ansible. Этот параметр позволяет переопределить это, чтобы позволить миграцию со старого скрипта инвентаризации и соответствует санизации групп, когда параметр Для этого необходимо также отключить параметр TRANSFORM_INVALID_GROUP_CHARS, иначе основной движок просто использует стандартную санизацию поверх него. Это не значение по умолчанию, так как такие имена нарушают определенные функции, так как не все символы являются допустимыми идентификаторами Python, для которых имена групп в конечном итоге используются. Варианты:
|
использовать_дополнительные_переменные булево добавлен в ansible-core 2.11 | Объединить дополнительные переменные в доступные переменные для композиции (высший приоритет). Варианты:
Настройка:
|
x509_certificate_path путь добавлен в azure.azcollection 1.14.0 | Путь к сертификату X509, используемому для создания служебного принципала в формате PEM. Сертификат должен быть присоединен к закрытому ключу. Используется при аутентификации с помощью служебного принципала. |
Примечания
Примечание
- Для аутентификации с Azure можно передавать параметры, устанавливать переменные среды, использовать профиль, сохраненный в файле ~/.azure/credentials, или войти в систему перед выполнением задач или playbook с
az login. - Аутентификация также возможна с помощью служебного принципала или пользователя Active Directory.
- Для аутентификации через служебного принципала передайте 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. Также можно добавить дополнительные профили. Укажите профиль, передав профиль или установив AZURE_PROFILE в среде.
См. также
См. также
- Войти с помощью 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/virtualMachine', 'Microsoft.Compute/virtualMachineScaleSets/virtualMachines'
# 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 availble:
# computer_name: the Operating System's hostname. Will not be available if azure agent is not available and picking it up.
# 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:
- '*'
# 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–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/azure/azcollection/azure_rm_inventory.html