azure_rm – Azure Resource Manager инвентаризационный плагин
Описание
- Запрос подробностей о виртуальных машинах из 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 строка добавлено в 2.6 | URL-адрес авторитета Azure AD. Используется при аутентификации с именем пользователя/паролем, и если у вас есть собственный авторитет ADFS. | ||
| api_profile строка добавлено в 2.5 | По умолчанию: "latest" | Выбирает профиль API для использования при общении с Azure-сервисами. Значение по умолчанию latest подходит для общедоступных облаков; будущие значения позволят использовать с Azure Stack. | |
| auth_source строка добавлено в 2.5 |
| Управляет источником учетных данных для аутентификации. Если не указано, будет использована переменная среды ANSIBLE_AZURE_AUTH_SOURCE и по умолчанию auto, если переменная не определена.auto будет следовать по умолчанию приоритету параметров модуля -> переменных среды -> профилю по умолчанию в файле учетных данных ~/.azure/credentials. При установке в cli, учетные данные будут получены из профиля Azure CLI по умолчанию.Также может быть задано через переменную среды ANSIBLE_AZURE_AUTH_SOURCE. При установке в msi, хост-машина должна быть Azure-ресурсом с включенным расширением MSI. subscription_id или переменная среды AZURE_SUBSCRIPTION_ID может быть использована для определения идентификатора подписки, если ресурсу предоставлен доступ к нескольким подпискам, в противном случае выбирается первая подписка.msi добавлено в Ansible 2.6. | |
| batch_fetch - | По умолчанию: "yes" | Для повышения производительности результаты извлекаются с использованием недокументированного пакетного API. Отключение batch_fetch использует гораздо более медленный последовательный запрос, что приводит к большему количеству запросов. Обычно полезно только для отладки. | |
| cert_validation_mode строка добавлено в 2.5 |
| Управляет поведением проверки сертификатов для Azure-конечных точек. По умолчанию все модули проверяют серверный сертификат, но при использовании прокси HTTPS или подключении к Azure Stack может потребоваться отключить это поведение, передав ignore. Также может быть задано через профиль файла учетных данных или переменную среды AZURE_CERT_VALIDATION. | |
| client_id строка | Идентификатор клиента Azure. Используется при аутентификации сервисным принципалом. | ||
| cloud_environment строка добавлено в 2.4 | По умолчанию: "AzureCloud" | Для облачных сред, отличных от общедоступного облака США, имя среды (как определено Azure Python SDK, например, AzureChinaCloud, AzureUSGovernment) или URL-адрес конечной точки обнаружения метаданных (необходим для Azure Stack). Также может быть задано через профиль файла учетных данных или переменную среды AZURE_CLOUD_ENVIRONMENT. | |
| conditional_groups - | Сопоставление имен групп с выражениями Jinja2. Когда сопоставленное выражение истинно, хост добавляется в указанную группу. | ||
| default_host_filters - | По умолчанию: ["powerstate != \"running\"", "provisioning_state != \"succeeded\""] | Набор фильтров по умолчанию, который применяется дополнительно к условиям в exclude_host_filters, чтобы исключить выключенные и не полностью проинициализированные хосты. Измените это значение или установите пустой список, если необходимо включить хосты в этих состояниях. | |
| exclude_host_filters - | По умолчанию: [] | Исключает хосты из инвентаризации с помощью списка условных выражений Jinja2. Каждое выражение в списке оценивается для каждого хоста; когда выражение истинно, хост исключается из инвентаризации. | |
| fail_on_template_errors - |
"да" | Если ложь, ошибки шаблонов во время обработки групп и фильтров игнорируются без сообщений об ошибках (например, если выражение фильтра или группы ссылается на неопределенную переменную хоста) | |
| hostvar_expressions - | Сопоставление имен hostvar с выражениями Jinja2. Значение для каждого хоста - результат выражения Jinja2 (которое может ссылаться на любые существующие переменные хоста на момент запуска этого плагина инвентаризации). | ||
| include_vm_resource_groups - | По умолчанию: ["*"] | Список имен групп ресурсов, в которых нужно искать виртуальные машины. '\*' включит все группы ресурсов в подписке. | |
| include_vmss_resource_groups - | По умолчанию: [] | Список имен групп ресурсов, в которых нужно искать масштабируемые наборы виртуальных машин (VMSS). '\*' включит все группы ресурсов в подписке. | |
| keyed_groups - | Создаёт группы на основе значения переменной хоста. Требует список словарей, определяющих key, prefix, и необязательно separator (по умолчанию _) | ||
| password - | Пароль пользователя Active Directory. Используется при аутентификации пользователем Active Directory, а не сервисным принципалом. | ||
| plain_host_names boolean добавлено в 2.8 |
| По умолчанию этот плагин использует глобально уникальные имена хостов. Этот параметр позволяет переопределить это и использовать имя, соответствующее старому скрипту инвентаризации. Это не значение по умолчанию, так как эти имена не являются истинно уникальными и могут конфликтовать с другими хостами. Поведение по умолчанию добавляет дополнительное хэширование в конец имени хоста, чтобы предотвратить такие конфликты. | |
| plugin - / обязательно |
| Помечает это как экземпляр плагина 'azure_rm' | |
| profile строка | Профиль безопасности, найденный в файле ~/.azure/credentials. | ||
| secret строка | Секрет клиента Azure. Используется при аутентификации сервисным принципалом. | ||
| subscription_id строка | Идентификатор вашей подписки Azure. | ||
| tenant строка | Идентификатор Azure-аренды. Используется при аутентификации сервисным принципалом. | ||
| use_contrib_script_compatible_sanitization boolean добавлено в 2.8 |
| По умолчанию этот плагин использует общую очистку имён групп, чтобы создать безопасные и пригодные для использования имена групп для использования в Ansible. Этот параметр позволяет переопределить это, пытаясь разрешить миграцию со старого скрипта инвентаризации и соответствует очистке групп, когда параметр скрипта ``replace_dash_in_groups`` равен ``False``. Чтобы воспроизвести поведение ``replace_dash_in_groups = True`` с созданными группами, необходимо заменить дефисы на нижние подчёркивания с помощью фильтра regex_replace для этих записей. Для этого вам также необходимо отключить настройку TRANSFORM_INVALID_GROUP_CHARS, иначе основной движок просто использует стандартную очистку поверх. Это не значение по умолчанию, так как такие имена нарушают определённую функциональность, так как не все символы являются допустимыми идентификаторами Python, которые имена групп в конечном итоге используются как. |
Примечания
Примечание
- Для аутентификации с Azure можно передать параметры, установить переменные среды, использовать профиль, сохраненный в ~/.azure/credentials, или войти в систему перед запуском задач или плейбука с
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. Также можно добавить дополнительные профили. Укажите профиль, передав profile или установив 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'
# 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
# sample 'myazuresub.azure_rm.yaml'
# required for all azure_rm inventory plugin configs
plugin: 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
# 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'
Статус
- Данный инвентаризация не гарантирует обратную совместимость. [превью]
- Этот инвентарь поддерживается сообществом Ansible. [сообщество]
Авторы
- UNKNOWN
Подсказка
Если вы заметите какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
Подсказка
Элементы конфигурации для каждого типа записи имеют порядок приоритетов от низкого к высокому. Например, переменная, которая расположена ниже в списке, переопределит переменную, расположенную выше.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.8/plugins/inventory/azure_rm.html