Как заменить все строки после определенной строки в ansible? - PullRequest
0 голосов
/ 22 февраля 2019

Мне нужно удалить все строки в файловых хостах и ​​добавить одну строку после строки "127.0.0.1 localhost".

Я пытался использовать замену модуля на after, но я не понимаю, что мне нужноположить "после":

- name: Add new hostname after 127.0.0.1 localhost and remove old lines
  replace:
    path: /etc/hosts
    regexp: '^(\S+)(\s+)localhost\.domain\.com(\s+.*)?$'
    replace: '{{ new_hostname }}'
    after: '' 

1 Ответ

0 голосов
/ 22 февраля 2019

Вам будет лучше с шаблоном

Например, шаблон hosts.j2

127.0.0.1                localhost
{% for item in my_hosts %}
{{ item }}
{% endfor %}

с playbook

- hosts: localhost
  vars:
    my_hosts:
      - 10.1.0.1 ac1.example.com ac1
      - 10.1.0.2 ac2.example.com ac2
      - 10.1.0.3 ac3.example.com ac3
  tasks:
    - template:
        src: hosts.j2
        dest: /etc/hosts

дает

> cat /etc/hosts
127.0.0.1                localhost
10.1.0.1 ac1.example.com ac1
10.1.0.2 ac2.example.com ac2
10.1.0.3 ac3.example.com ac3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...