Пытаюсь добавить IP-адрес в конец списка в Ansible

Я написал playbook, который будет добавлять новый 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

пожалуйста, помогите мне с приведенным выше кодом

user11549576 11.07.2019 09:31
Введение в Ansible Roles
Введение в Ansible Roles
Ansible - это отличный инструмент управления конфигурацией, который можно использовать для автоматизации настройки или развертывания на большом...
0
1
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я думаю, что следующее должно работать для вас хорошо:

- 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.

@ user11549576 Рад это слышать! Тогда, пожалуйста, примите мое решение как «ответ» :)

Anton 11.07.2019 10:15

Приведенная ниже задача выполняет эту работу и является идемпотент.

"Modules should be idempotent, that is, running a module multiple times in a sequence should have the same effect as running it just once."

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

регулярное выражение первый смотреть вперед и соответствовать строке, только если новый_сервер_ip отсутствует.

Другие вопросы по теме