用ansible替换文件中的行

时间:2018-11-29 11:44:12

标签: regex replace ansible

我正在创建一个Ansible剧本来对/etc/login.defs进行更改。

我无法使用模板,因为其他团队可能会对模板进行更改,我只想修改所需的内容。也许有一些模块可以处理login.defs,但是我不想依靠外部依赖关系,因为服务器没有向Internet开放。

我想修改PASS_MAX_DAYS参数,将其值设置为60。默认值是PASS_MAX_DAYS 99999,但我不想指定99999,如果发现PASS_MAX_DAYS,请替换整行,并在注释时取消注释。

我尝试了以下选项,但它不能代替该行

name: configure password length
 become: yes
 lineinfile:
  dest: /etc/login.defs
  regexp: ^#(?)PASS_MAX_DAYS.*
  line: "PASS_MAX_DAYS 60"

我做错什么了吗?

1 个答案:

答案 0 :(得分:1)

如果文件包含默认值,或者该值已被注释掉,这似乎可以按您的意愿工作。

  lineinfile:
    dest: /etc/login.defs
    regexp: '^[#]?[\s+]?PASS_MAX_DAYS\s+\d+'
    line: "PASS_MAX_DAYS   60"
    backup: true