azure.azcollection.azure_rm – Плагин инвентаризации Azure Resource Manager
Примечание
Этот плагин входит в коллекцию azure.azcollection (версия 1.4.0).
Для установки используйте: 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 >= 2.0.0
Параметры
| Параметр | Варианты/Значения по умолчанию | Конфигурация | Комментарии |
|---|---|---|---|
| ad_user строка | Имя пользователя Active Directory. Используйте при аутентификации с пользователем Active Directory, а не с принципалом службы. | ||
| adfs_authority_url строка добавлен в 0.0.1 azure.azcollection | URL-адрес авторизации Azure AD. Используйте при аутентификации с именем пользователя/паролем и собственной авторизацией ADFS. | ||
| api_profile строка добавлен в 0.0.1 azure.azcollection | По умолчанию: "latest" | Выбирает профиль API для взаимодействия с Azure-сервисами. Значение по умолчанию latest подходит для общедоступных облаков; будущие значения позволят использовать Azure Stack. | |
| auth_source строка добавлен в 0.0.1 azure.azcollection |
| Управляет источником учетных данных для аутентификации. Также может быть задан через переменную среды ANSIBLE_AZURE_AUTH_SOURCE.При значении auto (по умолчанию) приоритет имеет: параметры модуля -> env -> credential_file -> cli.При значении env, учетные данные будут считываться из переменных среды.При значении credential_file, профиль будет считываться из ~/.azure/credentials.При значении cli, учетные данные будут получены из профиля Azure CLI. subscription_id или переменная среды AZURE_SUBSCRIPTION_ID может использоваться для идентификации идентификатора подписки, если их несколько, в противном случае используется по умолчанию подписка az cli.При значении msi, хост-машина должна быть Azure-ресурсом с включенным расширением MSI. subscription_id или переменная среды AZURE_SUBSCRIPTION_ID может использоваться для определения идентификатора подписки, если ресурс имеет доступ к нескольким подпискам, в противном случае выбирается первая подписка.msi был добавлен в Ansible 2.6. | |
| batch_fetch строка | По умолчанию: "yes" | Для повышения производительности результаты извлекаются с использованием неподдерживаемого пакетного API. Отключение batch_fetch использует гораздо более медленный последовательный запрос, что приводит к большему количеству обращений. Как правило, полезно только для отладки. | |
| cert_validation_mode строка добавлен в 0.0.1 azure.azcollection |
| Управляет поведением проверки сертификатов для Azure-точек доступа. По умолчанию все модули проверяют сертификат сервера, но при использовании HTTPS-прокси или с Azure Stack может потребоваться отключить это поведение, передав ignore. Также может быть задан через профиль файла учетных данных или переменную среды AZURE_CERT_VALIDATION. | |
| client_id строка | Идентификатор клиента Azure. Используйте при аутентификации с принципалом службы. | ||
| cloud_environment строка добавлен в 0.0.1 azure.azcollection | По умолчанию: "AzureCloud" | Для облачных сред, отличных от общедоступного облака США, имя среды (как определено в Azure Python SDK, например, AzureChinaCloud, AzureUSGovernment или URL-адрес точки доступа к метаданным (необходим для Azure Stack). Также может быть задан через профиль файла учетных данных или переменную среды AZURE_CLOUD_ENVIRONMENT. | |
| compose словарь | По умолчанию: {} | Создать переменные из выражений jinja2. | |
| conditional_groups строка | Сопоставление имен групп с выражениями Jinja2. Когда сопоставленное выражение истинно, хост добавляется в указанную группу. | ||
| default_host_filters строка | По умолчанию: ["powerstate != \"running\"", "provisioning_state != \"succeeded\""] | Набор фильтров по умолчанию, применяемых дополнительно к условиям в exclude_host_filters, чтобы исключить выключенные и не полностью подготовленные хосты. Измените это значение или установите пустой список, если вам нужно включить хосты в этих состояниях. | |
| exclude_host_filters строка | По умолчанию: [] | Исключает хосты из инвентаризации с помощью списка условных выражений Jinja2. Каждое выражение в списке вычисляется для каждого хоста; когда выражение истинно, хост исключается из инвентаризации. | |
| fail_on_template_errors строка |
"yes" | При значении False ошибки шаблонов во время обработки групп и фильтров игнорируются (например, если выражение фильтра или группы относится к неопределенной переменной хоста). | |
| groups словарь | По умолчанию: {} | Добавляет хосты в группу на основе условных выражений Jinja2. | |
| hostnames список / элементы=строка | По умолчанию: ["default"] | Список выражений Jinja2 в порядке приоритета для составления inventory_hostname. Игнорирует выражение, если результат пустая строка или значение None. По умолчанию inventory_hostname генерируется глобально уникальным образом на основе имени хоста виртуальной машины. См. plain_host_names для получения дополнительной информации о значении по умолчанию.Выражение 'default' заставит использовать генератор имени хоста по умолчанию, если предыдущее выражение имени хоста не привело к допустимому имени хоста. Используйте ``default_inventory_hostname`` для доступа к значению генератора имени хоста по умолчанию в любом из выражений Jinja2. | |
| hostvar_expressions строка | Сопоставление имен hostvar с выражениями Jinja2. Значение для каждого хоста — результат выражения Jinja2 (которое может ссылаться на любые существующие переменные хоста на момент выполнения этого плагина инвентаризации). | ||
| include_vm_resource_groups строка | По умолчанию: ["*"] | Список имен групп ресурсов для поиска виртуальных машин. '\*' включает все группы ресурсов в подписке. | |
| include_vmss_resource_groups строка | По умолчанию: [] | Список имен групп ресурсов для поиска наборов виртуальных машин (VMSS). '\*' включает все группы ресурсов в подписке. | |
| keyed_groups список / элементы=строка | По умолчанию: [] | Создает группы на основе значения переменной хоста. Требует список словарей, определяющих key (переменная типа словарь-источник), prefix (префикс для нового имени группы) и необязательно separator (по умолчанию _). | |
| leading_separator логическое добавлен в 2.11 ansible.builtin |
| Используется совместно с keyed_groups. По умолчанию, имя ключевой группы без префикса или разделителя начинается с подчеркивания. Это потому, что префикс по умолчанию — пустая строка, а разделитель — "_". Установите этот параметр в False, чтобы опустить ведущее подчеркивание (или другой разделитель), если префикс не задан. Если имя группы получено из отображения, разделитель все еще используется для конкатенации элементов. Чтобы вообще не использовать разделитель в имени группы, установите разделитель для ключевой группы в пустую строку. | |
| password строка | Пароль пользователя Active Directory. Используйте при аутентификации с пользователем Active Directory, а не с принципалом службы. | ||
| plain_host_names логическое добавлен в 2.8 azure.azcollection |
| По умолчанию этот плагин использует глобально уникальные имена хостов. Этот параметр позволяет переопределить это и использовать имя, соответствующее старому именованию скрипта инвентаризации. Это не значение по умолчанию, так как эти имена не являются истинно уникальными и могут конфликтовать с другими хостами. По умолчанию будет добавлена дополнительная хэширование в конец имени хоста, чтобы предотвратить такие конфликты. | |
| plugin строка / необходимо |
| отмечает это как экземпляр плагина 'azure_rm' | |
| profile строка | Профиль безопасности, найденный в файле ~/.azure/credentials. | ||
| secret строка | Секрет клиента Azure. Используйте при аутентификации с принципалом службы. | ||
| strict логическое |
| Если yes сделать недопустимые записи ошибкой, в противном случае пропустить и продолжить.Поскольку в выражениях можно использовать факты, они могут быть недоступны, и мы по умолчанию игнорируем эти ошибки. | |
| subscription_id строка | Ваш идентификатор подписки Azure. | ||
| tenant строка | Идентификатор Azure-тенанта. Используйте при аутентификации с принципалом службы. |
| use_contrib_script_compatible_sanitization boolean добавлен в 2.8 в azure.azcollection |
| По умолчанию этот плагин использует стандартную очистку имён групп для создания безопасных и пригодных для использования имён групп в Ansible. Этот параметр позволяет переопределить эту очистку, чтобы мигрировать со старого скрипта инвентаризации и соответствовать очистке групп при установке параметра скрипта ``replace_dash_in_groups`` в ``False``. Чтобы воспроизвести поведение ``replace_dash_in_groups = True`` для сконструированных групп, необходимо заменить дефисы на подчёркивания с помощью фильтра regex_replace для соответствующих записей. Для этого также необходимо выключить настройку TRANSFORM_INVALID_GROUP_CHARS, иначе ядро будет использовать стандартную очистку. Это не является значением по умолчанию, так как такие имена нарушают определённые функции, так как не все символы являются допустимыми идентификаторами Python, которыми в конечном итоге становятся имена групп. | |
| use_extra_vars boolean добавлен в 2.11 в ansible.builtin |
| Записи ini: [inventory_plugins] переменная окружения: ANSIBLE_INVENTORY_USE_EXTRA_VARS | Объединить дополнительные переменные в доступные переменные для композиции (с наивысшим приоритетом). |
Примечания
Примечание
- Для аутентификации с 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'
#
# 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 # 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']
# excludes hosts that are powered off
- powerstate != 'running'
© 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/azure/azcollection/azure_rm_inventory.html