如何在ansible中替换特定行之后的所有字符串?

时间:2019-02-22 07:59:38

标签: replace ansible

我需要删除文件主机中的所有字符串,并在字符串“ 127.0.0.1 localhost”之后添加一行。

我尝试使用after替换模块,但是我不明白我需要在“ 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 :(得分:1)

使用template

会更好

例如模板hosts.j2

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

带有剧本

- 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