如果文件存在,请勿运行ansible命令

时间:2020-05-19 13:26:53

标签: ansible

我试图做一个剧本,仅在文件不存在时才在其中运行命令。我的挑战是文件名的一部分是随机创建的。我尝试过类似的事情:

- name: Generate file
  command: <command> "{{ item.name }}"
  chdir: "{{ target_zone_dir }}"
  creates:
    - "{{ target_zone_dir }}/K{{ item.name }}.+[0-9][0-9][0-9]+[0-9][0-9][0-9][0-9][0-9].key"
    - "{{ target_zone_dir }}/K{{ item.name }}.+[0-9][0-9][0-9]+[0-9][0-9][0-9][0-9][0-9].private"
  check_mode: no
  with_items:
    - "{{ target_zone_domains }}"

但是即使存在其他文件,我的文件也已生成。

1 个答案:

答案 0 :(得分:1)

CiroRa所说的大部分都是正确的,区别在于它不必像零文件一样黑白。

- command: /bin/ls -1
  args:
    chdir: "{{ target_zone_dir }}"
  register: target_files
- when: not target_files.stdout is search("K"+item.name+".+[0-9]*.(key|private)")
  with_items: "{{ target_zone_domains }}"

我敢肯定,有更多的“ ansible-y”方式可以完成第一个任务,但是你会明白的