2017-10-13 18 views
0

我有一個遠程服務器上有一個文件。在該文件中的一行如下:Ansible:如何用遠程文件中某行的模式/子字符串的值填充變量?

authorizationToken=<hash or empty string> 

我想設置一個變量的作用後等號該行上簽字,如果有什麼(這可能是一個哈希任何的是價值,或它可能是一個空字符串)。

做到這一點最簡單的方法是什麼?

+0

DUP https://stackoverflow.com/a/44260130/2795592? –

回答

1

康斯坦丁使用自定義事實鏈接你的解決方案,但你也可以在相同的值用一個簡單的任務比如找到:

- name: get authorizationToken 
    command: > 
    awk -F= '$1 == "authorizationToken" {print $2}' /path/to/configfile 
    register: token 

現在值在後續任務token.stdout可用。

+0

哈,我們得出了同樣的結論。 :) – iLikeDirt

+0

嗯,當然,雖然我在一個小時前發佈了這個。既然它看起來像你採用了這個解決方案,也許你想把它標記爲公認的答案? – larsks

0

嘗試了一段時間做這個「正確」的方式,在結束後阻力最小的路徑是使用shell腳本:

- name: Record autorization Token 
    shell: "cat {{ buildagent_dir }}/conf/buildAgent.properties 2>/dev/null | grep authorizationToken | cut -d '=' -f 2" 
    register: token 
+0

請注意,在任何情況下,您都不需要'cat',並且通過使用'awk'''''''' grep'和'cut'',因爲您現在可以替換爲單個命令,所以您可以替換用'command'命令'shell'。 – larsks

+0

我知道這並不是最有效的方法,但我通常更喜歡在編寫shell命令時更加明確和可讀性,並且我發現awk語法更難以一目瞭然地解析。也許我很奇怪。 – iLikeDirt

相關問題