Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible 仅当文件不存在时才允许模块创建文件,并写入一些数据_Ansible - Fatal编程技术网

Ansible 仅当文件不存在时才允许模块创建文件,并写入一些数据

Ansible 仅当文件不存在时才允许模块创建文件,并写入一些数据,ansible,Ansible,我需要使用Anisable模块检查文件是否存在,如果不存在,则创建它并向其中写入一些数据 如果文件存在,那么检查我正在尝试写入的内容是否存在于该文件中 如果内容不存在,请将内容写入其中。 如果内容存在,则不执行任何操作 我下面的剧本不起作用。 有什么建议吗 - hosts: all tasks: - name: check for file stat: path: "{{item}}" register: File_status with_item

我需要使用Anisable模块检查文件是否存在,如果不存在,则创建它并向其中写入一些数据

如果文件存在,那么检查我正在尝试写入的内容是否存在于该文件中

如果内容不存在,请将内容写入其中。
如果内容存在,则不执行任何操作

我下面的剧本不起作用。
有什么建议吗

- hosts: all
    tasks:
  - name: check for file
    stat:
      path: "{{item}}"
    register: File_status
    with_items:
      - /etc/x.conf
      - /etc/y.conf
  - name: Create file
    file:
      path: "{{item}}"
      state: touch
    with_items:
      - /etc/x.conf
      - /etc/y.conf
    when: not File_status.stat.exists
  - name: add content
    blockinfile:
      path: /etc/x.conf
      insertafter:EOF
      block: |
        mydata=something
您能帮助我了解可以实现所需输出的模块和条件吗?

以下内容将:

  • 如果文件不存在,则创建该文件,并报告
    更改的
  • 如果该块不存在,则在文件末尾添加该块,并报告
    已更改的
    ,即。
    # BEGIN ANSIBLE MANAGED BLOCK
    mydata=something
    mydata2=somethingelse
    # END ANSIBLE MANAGED BLOCK
    
  • 如果内容发生更改,则在文件中的任何位置更新块,并报告
    已更改
    (如果在同一文件中有多个块要管理,请参阅,如果更改,请不要忘记其中的
    {mark}
  • 如果块在文件和报告中的任何位置是最新的,则不执行任何操作
    ok
请阅读更多信息

---
-名称:blockinfle示例
主机:本地主机
收集事实:错误
任务:
-名称:如果需要,更新/创建块。如果不存在,则创建文件
区块填充:
路径:/tmp/testfile.conf
区块:|
我的数据=某物
mydata2=somethingelse
创建:true

以下是实现您的需求的可能方法

- hosts: localhost
  tasks:
  - name: Create file
    copy:
      content: ""
      dest: "{{item}}"
      force: no
    with_items:
      - /etc/x.conf
      - /etc/y.conf

  - name: add content
    blockinfile:
      path: "{{ item.file_name }}"
      insertafter: EOF
      block: |
        "{{ item.content }}"
    loop:
      - { file_name: '/etc/x.conf', content: 'mydata=something' }
      - { file_name: '/etc/y.conf', content: 'mydata=hey something' }

如果您添加@Zeitounator,那么最后一个任务就足够了,因为我没有找到您。我应该在哪里使用create?