本站介紹

本網站以 GitLab Pages / Hugo 建置。

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

小技巧 - 如何在迴圈裡註冊變數

單一個模組執行結果,可以使用 register 把結果放到變數裡。

如果這模組要搭配迴圈執行多次,又要把結果放到變數裡時,要怎麼寫呢?因為之前沒有用過,腦袋不禁打結了,心裡開始在盤算該怎麼處理比較好?但好在,早有人提出解答。

Install AWX on K8S(1)

說明

現在新版的 AWX 依照官方網站的說法,只能安裝在容器平台上了,接下來的幾篇文將說明一下如何安裝 AWX。

如何在 list 裡新增內容或合併兩個 list?

使用場景

寫作 Playbook 若遇到這兩種情況時,可以怎麼做呢?

  1. 新增內容到 list 裡
  2. 合併兩個 list

方法

方法相當簡單,使用 + 就可以。

新增內容到 list 時,可以這樣寫

- name: 配置 list
  set_fact:
    result_list: []

- name: 取得時間
  shell: date +%T
  register: shell_result

- name: 附加內容到 result_list
  set_fact:
    result_list: "{{ result_list + [ shell_result.stdout ]}}"
  
- name: 再次取得時間
  shell: sleep 3 && date +%T
  register: shell_result

- name: 附加內容到 result_list
  set_fact:
    result_list: "{{ result_list + [ shell_result.stdout ]}}"

若是要合併兩個 list,就是這樣寫

postgresql_user

使用 postgresql_xxx 的模組存取 Postgresql 資料庫時,一般會需要切換為 postgres 使用者來進行操作。在 Ansible 可以怎麼去做呢?

如何使用debug模組

debug 模組的用途,顧名思義就是除錯用的,一般用來在 playbook 裡列印變數內容,或是指定的訊息。在預設的情況下,模組只會有狀態的輸出, 像是 changed, ignored 等等的,使用 debug 模組,就可以印出變數內容或者是運算式的結果。基本上就把他想做是 bash 裡的 echo,或是 python 裡的 print。

分析任務執行時間

在遇到執行 playbook 花費較多時間的情況時,該怎麼去進行分析,找出執行效能瓶頸呢?

在 ansible-core 2.15 版以前,可以在 ansible.cfg 裡加上 callback_whitelist = profile_tasks 來進行分析。 在 ansible-core 2.15 版以後,就強制要使用新的設定 callback_enabled = profile_tasks 了。