Spec-Zone.ru › Ansible

azure.azcollection.azure_rm inventory – Плагин инвентаризации Azure Resource Manager

Примечание

Этот плагин инвентаризации является частью коллекции azure.azcollection (версия 2.7.0).

Эта коллекция может быть уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить установку, выполните ansible-galaxy collection list.

Для установки используйте: ansible-galaxy collection install azure.azcollection. Для использования этого плагина инвентаризации требуются дополнительные компоненты, см. Требования для получения подробностей.

Для использования в playbook укажите: azure.azcollection.azure_rm.

  • Описание
  • Требования
  • Параметры
  • Примечания
  • См. также
  • Примеры

Описание

  • Запрос данных о виртуальных машинах из Azure Resource Manager
  • Требуется файл конфигурации YAML, имя которого заканчивается на ‘azure_rm.(yml|yaml)’
  • По умолчанию, устанавливает ansible_host на первый обнаруженный публичный IP-адрес (в приоритете основной сетевой адаптер). Если публичных IP-адресов не найдено, используется первый частный IP-адрес (в приоритете основной сетевой адаптер). По умолчанию можно переопределить через hostvar_expressions; см. примеры.

Требования

Ниже перечислены требования, необходимые на локальном узле-контроллере, на котором выполняется эта инвентаризация.

  • python >= 2.7
  • На узле, выполняющем этот модуль, должна быть установлена коллекция azure.azcollection через galaxy
  • Все пакеты Python, перечисленные в requirements.txt коллекции, должны быть установлены через pip на узле, на котором выполняются модули из azure.azcollection
  • Полные инструкции по установке можно найти по адресу https://galaxy.ansible.com/azure/azcollection

Параметры

Параметр

Комментарии

ad_user

string

Имя пользователя Active Directory. Используйте при аутентификации с пользователем Active Directory, а не с субъектом безопасности.

adfs_authority_url

string

added in azure.azcollection 0.0.1

URL-адрес узла Azure AD. Используйте при аутентификации с помощью имени пользователя/пароля и имеете собственный узел ADFS.

api_profile

string

added in azure.azcollection 0.0.1

Выбирает профиль API для использования при взаимодействии с службами Azure. Значение по умолчанию latest подходит для общедоступных облаков; будущие значения позволят использовать с Azure Stack.

Default: "latest"

auth_source

string

added in azure.azcollection 0.0.1

Управляет источником учетных данных для аутентификации.

Также может быть установлен через переменную среды 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.

Варианты:

  • "auto" ← (по умолчанию)
  • "cli"
  • "credential_file"
  • "env"
  • "msi"

batch_fetch

string

Для повышения производительности результаты извлекаются с помощью неподдерживаемого пакетного API. Отключение batch_fetch использует гораздо более медленный последовательный запрос, что приводит к значительно большему количеству циклов. Обычно полезно только для устранения неполадок.

Default: true

cert_validation_mode

string

added in azure.azcollection 0.0.1

Управляет поведением проверки сертификата для конечных точек Azure. По умолчанию все модули будут проверять серверный сертификат, но когда используется прокси-сервер HTTPS или Azure Stack, может потребоваться отключить это поведение, передав ignore. Также может быть установлен через профиль файла учетных данных или переменную среды AZURE_CERT_VALIDATION.

Варианты:

  • "ignore"
  • "validate"

client_id

string

Идентификатор клиента Azure. Используйте при аутентификации с помощью субъекта безопасности или управляемой идентичности (msi).

Также может быть установлен через переменную среды AZURE_CLIENT_ID.

cloud_environment

string

added in azure.azcollection 0.0.1

Для облачных сред, отличных от общедоступного облака США, имя среды (как определено в Azure Python SDK, например, AzureChinaCloud, AzureUSGovernment), или URL-адрес конечной точки обнаружения метаданных (требуется для Azure Stack). Также может быть установлен через профиль файла учетных данных или переменную среды AZURE_CLOUD_ENVIRONMENT.

Default: "AzureCloud"

compose

dictionary

Создать переменные из выражений jinja2.

Default: {}

conditional_groups

string

Сопоставление имен групп с выражениями Jinja2. Когда сопоставленное выражение истинно, хост добавляется в именованную группу.

default_host_filters

string

Набор фильтров по умолчанию, который применяется в дополнение к условиям в exclude_host_filters для исключения выключенных и не полностью подготовленных хостов. Установите это значение в другое значение или пустой список, если вам нужно включить хосты в этих состояниях.

Default: ["powerstate != \"running\"", "provisioning_state != \"succeeded\""]

disable_instance_discovery

boolean

added in azure.azcollection 2.3.0

