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 логическое добавлено в 2.8 |
| По умолчанию этот модуль использует уникальные имена хостов. Этот параметр позволяет переопределить это и использовать имя, соответствующее старому скрипту инвентаризации. Это не значение по умолчанию, так как эти имена не являются уникальными и могут конфликтовать с другими хостами. Поведение по умолчанию добавит дополнительное хэширование в конец имени хоста для предотвращения таких конфликтов. | |
| plugin - / обязательно |
| помечает это как экземпляр модуля 'azure_rm' | |
| profile строка | Профиль безопасности, найденный в файле ~/.azure/credentials. | ||
| secret строка | Секрет клиента Azure. Используйте при аутентификации с главным принципом службы. | ||
| subscription_id строка | Ваш идентификатор подписки Azure. | ||
| tenant строка | Идентификатор клиента Azure. Используйте при аутентификации с главным принципом службы. | ||
| use_contrib_script_compatible_sanitization логическое добавлено в 2.8 |
| По умолчанию этот модуль использует общую очистку имён групп для создания безопасных и пригодных для использования имён групп в Ansible. Этот параметр позволяет переопределить это, чтобы обеспечить миграцию со старого скрипта инвентаризации и соответствует очистке групп, когда параметр «заменить_тире_в_группах» скрипта установлен в «False». Для воспроизведения поведения «заменить_тире_в_группах = 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'
# 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
# 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.9/plugins/inventory/azure_rm.html