我想知道如何最好地在Ansible中完成这个(希望)简单的任务:
在剧本中,第一次安装dnsmasq apt软件包时,请先将/etc/dnsmasq.conf备份到/etc/dnsmasq.conf.orig,然后再执行其他任何任务。
类似于下面的代码吗?
- name: 'Ensure dnsmasq package is installed'
apt:
name: dnsmasq
state: present
notify: Backup original /etc/dnsmasq.conf file
- name: Backup original /etc/dnsmasq.conf file
copy:
remote_src: yes
src: /etc/dnsmasq.conf
dest: /etc/dnsmasq.conf.orig
when: ONLY IF WE JUST INSTALLED THE PACKAGE ABOVE
答案 0 :(得分:1)
复制模块中的
force: no
选项仅在文件不存在时复制文件(即您从未安装并复制原始文件)。 –昨天的Zeitounator
谢谢,伙计们,使用'力'是成功的诀窍,是最简单的方法!
(将其创建为答案,因为我无法将评论标记为答案)。
答案 1 :(得分:0)
为此使用dpkg-divert
。它允许您将发行版本的配置文件重定向到其他位置(例如,将/etc/dnsmasq.conf
重定向到/etc/dnsmasq.conf.dist
),因此您的配置文件将永远不会被发行版本覆盖,并且发行文件(副本)将保存到单独的文件(并将与软件包一起更新)。有关可用选项,请参见man dpkg-dist
。