我试图在Ansible中自动执行Debian上的exim4配置 - 我们已经手动配置到这一点 - 但我已经陷入了我正常运行的阶段{{ 1}}。
我可以轻松地自动执行这些步骤:
dpkg-reconfigure exim4-config
/etc/exim4/exim4-config.conf.conf
它们在剧本中运行良好,但问题是我在交互式提示中看到的所有选项都不在此conf文件中。例如,第二个设置dpkg-reconfigure --frontend noninteractive exim4-config
未在conf文件中的任何位置指定。也不是最后一个设置System mail name
,它也会在第一次配置后停止显示在交互式提示中(为什么会这样?)
然后我看到有些人建议使用Root and postmaster mail recipient
(here),我试着调查一下 - 我安装了debconf-set-selections
包,然后运行debconf-utils
- 然后我看到了那里的所有选项,但现在我想知道是否有办法使用debconf-get-selections
而无需使用一次设置所有设置的文件因为我只想更改与exim4相关的值。我试图避免覆盖可能设置的任何其他值(与exim4无关),如果我需要再次运行该剧本。
如果没有将debconf-set-selections
的输出写入文件,然后使用Ansible的debconf-get-selections
/ lineinfile
模块来替换我想要更改的值,那么可能是这个更简单的方法吗?我宁愿避免这种方法。
答案 0 :(得分:4)
有点晚了,但我建议您使用ansible debconf module(它基本上是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(在配置一次之后),那么在执行dpkg-reconfigure
之前必须删除2个文件,可以使用这些命令完成:< / p>
- 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
答案 1 :(得分:1)
我在“ debconf:name ='exim4-config'”行中出现以下错误:
ERROR! Syntax Error while loading YAML.
并且我还更喜欢使用“ value:'smarthost'”在/etc/exim4/update-exim4.conf.conf ...中设置“ dc_eximconfig_configtype ='smarthost'” ...
因此,我的role / 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: string
- 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
答案 2 :(得分:0)
exim4-config
忽略debconf
选择。您需要创建其配置文件,然后非交互地进行。更多信息here。