azure.azcollection.azure_rm – Плагин инвентаризации Azure Resource Manager
Примечание
Этот плагин входит в состав коллекции azure.azcollection (версия 1.3.1).
Для его установки используйте: 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" | Если ложь, ошибки шаблонов при обработке групп и фильтров игнорируются (например, если выражение фильтра или группы относится к неопределённой переменной хоста). | |
| 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 (по умолчанию _) | |
| 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, которые имена групп в конечном итоге используются. |
Примечания
Примечание
- Для аутентификации с 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
# 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–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/azure/azcollection/azure_rm_inventory.html