2017-01-09 134 views
2

我想使用blockinfile模塊在文件中插入一些行。 任務是這樣的:Ansible blockinfile模塊冪等?

name: add some lines 
    become: true 
    blockinfile: 
     dest: /etc/sysctl.conf 
     block: | 
     mykey1={{ kernvars['my_value1'] }} 
     mykey2={{ kernvars['my_value2'] }} 
     mykey3={{ kernvars['my_value3'] }} 

是否有該模塊的方式(或相關的圖案)來檢查和插入特定的線路,只有當他們是不是已經在那裏?

Ubuntu 16.04.01

回答

4

是使用ansible 2.0.0.2blockinfile模塊默認爲冪等。

除了您指定的內容之外,它還添加了兩行:位於塊的開頭和塊的末尾。在後續運行中,它會檢查這兩個標記之間的內容,如果內容沒有更改,它將返回「ok」狀態並且不會再次插入它。

這些行應該被插入到配置文件中註釋,所以這取決於你所使用的確切配置文件格式,你可以自定義用於標記與參數評論(默認情況下它是#)的字符。

如果您在同一個目標文件上使用多個blockinfile任務,您應該爲每個任務額外添加一個唯一字符串(同樣在參數中),以便Ansible可以區分它們。

在Ansible文獻查看更多about blockinfile

+0

有時很傷心,我只能投一次答案。 @techraf非常感謝您對文檔中缺少的明確聲明。 – Aleksandar