Spec-Zone.ru › Ansible 2.10

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
    Варианты:
  • 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"
Если ложь, ошибки шаблонов при обработке групп и фильтров игнорируются (например, если выражение фильтра или группы относится к неопределённой переменной хоста).
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
отмечает это как экземпляр плагина '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

Spec-Zone.ru

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