пытается добавить IP-адрес в конец списка в Ansible - PullRequest
0 голосов
/ 11 июля 2019

Я написал книгу, в которой будет добавлен новый IP-адрес в список IP-адресов. Это код

- name: adding IP to faile2ban
  lineinfile:
        path: /home/ec2-user/test.conf
        line: "{{ new_server_ip }}"
        insertafter: "^#?ip_list"

https://github.com/shettypriy/ansible/blob/master/addingIPto%20the%20end. IP добавляется в файл, но не добавляется в конце последнего добавленного IP

У меня есть файл test.conf, в который добавляются IP-адреса. Я хочу добавить новый IP после последнего обновленного IP Пример: ниже приведен пример содержимого файла test.conf

ip_list = xx.xx.xx.xx yy.yy.yy.zz aa.aa.aa.aa

Мой желаемый вывод должен быть добавлен 'new_server_ip' после aa.aa.aa.aa

Ответы [ 2 ]

1 голос
/ 12 июля 2019

Задание, приведенное ниже, выполняет свою работу и является идемпотентным

"Модули должны быть идемпотентными, то есть запускать модуль несколько раз в последовательностидолжен иметь тот же эффект, что и запускать его только один раз. "

- lineinfile:
    dest: /home/ec2-user/test.conf
    regexp: '(?!.*{{ new_server_ip }}.*)^(ip_list.*)$'
    line: '\1 {{ new_server_ip }}'
    backrefs: yes

регулярное выражение first смотреть вперед и соответствовать строке только если new_server_ip отсутствует.

1 голос
/ 11 июля 2019

Полагаю, вам хорошо подойдет следующее:

- name: adding IP to faile2ban
  lineinfile:
    dest: /home/ec2-user/test.conf
    state: present
    regexp: "^(#?ip_list(.*)$)"
    backrefs: yes
    line: '\1 {{ new_server_ip }}'

Таким образом, дело в том, что вы находите строку, начинающуюся с 'ip_list', выбираете целую строку с помощью регулярного выражения, а затем снова создаете обратную защиту выбранной строки в вашей строке перед new_server_ip.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...