2017-03-31 64 views
0

我有一個遠程計算機上的一個配置文件的格式爲:如何通過Ansible插入遠程計算機上文件內的變量?

key1={{key1}} 
key2={{key2}} 

我想用Ansible從group_vars值來填充鍵的值。

如何讀取此文件,插入內容並將文件寫回?

我不想使用模板,因爲不同的配置文件將有不同的鍵,我對模板的理解是我必須事先知道我需要哪些鍵。

回答

1

給你(但我不認爲這是你應該如何管理系統):

--- 
- hosts: target 
    vars: 
    key1: "value1" 
    key2: "value2" 
    tasks: 
    - command: cat /path/to/file 
     register: cat_file 
    - copy: 
     content: "{{ cat_file.stdout }}\n" 
     dest: /path/to/file 

有與尾部的換行符,這是不是在stdoutcat反映問題。我認爲它應該被添加。

或者:

--- 
- hosts: target 
    vars: 
    key1: "value1" 
    key2: "value2" 
    tasks: 
    - fetch: 
     src: /path/to/file 
     dest: ./tmp/file 
    - template: 
     src: ./tmp/file 
     dest: /path/to/file 
+0

與第一提出的解決方案,我的輸出文件有以下內容: – vovel

+0

鍵1 = {#KEY1#} \ n鍵2 = {#KEY2#}。爲什麼這些散列標記會放在那裏以及爲什麼插值不起作用? – vovel

+0

我怎麼知道?我並不坐在電腦前。我用Ansible 2.2.2進行了測試,並沒有逃脫字符串。如果它不適合你,你應該解釋爲什麼,而不是我。另外,我並不是特別喜歡這個,所以我提出了第二種更可靠的方法。 – techraf

相關問題