簡體   English   中英

ansible劇本在第二次運行中查找/替換很奇怪

[英]ansible playbook find/replace acting weird on second run

我有在sshd_config中找到2行並進行更改的任務。 這在第一次運行時效果很好,它將src線替換為dest線。 但是,如果我第二次運行它,則在文件中的兩行都正確之后,它將在文件底部追加兩行。

我嘗試添加狀態:存在,但沒有改變行為。

  - name: Configuring sshd_config
    lineinfile:
      path: /etc/ssh/sshd_config
      regexp: "{{ item.src }}"
      state: present
      line: "{{ item.dest }}"
    with_items:
      - { src: "#PrintLastLog yes", dest: "PrintLastLog no" }
      - { src: "#Banner none", dest: "Banner /etc/issue.net" }

我期望它與src行不匹配,並且不做任何更改。

您得到的是確切的預期行為。 在使用state: present時引用有關regexp參數的文檔

修改線時,正則表達式通常應匹配線的初始狀態以及被線替換后的狀態,以確保冪等。

如下修改您的任務即可完成這項工作。

  - name: Configuring sshd_config
    lineinfile:
      path: /etc/ssh/sshd_config
      regexp: "{{ item.src }}"
      state: present
      line: "{{ item.dest }}"
    with_items:
      - { src: "^(# *)?PrintLastLog", dest: "PrintLastLog no" }
      - { src: "^(# *)?Banner", dest: "Banner /etc/issue.net" }

這將與注釋行(哈希后面帶有可選的空格)或新修改的行匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM