Sal*_*ley 7 ubuntu ansible debconf
我正在使用 Ansible 尝试配置与特定项目相关的所有工作站,以便能够使用标准配置的 BitTorrent 同步(这实际上只是我想要做的事情的一个例子)。
当我执行 playbook 时,我可以确认远程 PC 上的 debconf 设置已更新,但是应用程序的配置文件尚未更新。
有没有办法让工作顺利完成 - 提供了一堆配置数据,我只想重新编译实际的配置文件,然后重新启动服务。
我在 Ubuntu 14.10 64 位主机上使用最新的 Ansible(来自 PyPi)。
- hosts: btsync
sudo: True
tasks:
- apt_repository: repo='ppa:tuxpoldo/btsync' update_cache=yes state=present
- apt: name=btsync state=present
- apt: name=debconf-utils state=present
- apt: name=btsync-gui state=present
- file: name='create a directory for BT Sync' path=/home/sal/bittorrent_sync state=directory owner=sal group=users mode=0755
- debconf: name='btsync' question='btsync/runas' value='sal' vtype='string'
- debconf: name='btsync' question='btsync/directory_root' value='/home/sal/bittorrent_sync' vtype='string'
- debconf: name='btsync' question='btsync/webgui-bindaddr' value='0.0.0.0' vtype='string'
- debconf: name='btsync' question='btsync/folder_defaults-use_lan_broadcast' value='true' vtype='boolean'
- debconf: name='btsync' question='btsync/log_size' value='1' vtype='string'
- debconf: name='btsync' question='btsync/folder_defaults-use_dht' value='true' vtype='boolean'
- service: name='btsync' state=restarted
Run Code Online (Sandbox Code Playgroud)
我可以像这样强制从 debconf 重新配置配置文件:
sudo dpkg-reconfigure -f noninteractive btsync
Run Code Online (Sandbox Code Playgroud)
我想我可以强制 Ansible 远程执行该语句,但肯定有更好、更可靠的方法来做到这一点?
这就是 debconf 的工作原理,如果您只是编辑文件,您也不会期望包自动重新配置。
你想要的是一个通知处理程序,它在播放结束时重新配置一次 dpkg。
- debconf:
name: 'btsync'
question: 'btsync/folder_defaults-use_dht'
value: 'true'
vtype: 'boolean'
notify: reconfigure btsync
并在您的处理程序文件中:
- name: reconfigure btsync
command: sudo dpkg-reconfigure -f noninteractive btsync
现在,如果 debconf 实际更改了任何内容(并且仅当 - 幂等时),则 btsync 将在您的所有任务运行后重新配置一次。