Ansible,尝试获取特定的正则表达式模式以与 lineinfile 模块一起使用

Ansible,尝试获取特定的正则表达式模式以与 lineinfile 模块一起使用

根据我上面的问题:“Ansible,尝试获取特定的正则表达式模式来与 lineinfile 模块一起使用”

本质上,我试图让它在一次游戏中工作,而不是在两次单独的游戏中工作,为此需要一个正则表达式。我尝试了一些可以与 sed 一起使用的变体,但它们似乎在这里不起作用。也许我疯了。我正在尝试做的示例如下:

  - name: Change file contents on CentOS and Redhat servers.
    lineinfile:
    dest: /etc/blah/randomfile
    regexp: '^ThisValueHere|^#ThisValueHere'
    line: 'ThisValueHere no'
    when: (ansible_distribution == "CentOS")  or (ansible_distribution == "RedHat")

(是的,忽略错误的 yml 语法,在实际的剧本中它是没问题的)

基本上我想匹配以以下内容开头的行:(ThisValueHere,OR,#ThisValueHere),然后用以下行替换其中任何一行:(ThisValueHere no)

然而,我似乎无法让它正常工作,也许我真的需要温习一下正则表达式的东西。无论如何,如果有人有任何建议,我们将不胜感激!

此外,如果有一个链接可以提供成功使用 ansible 正则表达式的“密钥”,那也会非常有帮助。

答案1

它与任务一起工作replacelineinfile不提供多行蟒蛇正则表达式。

- name: Change file contents on CentOS and Redhat servers. replace: dest: /etc/blah/randomfile regexp: '^(#?ThisValueHere)' replace: 'ThisValueHere no' when: (ansible_distribution == "CentOS") or (ansible_distribution == "RedHat")

相关内容