【问题标题】:add multiple lines to multiple files in a directory using ansible使用ansible向目录中的多个文件添加多行
【发布时间】:2016-10-19 17:31:12
【问题描述】:

我想在一个目录中的多个 .conf 文件中添加一些行,例如/etc/abc/xabc/.

我想添加的两行如下:

Composite=1
Extension=1

我希望这些行出现在包含 [protocol] 的行之后。

我该怎么做?

我不知道如何继续这个;请参阅下面的尝试 - 即使我知道这是错误的:

- name: add line

- lineinfile:
    dest: "{{ item }}"
    regexp: "{{ item.regexp }}"
    line: "{{ item.line }}"
    insertafter: [Protocol]
  with_items: xxxxxx

我假设我还必须注册 (/etc/abc/xabc/) 目录的输出?

【问题讨论】:

    标签: ansible insertafter


    【解决方案1】:

    首先,看起来你想编辑 ini 文件,所以ini_file 模块更合适:

    - ini_file:
        dest: /path/to/destination/file.ini
        section: Protocol
        option: "{{ item.option }}"
        value: "{{ item.value }}"
      with_items:
        - { option: Composite, value: 1 }
        - { option: Extension, value: 1 }
    

    其次,您似乎想使用嵌套循环。为清楚起见,我将在目标目录的 fileglob 的外部循环中包含一个文件,并在包含的文件中进行配置。例如inner_loop.yml:

    - ini_file:
        dest: "{{ destination_file }}"
        section: Protocol
        option: "{{ item.option }}"
        value: "{{ item.value }}"
      with_items:
        - { option: Composite, value: 1 }
        - { option: Extension, value: 1 }
    

    和外部:

    - include: inner_loop.yml
      with_fileglob:
        - /etc/abc/xabc/*
      loop_control:
        loop_var: destination_file
    

    This answer 提出了另一种可能的解决方案,用于将循环项与 glob 相结合。

    【讨论】:

      猜你喜欢
      • 2022-08-24
      • 1970-01-01
      • 2016-05-06
      • 2020-04-24
      • 2017-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-08
      相关资源
      最近更新 更多