文章目錄
使用 Container 做為 Ansible Host
過去在開發 ansible 腳本時為了做完整測試,都是在雲端建立 VM 來進行測試,但是這樣的方式有幾個缺點:
- 建立 VM 需要花費時間
- VM 的建立沒有額外的 source control,不易確保每次的環境都是一致的
- VM 防火牆需要單獨 allow 特定 ip,但 ip 是會變動的
- 網路連線會有延遲
- 需要額外的費用
因此打算 container 來取代 VM 來當作 ansible host,這樣可以解決上述的問題,並且可以更快速的進行測試,其實過去也嘗試過,但可能是因為關鍵字下錯,所以找不到相關的資料,所以今天就來快速記錄一下。
今天會以為 RabbitMQ 建立 user 為範例
基本環境說明
- macOS Ventura 13.3
- OrbStack 1.0.1(16297)
- docker images
- rabbitmq:3.12.7-management
- yowko/rabbitmq:3.12.7-management
- ansible [core 2.15.5]
- python version = 3.11.6 (main, Oct 2 2023, 20:46:14) Clang 14.0.3 (clang-1403.0.22.14.1)
- jinja version = 3.1.2
RabbitMQ cluster docker compose
詳細內容可以參考過去筆記 透過 docker compose 啟動 RabbitMQ cluster
使用方式
取得 container name
如果使用範例的 docker compose,可以直接使用
rabbitmq-1
、rabbitmq-2
、rabbitmq-3
作為 container name如果未指定 container name 時
docker ps
可以看到目前正在執行的 container,這邊我們要取得 rabbitmq container 的 name
設定 ansible inventory
這邊的重點是 vars 要設定
ansible_connection: docker
,這樣 ansible 才會知道要使用 docker 來連線設定 ansible playbook
執行 ansible playbook
ansible-playbook -i test.ini test.yml
心得
實際效果:
直接使用 container 來當作 ansible host 來執行 ansible playbook,節省非常大量的時間,並且可以確保每次的環境都是一致的,而且不需要額外的費用,重新建立環境也非常快速,這樣的方式可以讓我們更快速的開發 ansible playbook。
參考資料
文章作者 Yowko Tsai
上次更新 2023-10-24
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。