5

Ansible で Debian の exim4 構成を自動化しようとしています。これまでは手動で構成していましたが、通常どおり実行する段階で行き詰まっていますdpkg-reconfigure exim4-config

これらの手順を簡単に自動化できます。

  • conf ファイルを更新します。/etc/exim4/exim4-config.conf.conf
  • 走るdpkg-reconfigure --frontend noninteractive exim4-config

それらは Playbook で正常に実行されますが、問題は、対話型プロンプトに表示されるすべてのオプションがこの conf ファイルに含まれているわけではないということです。たとえば、2 番目の設定System mail nameは、conf ファイルのどこにも指定されていません。また、最後の設定でRoot and postmaster mail recipientある も、最初の構成後に対話型プロンプトに表示されなくなります (なぜですか?)

その後、一部の人々がdebconf-set-selections( heredebconf-utils ) の使用を提案しているのを見て、それを調べてみました -パッケージをインストールしてから実行しました - そこにすべてのオプションを見ましたが、今は使用せずdebconf-get-selectionsに使用する方法があるかどうか疑問に思っていますexim4に関連付けられた値を変更したいだけなので、すべての設定を一度に設定するdebconf-set-selectionsファイルを使用する必要があります。プレイブックを再度実行する必要がある場合に設定される可能性のある他の値 (exim4 に関連付けられていない) を上書きしないようにしています。

の出力をファイルに書き込んでdebconf-get-selectionsから、Ansible のlineinfile/templateモジュールを使用して変更したい値を置き換える以外に、もっと簡単な方法はありますか? この方法は避けたほうがよいでしょう。

4

2 に答える 2

5

少し遅れていますが、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-reconfigureexim を再起動します。

- name: Reconfigure package exim4-config
  command: dpkg-reconfigure -fnoninteractive exim4-config
于 2016-11-16T15:51:28.003 に答える