Определяет, будет ли выполняться обнаружение экземпляров при попытке аутентификации. Установка этого значения в true полностью отключит как обнаружение экземпляров, так и проверку подлинности. Эта функция предназначена для использования в сценариях, когда конечная точка метаданных недоступна, например, в частных облаках или Azure Stack. Процесс обнаружения экземпляров включает в себя получение метаданных полномочий из https://login.microsoft.com/ для проверки полномочий. Установив это значение в **True**, проверка полномочий отключается. В результате важно убедиться, что настроенный узел полномочий является действительным и заслуживающим доверия.

Устанавливается через профиль файла учетных данных или переменную среды AZURE_DISABLE_INSTANCE_DISCOVERY.

Варианты:

  • false ← (по умолчанию)
  • true

exclude_host_filters

string

Исключает хосты из инвентаризации со списком условных выражений Jinja2. Каждое выражение в списке оценивается для каждого хоста; когда выражение истинно, хост исключается из инвентаризации.

Default: []

fail_on_template_errors

string

При значении false, ошибки шаблонов во время обработки групп и фильтров будут проигнорированы (например, если выражение фильтра или группы ссылается на неопределённую переменную хоста).

Варианты:

  • true ← (по умолчанию)
  • false

groups

dictionary

Добавление хостов в группы на основе условных выражений Jinja2.

По умолчанию: {}

hostnames

list / elements=string

Список выражений Jinja2 в порядке приоритета для составления inventory_hostname.

Игнорирует выражение, если результат — пустая строка или значение None.

По умолчанию, inventory_hostname генерируется как глобально уникальное имя, основанное на имени хоста виртуальной машины. Подробнее о поведении по умолчанию см. plain_host_names.

Выражение default заставит использовать генератор имени по умолчанию, если предыдущее выражение не привело к валидному имени хоста.

Используйте default_inventory_hostname для доступа к значению генератора имени по умолчанию в любом из выражений Jinja2.

По умолчанию: ["default"]

hostvar_expressions

string

Сопоставление имён hostvar с выражениями Jinja2. Значение для каждого хоста — результат выражения Jinja2 (которое может ссылаться на любые существующие переменные хоста на момент выполнения этого плагина инвентаризации).

include_host_filters

string

Включение хостов из инвентаризации с помощью списка условных выражений Jinja2. Каждое выражение в списке оценивается для каждого хоста; если выражение истинно, хост включается в инвентаризацию. По умолчанию, все хосты включаются.

По умолчанию: [true]

include_vm_resource_groups

string

Список имён групп ресурсов для поиска виртуальных машин. «\*» включает все группы ресурсов в подписке. Также может быть задан через перечисленные через запятую имена групп ресурсов в переменной среды ANSIBLE_AZURE_VM_RESOURCE_GROUPS.

По умолчанию: ["*"]

include_vmss_resource_groups

string

Список имён групп ресурсов для поиска наборов виртуальных машин (VMSS). «\*» включает все группы ресурсов в подписке.

По умолчанию: []

keyed_groups

list / elements=dictionary

Создание групп на основе значения переменной хоста. Требует список словарей, определяющих key (переменную-словарь источника), prefix (префикс для нового имени группы) и необязательно separator (по умолчанию _).

По умолчанию: []

default_value

string

добавлено в ansible-core 2.12

Значение по умолчанию, когда значение переменной хоста — пустая строка.

Этот параметр несовместим с keyed_groups[].trailing_separator.

key

string

Ключ из входного словаря, используемый для генерации групп

parent_group

string

родительская группа для ключевой группы

prefix

string

Имя ключевой группы будет начинаться с этого префикса

По умолчанию: ""

separator

string

Разделитель, используемый для построения имени ключевой группы

По умолчанию: "_"

trailing_separator

boolean

добавлено в ansible-core 2.12

Установите этот параметр в False чтобы опустить keyed_groups[].separator после переменной хоста, когда значение пустая строка.

Этот параметр несовместим с keyed_groups[].default_value.

Варианты:

  • false
  • true ← (по умолчанию)

leading_separator

boolean

добавлено в ansible-core 2.11

Используется в сочетании с keyed_groups.

По умолчанию, имя ключевой группы, для которой не указан префикс или разделитель, начинается с подчёркивания.

Это потому, что по умолчанию префикс — “” и разделитель — “_”.

Установите этот параметр в False, чтобы опустить ведущее подчёркивание (или другой разделитель), если не задан префикс.

Если имя группы получено из сопоставления, разделитель всё ещё используется для конкатенации элементов.

Чтобы вообще не использовать разделитель в имени группы, установите разделитель ключевой группы в пустую строку.

Варианты:

  • false
  • true ← (по умолчанию)

log_mode

string

Родительский аргумент.

log_path

string

Родительский аргумент.

пароль

строка

Пароль пользователя Active Directory. Используется при аутентификации с пользователем Active Directory вместо служебного принципала.

