本站介紹

本網站以 GitLab Pages / Hugo 建置。

介紹 Ansible 的使用與心得分享。

Inventory - Overview

Inventory 就是主機清單,Ansible 要連到哪些主機做操作,就是依據這個檔案。

Inventory 可以使用很多種格式,每種格式的處理都依靠 Plugin,這可以在 ansible.cfg 裡去啟用跟關閉。

ansible.builtin.shell

shell 是用來執行指令用的,等等,command 不也一樣嗎?。

對,其實大同小異,但有個很重要的差別,就是 pipe 或重導向 。 command 只能執行單一個指令,若需要作 pipe 串接或重導向時,就需要用到 shell 了。

lookup - template

lookup 是很方便的查詢函式,第一個參數是 ’template’ 的時候,可以把範本檔案放到第二個參數,然後 lookup 會把範本內容替換變數以後,再傳回字串。

lookup 一覽

lookup 函式的第一個參數可以填哪些項目,又能拿到什麼樣的資訊呢?你可以參考下面的一覽表。

祕訣 - 關於 lookup

你可以使用 ansible-doc -t lookup -l 列出所有可用的 lookup plugins。

找到以後,就可以用 ansible-doc -t lookup <the_plugin> 來看它的用法。

lookup - dig

lookup 是很方便的查詢函式,第一個參數是 ‘dig’ 的時候,會拿第二個參數來做 DNS 查詢。

ansible.builtin.assert

ansible.builtin.assert 這個模組可以用來檢查是否滿足指定的條件,不滿足的時候,會發生錯誤並離開。

用法很簡單,在 that 裡指定條件式即可。

Jinja2 filter - subelements

subelements 這個 filter 是取出 list 裡每個項目裡的 attribute ,然後轉為每個元素為 list 的 list。 xxx 很繞口,對吧,這個不太容易理解,用例子比較好講。

從下面的變數定義可以看到,users 是一個 list,裏面有兩個項目,每個項目代表一個 user