#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
Этот ответ предлагает другое возможное решение для объединения цикла над элементами с циклом над глобусом.