Как раскомментировать более одной строки в Ansible? - PullRequest
1 голос
/ 07 ноября 2019

Я хочу снять неудобства с этих строк, но оставив комментарий "privides UDP / TCP ...":

# provides UDP syslog reception
# module(load="imudp")
# input(type="imudp" port="514")

# provides TCP syslog reception
# module(load="imudp")
# input(type="imudp" port="514")

Это моя текущая задача для раскомментирования одной строки:

- name: Change rsyslog configuration
  lineinfile:
    dest: /etc/rsyslog.conf
    regex: '^module(load="imudp")'
    line: 'module(load="imudp")'

Но как я могу расширить эту задачу, чтобы раскомментировать больше строк? Я думаю, что это можно сделать, добавив переменные в regex и проанализировав значения, используя цикл with_items , но не знаю, как этого добиться. Как лучше всего это делать?

1 Ответ

1 голос
/ 07 ноября 2019

Модуль lineinfile поместит строку в файл, даже если regex не соответствует.

Задание ниже

  tasks:
    - lineinfile:
        # firstmatch: true
        dest: rsyslog.conf
        regex: '^#\s*{{ item.regex }}(.*)$'
        line: '{{ item.line }}'
      loop:
        - regex: 'module\(load="imudp"\)'
          line: 'module(load="imudp")'
        - regex: 'input\(type="imudp" port="514"\)'
          line: 'input(type="imudp" port="514")'

дает

# provides UDP syslog reception
# module(load="imudp")
# input(type="imudp" port="514")

# provides TCP syslog reception
module(load="imudp")
input(type="imudp" port="514")

и с «firstmatch: true» дает

# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")

# provides TCP syslog reception
# module(load="imudp")
# input(type="imudp" port="514")

Модуль replace заменит все экземплярышаблон в файле

- replace:
    dest: rsyslog.conf
    regexp: '^#\s*{{ item.regex }}(.*)$'
    replace: '{{ item.replace }}'
  loop:
    - regex: 'module\(load="imudp"\)'
      replace: 'module(load="imudp")'
    - regex: 'input\(type="imudp" port="514"\)'
      replace: 'input(type="imudp" port="514")'

дает

# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")

# provides TCP syslog reception
module(load="imudp")
input(type="imudp" port="514")
...