Spec-Zone.ru › Ansible 2.11

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
    Варианты:
  • auto ←
  • cli
  • credential_file
  • env
  • msi
Управляет источником учетных данных для аутентификации.
Также может быть задан через переменную среды 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
    Варианты:
  • ignore
  • validate
Управляет поведением проверки сертификатов для 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
строка
    Варианты:
  • True
  • False
По умолчанию:
"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
    Варианты:
  • no
  • yes ←
Используется совместно с keyed_groups.
По умолчанию, имя ключевой группы без префикса или разделителя начинается с подчеркивания.
Это потому, что префикс по умолчанию — пустая строка, а разделитель — "_".
Установите этот параметр в False, чтобы опустить ведущее подчеркивание (или другой разделитель), если префикс не задан.
Если имя группы получено из отображения, разделитель все еще используется для конкатенации элементов.
Чтобы вообще не использовать разделитель в имени группы, установите разделитель для ключевой группы в пустую строку.
password
строка
Пароль пользователя Active Directory. Используйте при аутентификации с пользователем Active Directory, а не с принципалом службы.
plain_host_names
логическое
добавлен в 2.8 azure.azcollection
    Варианты:
  • no ←
  • yes
По умолчанию этот плагин использует глобально уникальные имена хостов. Этот параметр позволяет переопределить это и использовать имя, соответствующее старому именованию скрипта инвентаризации.
Это не значение по умолчанию, так как эти имена не являются истинно уникальными и могут конфликтовать с другими хостами. По умолчанию будет добавлена дополнительная хэширование в конец имени хоста, чтобы предотвратить такие конфликты.
plugin
строка / необходимо
    Варианты:
  • azure_rm
отмечает это как экземпляр плагина 'azure_rm'
profile
строка
Профиль безопасности, найденный в файле ~/.azure/credentials.
secret
строка
Секрет клиента Azure. Используйте при аутентификации с принципалом службы.
strict
логическое
    Варианты:
  • no ←
  • yes
Если 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]
use_extra_vars = нет

переменная окружения: 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API