我正在Ansible 1.6.6
配置我的机器。
我的剧本中有一个模板任务,可通过Jinja2模板创建目标文件:
tasks:
- template: src=somefile.j2 dest=/etc/somefile.conf
somefile.conf
如果它已经存在,我不想替换。Ansible有可能吗?如果是这样,怎么办?
我正在Ansible 1.6.6
配置我的机器。
我的剧本中有一个模板任务,可通过Jinja2模板创建目标文件:
tasks:
- template: src=somefile.j2 dest=/etc/somefile.conf
somefile.conf
如果它已经存在,我不想替换。Ansible有可能吗?如果是这样,怎么办?
Answers:
您可以只使用模板模块的force参数:
tasks:
- template: src=somefile.j2 dest=/etc/somefile.conf force=no
或命名任务;-)
tasks:
- name: Create file from template if it doesn't exist already.
template:
src: somefile.j2
dest:/etc/somefile.conf
force: no
从Ansible模板模块文档中:
强制:默认为是,当内容与源文件不同时,它将替换远程文件。如果否,则仅在目标不存在的情况下才传输文件。
使用其他答案stat
是因为在写入后添加了force参数。
您可以首先检查目标文件是否存在,然后根据其结果输出做出决定。
tasks:
- name: Check that the somefile.conf exists
stat:
path: /etc/somefile.conf
register: stat_result
- name: Copy the template, if it doesnt exist already
template:
src: somefile.j2
dest: /etc/somefile.conf
when: stat_result.stat.exists == False