plain_host_names

булево

добавлен в azure.azcollection 0.0.1

По умолчанию этот плагин использует уникальные имена хостов. Этот параметр позволяет переопределить это и использовать имя, соответствующее старому названию скрипта инвентаризации.

Это не значение по умолчанию, так как эти имена не являются по-настоящему уникальными и могут конфликтовать с другими хостами. По умолчанию поведение добавляет дополнительное хеширование в конец имени хоста, чтобы предотвратить такие конфликты.

Варианты:

  • false ← (по умолчанию)
  • true

plugin

строка / обязательный

помечает это как экземпляр плагина ‘azure_rm’

Варианты:

  • "azure_rm"
  • "azure.azcollection.azure_rm"

профиль

строка

Профиль безопасности, найденный в файле ~/.azure/credentials.

секрет

строка

Секрет клиента Azure. Используется при аутентификации с помощью служебного принципала.

строго

булево

Если yes сделать недопустимые записи ошибкой, в противном случае пропустить и продолжить.

Поскольку в выражениях можно использовать факты, они могут быть не всегда доступны, и мы по умолчанию игнорируем такие ошибки.

Варианты:

  • false ← (по умолчанию)
  • true

идентификатор_подписки

строка

Ваш идентификатор подписки Azure.

арендатор

строка

Идентификатор арендатора Azure. Используется при аутентификации с помощью служебного принципала.

отпечаток_пальца

строка

добавлен в azure.azcollection 1.14.0

Отпечаток цифрового сертификата открытого ключа, указанного в x509_certificate_path.

Используется при аутентификации с помощью служебного принципала.

Требуется, если задан x509_certificate_path.

использовать_совместимую_санизацию_скрипта_contrib

булево

добавлен в azure.azcollection 0.0.1

По умолчанию этот плагин использует общую санизацию имен групп для создания безопасных и пригодных для использования имен групп для использования в Ansible. Этот параметр позволяет переопределить это, чтобы позволить миграцию со старого скрипта инвентаризации и соответствует санизации групп, когда параметр replace_dash_in_groups скрипта установлен в false. Чтобы воспроизвести поведение replace_dash_in_groups = true с созданными группами, вам необходимо заменить дефисы подчеркивания с помощью фильтра regex_replace для этих записей.

Для этого необходимо также отключить параметр TRANSFORM_INVALID_GROUP_CHARS, иначе основной движок просто использует стандартную санизацию поверх него.

Это не значение по умолчанию, так как такие имена нарушают определенные функции, так как не все символы являются допустимыми идентификаторами Python, для которых имена групп в конечном итоге используются.

Варианты:

  • false ← (по умолчанию)
  • true

использовать_дополнительные_переменные

булево

добавлен в ansible-core 2.11

Объединить дополнительные переменные в доступные переменные для композиции (высший приоритет).

Варианты:

  • false ← (по умолчанию)
  • true

Настройка:

  • Запись INI:

    [inventory_plugins]
    use_extra_vars = false
    
  • Переменная среды: ANSIBLE_INVENTORY_USE_EXTRA_VARS

x509_certificate_path

путь

добавлен в azure.azcollection 1.14.0

Путь к сертификату X509, используемому для создания служебного принципала в формате PEM.

Сертификат должен быть присоединен к закрытому ключу.

Используется при аутентификации с помощью служебного принципала.

Примечания

Примечание

  • Для аутентификации с 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'
# creation_time: datetime object of when the VM was created, eg '2023-07-21T09:30:30.4710164+00:00'
#
# 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_inventory_hostname + ".domain.tld" # Transfer to fqdn if you use shortnames for VMs
    - 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']
    - tags['tagkey'] is defined and tags['tagkey'] == 'tagvalue'
    - tags['tagkey2'] is defined and tags['tagkey2'] == 'tagvalue2'
    # excludes hosts that are powered off
    - powerstate != 'running'

# includes a host to the inventory when any of these expressions is true, can refer to any vars defined on the host
include_host_filters:
    # includes hosts that in the eastus region and power on
    - location in ['eastus'] and powerstate == 'running'
    # includes hosts in the eastus region and power on OR includes hosts in the eastus2 region and tagkey value is tagvalue
    - location in ['eastus'] and powerstate == 'running'
    - location in ['eastus2'] and tags['tagkey'] is defined and tags['tagkey'] == 'tagvalue'

Подсказка

Записи конфигурации для каждого типа имеют низкий-высокий приоритет. Например, переменная, которая расположена ниже в списке, переопределит переменную, которая расположена выше.

Ссылки на коллекции

  • Отслеживание проблем
  • Главная страница
  • Репозиторий (источники)

© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/azure/azcollection/azure_rm_inventory.html

Spec-Zone.ru

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