Ansible lineinfile注释和非注释行

时间:2016-11-25 04:57:16

标签: ansible ansible-playbook

我有一个包含两行的文件:

#Level menu
Level menu

我想检查一行Level只有menu。如果不是这样,则替换该行,因此我对lineinfile任务使用了以下参数:

dest=/var/apache/test.conf
regexp="^\s*#*?\s*Level"
line="Level menu"

当我运行剧本时,文件中有两行:

Level menu
Level menu

因此出现了重复的行。

案例1:

#Level menu

情况2:

#Level menu
Level menu

情形3:

Level submenu

在所有情况下都应回答Level menu

我想首先检查没有评论行,如果没有,那么检查注释行或是否还有其他解决方案?

1 个答案:

答案 0 :(得分:1)

如果我正确地阅读了您的要求,那么您正在寻找一些简单的内容:

- lineinfile:
    dest: /var/apache/test.conf
    regexp: ^Level
    line: Level menu

- lineinfile:
    dest: /var/apache/test.conf
    regexp: ^#Level
    state: absent

示例1:

  • 在:

    #Level menu
    Level menu
    
  • 后:

    Level menu
    

示例2:

  • 在:

    #Level menu
    Level menu and something else
    
  • 后:

    Level menu