首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用lineinfile函数和regexp向带有Ansible的行添加一个参数

用lineinfile函数和regexp向带有Ansible的行添加一个参数
EN

Stack Overflow用户
提问于 2018-10-28 14:05:44
回答 2查看 411关注 0票数 0

我想要添加参数

-原木-选择最大尺寸=5m

到文件中的现有行,首先要检查是否已经设置了此参数:

代码语言:javascript
复制
regexp: "^OPTIONS=(?!.*?(--log-opt max-size).*)"

我用该teststring进行了测试,在3种不同的在线测试器上进行了测试,它们根据需要进行匹配:

代码语言:javascript
复制
OPTIONS='--log-opt max-size=5M --selinux-enabled --signature-verification=False'

这是完整的剧本:

代码语言:javascript
复制
  - name: "adding limiting parameter for container log-sizes"
    lineinfile:
      path: /etc/sysconfig/docker
      backrefs: true
      state: present
      regexp: "^OPTIONS=(?!.*?(--log-opt max-size).*)"
      line: "OPTIONS='--log-opt max-size=5M \\1'"

Ansible断线有一个例外,用Ansible 2.6.5和2.7猜测它是一个synthax而不是二进制问题。已经尝试了这么久

还希望在regexp中签入OPTIONS=之后的引号(应该是OPTIONS='any ')

有什么想法吗?提前感谢

EN

回答 2

Stack Overflow用户

发布于 2018-10-28 14:15:20

(?<=')[^']+

此模式将获得OPTIONS=上引号之后的所有行。

  • (?<='):在找到它之后搜索它并对它进行定位。
  • ^‘+:将所有事物匹配一次至无限次,除非找到“。

如果您想要检查这一行,可以尝试另一个正则表达式,比如/-log max-size=/,测试从上面的匹配得到的输出行。

票数 0
EN

Stack Overflow用户

发布于 2018-10-29 23:51:44

发现,第一组不匹配,例外就是因为这一点。也许这并不是最聪明的方法,但它可以解决这个问题,并将regex更新为:^OPTIONS='(?!.*?(--log-opt max-size))(.*)还必须调整替换行:OPTIONS='--log-opt max-size=5M\\2

现在完成剧本部分:

- name: "adding limiting parameter for container log-sizes" lineinfile: path: /etc/sysconfig/docker backrefs: true state: present regexp: "^OPTIONS='(?!.*?(--log-opt max-size))(.*)" line: "OPTIONS='--log-opt max-size=5M \\2"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53032368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档