ansible

為 List 裡的每個元素加字串

想為 List 裡的每個元素加字串,也就是原本是這樣的 List

my_list:
  - apple
  - banana
  - watermelon

要讓輸出結果變為

new_list:
  - "fruit: apple"
  - "fruit: banana"
  - "fruit: watermelon"

那該怎麼做呢?有好幾種方式可以作

寫 Ansible playbook 來作FTP上傳

要作檔案的複製,可以用 copy ,這會走 SSH 協定;網站檔案上傳,可以用 uri 模組,參數帶入 POST method ,就可以上傳檔案。

那 FTP 檔案上傳,可以怎麼做呢?

解壓縮只取第二層目錄以下的檔案與目錄

Angular/Vue 這類的前端框架,在執行 npm run build 建置以後,會產生 dist 的資料夾,裏面就是要佈署的檔案。一般會使用 tar czf dist.tar.gz dist 將該資料夾裡的檔案打包為 tarball。

使用 Ansible 佈署時,需要使用 unarchive 模組解壓縮,這時會直接解壓縮出 dist 目錄。

通常解法會有兩種,第一種是在打包時,先進入 dist 資料夾,再進行打包。

第二種方法就是本文要介紹的小技巧。

等待 API 回應完成

情境是這樣的,Playbook 在送出 HTTP 請求後,需要送出一個 HTTP 請求去持續詢問是否完成,如果還沒完成,就等待一段時間後,再去詢問,那這個情境下可以怎麼做呢?

使用ansible-Vault加密字串

在撰寫 Playbook 時,難免會用到敏感性的資訊,Ansible 提供了 ansible-vault 這個工具,可以針對檔案或是字串來做加密。

如果變數內容需要加密的話,該怎麼使用呢?

Script

以前我不知道有 script 模組,所以要執行自己的腳本,都是先把腳本複製過去,再用 shell/command 去執行。