小技巧 - 處理 JSON 檔案
現在有不少服務都是使用 JSON 作為設定檔,所以常常會需要讀取 JSON 格式的設定檔,修改內容值後再寫回,那麼用 Ansible 的話,該怎麼做呢?
現在有不少服務都是使用 JSON 作為設定檔,所以常常會需要讀取 JSON 格式的設定檔,修改內容值後再寫回,那麼用 Ansible 的話,該怎麼做呢?
copy 可以把檔案複製到連線的主機去。
Inventory 就是主機清單,裏面描述主機的連線資訊,一般文件常用的是 ini 格式。
但在 DO447 的第二章有提到 inventory 格式的轉換,我自己是比較熟悉 ini 格式的 inventory,所以對於要轉換為 YAML 格式的地方就覺得比較卡頓。
那該怎麼克服呢?我臨機一動,想到 ansible 有提供 ansible-inventory 指令,用這個就可以解決我的問題。
這是我在前兩天在寫 DO447 練習題時所發現的一個小技巧,覺得非常實用,特別是在無法上網查詢的時候。
ansible.cfg 是 ansible 預設會去讀取的設定檔,裏面可以設定很多,例如:
lookup 是很方便的查詢函式,第一個參數是 ‘password’ 的時候,可以用來產生密碼。
Inventory 就是主機清單,Ansible 要連到哪些主機做操作,就是依據這個檔案。
Inventory 可以使用很多種格式,每種格式的處理都依靠 Plugin,這可以在 ansible.cfg 裡去啟用跟關閉。
shell 是用來執行指令用的,等等,command 不也一樣嗎?。
對,其實大同小異,但有個很重要的差別,就是 pipe 或重導向 。 command 只能執行單一個指令,若需要作 pipe 串接或重導向時,就需要用到 shell 了。
lookup 是很方便的查詢函式,第一個參數是 ’template’ 的時候,可以把範本檔案放到第二個參數,然後 lookup 會把範本內容替換變數以後,再傳回字串。
command 是用來執行指令用的。
lookup 函式的第一個參數可以填哪些項目,又能拿到什麼樣的資訊呢?你可以參考下面的一覽表。