我是Ansible的新手,正在尝试修改/etc/default/grub
中的一行以启用审核。
我需要在看起来像这样的一行的引号中添加audit=1
:
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap biosdevname=0 net.ifnames=0 rhgb quiet net.ifnames=0"
到目前为止,我设法删除了这一行,只剩下
net.ifnames=0, audit=1
当我使用类似
lineinfile:
state: present
dest: /etc/default/grub
backrefs: yes
regexp: "net.ifnames=0"
line: "\1 audit=1"
能做到吗?
最佳答案
您可以尝试以下方法:
- lineinfile:
state: present
dest: /etc/default/grub
backrefs: yes
regexp: '^(GRUB_CMDLINE_LINUX=(?!.* audit)\"[^\"]+)(\".*)'
line: '\1 audit=1\2'
这将在闭双引号之前添加
audit=1
(带前导空格)。没有双引号,它将不匹配。而且它试图成为幂等的:与
audit
之后已经有GRUB_CMDLINE_LINUX=
(带有前导空格)的行不匹配。我建议先使用regex101之类的网站来测试您的正则表达式(那里也有替换模式)。
当您对结果感到满意时,请继续执行Ansible任务。
关于Ansible lineinfile-修改一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39795873/