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

Ubu*_*ser 8 ansible

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

[public]
  path = /opt/samba/public
  guest ok = yes
  browsable = yes
  writable = yes
  read only = no
Run Code Online (Sandbox Code Playgroud)

Blockinfile 模块将无法工作,因为没有标记。Lineinfile 也会有问题,因为有些行是其他部分通用的。例如

 browsable = yes
 writable = yes
Run Code Online (Sandbox Code Playgroud)

如何使用ansible删除这些行?

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

Kon*_*rov 8

您可以使用替换模块:

- replace:
    path: /etc/smb.conf
    regexp: '^\[public\][^[]+'
    replace: ''
    backup: yes
Run Code Online (Sandbox Code Playgroud)

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


小智 6

Ansible 具有本机ini 文件支持,这是完成此任务的更简洁的方法。

- name: remove public block
  ini_file:
    path: /etc/smb.conf
    section: public
    state: absent
Run Code Online (Sandbox Code Playgroud)