gpt4 book ai didi

Ansible lineinfile 重复行

转载 作者:行者123 更新时间:2023-12-03 01:08:20 27 4
gpt4 key购买 nike

我在/etc/foo.txt 中有一个简单的文件。该文件包含以下内容:

#bar

我有以下 ansible playbook 任务来取消注释上面的行:

- name: test lineinfile
lineinfile: backup=yes state=present dest=/etc/foo.txt
regexp='^#bar'
line='bar'

当我第一次运行 ansible-playbook 时,该行被取消注释,并且/etc/foo.txt 现在包含以下内容:

bar

但是,如果我再次运行 ansible-playbook,我会得到以下信息:

bar
bar

如果我再次运行它,那么/etc/foo.txt 文件将如下所示:

bar
bar
bar

如何避免这种重复行?我只想取消注释“#bar”并完成它。

最佳答案

如果您不想更改正则表达式,则需要添加backrefs=yes

- name: test lineinfile
lineinfile: backup=yes state=present dest=/etc/foo.txt
regexp='^#bar' backrefs=yes
line='bar'

这会改变 lineinfile 的行为来自:

 find
if found
replace line found
else
add line

至:

 find
if found
replace line found

换句话说,这使得操作具有幂等性。

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

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