[英]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.