добавление нескольких строк к нескольким файлам в каталоге с помощью ansible

#ansible #insertafter

#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:

Во-первых, похоже, что вы хотите отредактировать 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
  

Этот ответ предлагает другое возможное решение для объединения цикла над элементами с циклом над глобусом.