Ansible基礎介紹
我們在做系統運維時,很多時候需要SSH登陸到各個伺服器進行各種系統和包的安裝啟動及狀态檢查等操作。這些過程很繁瑣,而且操作的過程,結果及腳本代碼很零散不好管理,容易造成一些不必要的問題。Ansible正好是滿足了這個需求,把重複而繁瑣的運維操作通過簡潔易懂的YAML代碼來描述和執行。
Ansible的特點
- 簡潔易懂,功能豐富,擴充友善
- 隻需在主要端安裝,無需在被控端安裝Agent, 大大簡化了部署複雜性
- 預設使用SSH,不需要額外的安全架構
- YAML描述性語言,把部署過程展現為代碼,進而可以把部署過程納入代碼的版本管理
Ansible架構介紹

-- 圖檔來源:
https://geekflare.com/ansible-basics/上圖示範了如何通過Ansible對共有雲或私有雲的一堆機器進行運維操作。
子產品介紹:
- 核心:最中間的是Ansible自動化執行引擎,接受使用者輸入,排程各個子產品完成操作
- Inventory: 所有被控端的host的IP位址清單,可以按需進行分組歸類
- Playbooks: 配置中心,定義操作的流程(play), 每一個play可以定義一系列順序執行的task, 每個task定義具體執行的action
- module: action通過module封裝,module通過SSH推送到被控端執行,執行後自動删除
- plugin: 插件是指在主要端執行的擴充子產品,譬如logging, connection,資料轉換等功能擴充插件
Ansible調試環境搭建(Intellij IDE)
-
下載下傳最新代碼:
$ git clone
https://github.com/ansible/ansible.git --recursive -
check out到較新的穩定版本,如2.9.6
$ git checkout v2.9.6
-
本地安裝
$ source hacking/env-setup
-
本地調試伺服器
Ansible的操作是通過SSH連接配接和操作遠端的機器,測試的時候不一定有合适的遠端機器可供操作。比較簡便的方式是讓SSH連接配接本地機器(localhost, 127.0.0.1),這就需要生成一套SSH key,并把key放到.ssh/authorized_keys
$ ssh-keygen # 一路回車
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- 導入Intellij project (IDE需要先安裝python plugin)
- 将 ANSIBLE_ROOT/lib 目錄 Mark Directory as -> Source Root, 在IDE執行時能成功import内部的package
- debug 執行
Ansible使用小技巧
TBD