gpt4 book ai didi

Ansible lineinfile - 修改一行

转载 作者:行者123 更新时间:2023-12-02 15:07:01 29 4
gpt4 key购买 nike

我是 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 (带有前导空格)。如果没有双引号,它将不匹配。并且它尝试实现幂等:与 GRUB_CMDLINE_LINUX= 之后已有 audit(带有前导空格)的行不匹配。

我建议使用类似 regex101 的网站首先测试您的正则表达式(那里还有替换模式)。
当您对结果感到满意时,继续执行 Ansible 任务。

关于Ansible lineinfile - 修改一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39795873/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com