group_by#

Модуль ansible.builtin.group_by использует факты для создания временных групп узлов в описании инвентаря. Созданные группы можно использовать позже в этом же сценарии, например, чтобы ограничить список узлов, на которых выполняются задания.

Параметры#

Модуль принимает следующие параметры:

key#

Обязательный параметр.

Название создаваемой группы узлов, которое может содержать шаблоны Jinja2, например, machine_{{ ansible_machine }}.

Примечание

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

parents#

Список родительских групп.

Значение по умолчанию: ["all"].

Атрибуты#

Атрибуты определяют функции Ansible, которые может использовать модуль.

Атрибут

Описание

action

Модуль имеет соответствующее расширение действий (action plugin). Это расширение выполняет работу на управляющем узле.

async

Модуль не поддерживает асинхронное выполнение.

become

Модуль не поддерживает повышение привилегий.

bypass_host_loop

Модуль не поддерживает глобальное выполнение задачи.

bypass_task_loop

Модуль поддерживает директивы loop и with_.

check_mode

Модуль частично поддерживает режим проверки (check_mode). Хотя изменения на управляемых узлах не выполняются, структура инвентаря в памяти все равно изменяется. Поэтому модуль может возвращать статус changed.

connection

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

core

Только часть функциональности модуля может быть изменена с помощью расширений.

delegation

Модуль не поддерживает delegate_to, то есть не может выполняться на другом узле.

diff_mode

Модуль не поддерживает режим сравнения.

ignore_conditional

Модуль игнорирует директиву when.

platform

Модуль поддерживает все платформы, с которыми может работать Ansible.

tags

Модуль поддерживает директиву tags.

until

Модуль не поддерживает механизм повторных попыток.

Примеры#

Для изучения возможностей модуля ознакомьтесь с приведенными ниже примерами.

Создание группы без использования фактов#

Следующий пример демонстрирует создание временной группы example, в которую будут добавлены все активные узлы:

---
# ...
  tasks:
    - name: Add all active hosts to a static group
      ansible.builtin.group_by:
        key: example

Пример результата выполнения задачи:

ok: [localhost] => {
    "group_names": [
         "example"
    ]
}

Создание групп с использованием фактов#

Следующий пример демонстрирует создание временных групп на основе дистрибутива и архитектуры узлов:

---
# ...
  tasks:
    - name: Create nested groups
      ansible.builtin.group_by:
        key: "{{ ansible_distribution }}-{{ ansible_distribution_release }}"
        parents:
          - "{{ ansible_distribution }}"

Пример результата выполнения задачи:

ok: [localhost] => {
    "group_names": [
         "Astra-Linux",
         "Astra-Linux-1.7_x86-64"
    ]
}