使用ansible将多行添加到目录中的多个文件

时间:2016-10-19 17:31:13

标签: ansible insertafter

我想在目录中为多个.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/)目录的输出?

1 个答案:

答案 0 :(得分:2)

首先,您似乎想要编辑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提出了另一种可能的解决方案,用于将循环项与循环遍历结合。