ansible.builtin.constructed – Использует Jinja2 для построения переменных и групп на основе существующего инвентаря.
Примечание
Этот модуль является частью ansible-base и включён во все установки Ansible. В большинстве случаев вы можете использовать короткое имя модуля constructed даже без указания collections: ключевого слова. Несмотря на это, мы рекомендуем использовать FQCN для лёгкой ссылки на документацию модуля и для предотвращения конфликтов с другими коллекциями, которые могут иметь то же имя модуля.
Новое в версии 2.4: of ansible.builtin
Синопсис
- Использует YAML-конфигурационный файл с допустимым YAML или
.configрасширением для определения выражений переменных и условных выражений групп - Условные выражения Jinja2, которые определяют соответствие хоста членству.
- Выражения Jinja2 вычисляются и назначаются переменным
- Для шаблонизации можно использовать только переменные, уже доступные из предыдущих инвентаризаций или кэша фактов.
- Когда strict равен False, неверные выражения игнорируются (предполагается, что переменные отсутствуют).
Параметры
| Параметр | Варианты/Значения по умолчанию | Конфигурация | Комментарии |
|---|---|---|---|
| compose словарь | Значение по умолчанию: {} | Создать переменные из выражений jinja2. | |
| groups словарь | Значение по умолчанию: {} | Добавить хосты в группу на основе условных выражений Jinja2. | |
| keyed_groups список / элементы=строка | Значение по умолчанию: [] | Добавить хосты в группу на основе значений переменной. | |
| leading_separator булево добавлен в 2.11 ansible.builtin |
| Используется совместно с keyed_groups. По умолчанию, имя ключевой группы, у которой нет префикса или разделителя, начинается с нижнего подчеркивания. Это потому, что по умолчанию префикс — "" , а разделитель — "_". Установите этот параметр в значение False, чтобы опустить ведущее подчеркивание (или другой разделитель), если префикс не указан. Если имя группы получено из отображения, разделитель всё ещё используется для конкатенации элементов. Чтобы вообще не использовать разделитель в имени группы, установите разделитель для ключевой группы в пустую строку вместо этого. | |
| plugin строка / обязательно |
| токен, гарантирующий, что это исходный файл для плагина 'constructed'. | |
| strict булево |
| Если yes сделать недействительные записи ошибкой, иначе пропустить и продолжить.Поскольку в выражениях можно использовать факты, они могут не всегда быть доступны, и мы игнорируем эти ошибки по умолчанию. | |
| use_extra_vars булево добавлен в 2.11 of ansible.builtin |
| ini записи: [inventory_plugins] env:ANSIBLE_INVENTORY_USE_EXTRA_VARS | Объединить дополнительные переменные в доступные переменные для составления (самый высокий приоритет). |
| use_vars_plugins булево добавлен в 2.11 of ansible.builtin |
| Обычно для повышения производительности плагины vars выполняются после того, как источники инвентаризации завершат базовый инвентарь. Этот параметр позволяет получать переменные, относящиеся к хостам/группам, из этих плагинов. Плагин host_group_vars (включен по умолчанию) отвечает за чтение каталогов host_vars/ и group_vars/. Это выполнит все плагины vars, даже те, которые не должны выполняться на стадии 'инвентаризация'. См. документацию по плагинам vars для получения подробной информации о 'stage'. |
Примеры
# inventory.config file in YAML format
plugin: constructed
strict: False
compose:
var_sum: var1 + var2
# this variable will only be set if I have a persistent fact cache enabled (and have non expired facts)
# `strict: False` will skip this instead of producing an error if it is missing facts.
server_type: "ansible_hostname | regex_replace ('(.{6})(.{2}).*', '\\2')"
groups:
# simple name matching
webservers: inventory_hostname.startswith('web')
# using ec2 'tags' (assumes aws inventory)
development: "'devel' in (ec2_tags|list)"
# using other host properties populated in inventory
private_only: not (public_dns_name is defined or ip_address is defined)
# complex group membership
multi_group: (group_names | intersect(['alpha', 'beta', 'omega'])) | length >= 2
keyed_groups:
# this creates a group per distro (distro_CentOS, distro_Debian) and assigns the hosts that have matching values to it,
# using the default separator "_"
- prefix: distro
key: ansible_distribution
# the following examples assume the first inventory is from the `aws_ec2` plugin
# this creates a group per ec2 architecture and assign hosts to the matching ones (arch_x86_64, arch_sparc, etc)
- prefix: arch
key: architecture
# this creates a group per ec2 region like "us_west_1"
- prefix: ""
separator: ""
key: placement.region
# this creates a common parent group for all ec2 availability zones
- key: placement.availability_zone
parent_group: all_ec2_zones
© 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/ansible/builtin/constructed_inventory.html