Автоматизация *просто* конфигурации exim4 с помощью debconf-set-selections с помощью Ansible

Я пытаюсь автоматизировать настройку exim4 в Debian в Ansible — до этого момента мы настраивали вручную — но я застрял на этапе, когда я обычно запускал dpkg-reconfigure exim4-config.

Я могу достаточно легко автоматизировать эти шаги:

  • Обновите файл conf на /etc/exim4/exim4-config.conf.conf
  • Беги dpkg-reconfigure --frontend noninteractive exim4-config

Они отлично работают в playbook, однако проблема в том, что не все параметры, которые я вижу в интерактивной подсказке, находятся в этом файле конфигурации. Например, второй параметр, System mail name, нигде в файле conf не указан. И последний параметр, Root and postmaster mail recipient, который также перестает отображаться в интерактивной подсказке после первой настройки (почему?)

Затем я увидел, что некоторые люди предложили использовать debconf-set-selections (здесь), и я попытался изучить это - Я установил пакет debconf-utils, а затем запустил debconf-get-selections - Затем я увидел там все параметры, но теперь мне интересно, есть ли способ использовать debconf-set-selections без использования файла, который устанавливает все настройки все сразу, так как я просто хочу изменить значения, связанные с exim4. Я пытаюсь избежать перезаписи любых других значений (не связанных с exim4), которые могут быть установлены, если мне нужно снова запустить playbook.

Если не считать записи вывода debconf-get-selections в файл, а затем использования модулей Ansible lineinfile/template для замены значений, которые я хочу изменить, возможно, есть более простой способ сделать это? Я бы предпочел избежать этого метода.


person 3cheesewheel    schedule 19.07.2016    source источник


Ответы (2)


Немного поздно, но я предлагаю вам использовать ansible модуль debconf (в основном он делает debconf-set-selections).

Как этот пример:

- name: Debconf question dc_eximconfig_configtype
  debconf: name='exim4-config'
    question: 'exim4/dc_eximconfig_configtype'
    value: 'internet site; mail is sent and received directly using SMTP'
    vtype: select

Или этот:

- name: Debconf question mailname
  debconf: name='exim4-config'
    question: 'exim4/mailname'
    value: '{{ inventory_hostname }}'
    vtype: string

Однако, если вы перенастраиваете exim (после того, как вы настроили его один раз), вам нужно удалить 2 файла перед выполнением dpkg-reconfigure, это можно сделать с помощью следующих команд:

- name: remove exim config files
  file: path={{ item }} state=absent
  with_items:
    - "/etc/exim4/update-exim4.conf.conf"
    - "/etc/mailname"

Наконец, выполните dpkg-reconfigure, который также перезапустит exim.

- name: Reconfigure package exim4-config
  command: dpkg-reconfigure -fnoninteractive exim4-config
person DeLoVaN    schedule 16.11.2016

у меня была следующая ошибка со строками "debconf: name='exim4-config'":

ERROR! Syntax Error while loading YAML.

и я также предпочел использовать «value: 'smarthost'», чтобы установить «dc_eximconfig_configtype='smarthost'» в /etc/exim4/update-exim4.conf.conf...

Следовательно, мой файл roles/smtp_client/tasks/main.yml содержит следующие строки:

- name: remove exim config files
  file: path={{ item }} state=absent
  with_items:
    - "/etc/exim4/update-exim4.conf.conf"
    - "/etc/mailname"

- name: Debconf question mailname
  debconf:
    name: 'ansible_hostname exim4-config'
    question: 'exim4/mailname'
    value: '{{ ansible_hostname }}'
    vtype: string

- name: Debconf question dc_eximconfig_configtype
  debconf:
    name: 'dc_eximconfig_configtype exim4-config'
    question: 'exim4/dc_eximconfig_configtype'
    value: 'smarthost'
    vtype: select

- name: Debconf question dc_smarthost
  debconf:
    name: 'dc_smarthost exim4-config'
    question: 'exim4/dc_smarthost'
    value: '{{ my_smtp_server }}'
    vtype: string

- name: Reconfigure package exim4-config
  command: dpkg-reconfigure -fnoninteractive exim4-config
person MaxiReglisse    schedule 09.07.2018