gpt4 book ai didi

ansible - 文件行 : Don't insert lines if they already exist

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

它正在创建一个新文件并向其中添加内容。如果第二次重新运行 ansible,文本内容将再次应用到行下方,但会覆盖最后一行 bantime = 86400

我需要它做的是,如果文本已经应用,则不要再次添加它。我假设我的 regexp 设置错误。

- name: add custom settings 
lineinfile: dest=/etc/fail2ban/jail.local regexp='^' line='maxretry = 3\nfindtime = 10800\nbantime = 86400' create=yes state=present backrefs=yes

最佳答案

来自lineinfile examples :

# Add a line to a file if it does not exist, without passing regexp
- lineinfile: dest=/tmp/testfile line="192.168.1.99 foo.lab.net foo"

带有 \n 的行不是一行,它们是多行,并且它们在下次运行时无法作为一行进行匹配。您应该将每一行添加为单独的任务:

- name: add maxretry setting
lineinfile: dest=/etc/fail2ban/jail.local line='maxretry = 3' create=yes

- name: add findtime setting
lineinfile: dest=/etc/fail2ban/jail.local line='findtime = 10800' create=yes

- name: add bantime setting
lineinfile: dest=/etc/fail2ban/jail.local line='bantime = 86400' create=yes

同时删除 regexpbackerefs 设置,因为不需要它们,并且 state ,因为 present 是默认值。

<小时/>

但是,最好也传递带设置的正则表达式和不带值的名称。因此,如果您更改设置值,它将替换文件中的字符串,而不是添加新字符串,例如:

- name: add maxretry setting
lineinfile: dest=/etc/fail2ban/jail.local regexp='^maxretry = ' line='maxretry = 3' create=yes

关于ansible - 文件行 : Don't insert lines if they already exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31936611/

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