使用ansible从配置文件中删除文本块

时间:2018-03-01 07:56:05

标签: ansible

我正在尝试从samba配置文件smb.conf中删除以下部分。

[public]
  path = /opt/samba/public
  guest ok = yes
  browsable = yes
  writable = yes
  read only = no

Blockinfile模块无法正常工作,因为没有标记。 Lineinfile也会有问题,因为有些行是其他部分共有的。 e.g

 browsable = yes
 writable = yes

如何使用ansible删除这些行?

PS:无法用新的配置文件替换配置文件,因为每个服务器都有一个映射到它的唯一用户(在运行批处理作业时不理想)

3 个答案:

答案 0 :(得分:4)

您可以使用replace模块:

- replace:
    path: /etc/smb.conf
    regexp: '^\[public\][^[]+'
    replace: ''
    backup: yes

这应删除[public][EOF之间的所有内容。

答案 1 :(得分:1)

以下是一种将删除apache配置文件中的整个标签的标签:

replace:
path: "{{my_path}}"
regexp: '^<Directory /var/www/>(.*\n)*</Directory>$'
replace: ''

答案 2 :(得分:0)

Ansible具有原生的ini文件支持,这是一种更清晰的方法来实现这一目标。

    - name: remove public block
      ini_file:
        path: /etc/smb.conf
        section: public
        state: absent