仅在apt任务第一次安装软件包时才复制文件

时间:2019-06-12 11:07:39

标签: ansible

我想知道如何最好地在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

2 个答案:

答案 0 :(得分:1)

  复制模块中的

force: no选项仅在文件不存在时复制文件(即您从未安装并复制原始文件)。 –昨天的Zeitounator

谢谢,伙计们,使用'力'是成功的诀窍,是最简单的方法!

(将其创建为答案,因为我无法将评论标记为答案)。

答案 1 :(得分:0)

为此使用dpkg-divert。它允许您将发行版本的配置文件重定向到其他位置(例如,将/etc/dnsmasq.conf重定向到/etc/dnsmasq.conf.dist),因此您的配置文件将永远不会被发行版本覆盖,并且发行文件(副本)将保存到单独的文件(并将与软件包一起更新)。有关可用选项,请参见man dpkg-dist