debconf#

Модуль ansible.builtin.debconf может работать в двух режимах:

  • изменять настройки DEB-пакетов с помощью утилиты debconf-set-selections;

  • предоставлять информацию о настройках пакета, хранящихся в БД debconf.

Особенности работы#

Особенности использования модуля ansible.builtin.debconf:

  • Для работы модуля на управляемых узлах должны быть установлены пакеты debconf и debconf-utils.

  • При настройке определенного пакета необходимо знать его параметры. Для получения списка параметров и их возможных значений для установленного пакета <package> выполните команду:

    debconf-show <package>
    
  • Некоторые дистрибутивы всегда сигнализируют об изменениях при выполнении задач, связанных с установкой паролей. Это нормальное поведение, связанное с маскированием паролей средствами debconf-get-selections.

  • Модуль не выполняет перенастройку уже установленных пакетов. Все что он делает – изменяет содержимое БД debconf.

    Чтобы перенастроить пакет и применить сделанные изменения, требуется запуск dpkg-reconfigure.

    dpkg-reconfigure выполняет настройку пакетов в три этапа путем вызова сценариев из каталога /var/lib/dpkg/info/:

    <package>.prerm reconfigure <version>
    <package>.config reconfigure <version>
    <package>.postinst control <version>
    

    Проблема заключается в том, что на втором этапе для многих пакетов сначала выполняется сброс БД debconf путем проверки конфигурации, хранящейся на диске. Это приводит к перезаписи настроек, сделанных модулем ansible.builtin.debconf. То есть фактически dpkg-reconfigure игнорирует изменения, внесенные debconf.

    Для обхода этой проблемы используйте особенность работы dpkg-reconfigure со сценарием <package>.config: если файл не существует, dpkg-reconfigure не выполняет его (отсутствие файла при этом не считается ошибкой):

    1. Переименуйте файл <package>.config в <package>.config.ignore.

    2. Выполните команду:

      dpkg-reconfigure -f noninteractive <package>
      
    3. Переименуйте файл <package>.config.ignore обратно в <package>.config.

Параметры#

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

name, pkg#

Название настраиваемого пакета.

question, selection, setting#

Настройка, принимаемая debconf.

unseen#

Установка флага seen при формировании файла преднастройки (pre-seed).

Возможные значения:

  • false – без установки флага;

  • true – установка флага.

Значение по умолчанию: false.

value, answer#

Значение, присваиваемое указанной настройке.

vtype#

Тип применяемого значения.

Предупреждение

При использовании типа password рекомендуется запускать задачи с параметром no_log=True, чтобы избежать компрометации секретов.

Возможные значения:

  • boolean;

  • error;

  • multiselect;

  • note;

  • password;

  • seen;

  • select;

  • string;

  • text;

  • title.

Атрибуты#

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

Атрибут

Описание

check_mode

Модуль работает в режиме проверки (check_mode) в полном объеме. Режим проверки позволяет узнать, что произойдет с настройками debconf при выполнении заданий.

diff_mode

Модуль поддерживает режим сравнения (diff_mode) в полном объеме и возвращает подробную информацию о сделанных изменениях.

platform

Модуль поддерживает только дистрибутивы Linux на базе Debian.

Примеры#

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

Установка локали по умолчанию#

Следующий пример описывает изменение настроек пакета locales, хранящихся в БД debconf:

---
- name: Set default locale to ru_RU.UTF-8
  ansible.builtin.debconf:
    name: locales
    question: locales/default_environment_locale
    value: ru_RU.UTF-8
    vtype: select

Получение действующих настроек пакета#

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

---
tasks:
  - name: Get package settings and current values
    ansible.builtin.debconf:
      name: exim4-config
    register: exim4_settings

  - name: Show package settings
    ansible.builtin.debug:
      var: exim4_settings