一.ansible介紹
經常使用的自動化運維工具 python
Puppet —基於 Ruby 開發,採用 C/S 架構,擴展性強,基於 SSL,遠程命令執行相對較弱
SaltStack —基於 Python 開發,採用 C/S 架構,相對 puppet 更輕量級,配置語法使用 YMAL,使得配置 腳本更簡單 Ansible —基於 Pythonparamiko 開發,分佈式,無需客戶端,輕量級,配置語法使用 YMAL 及 Jinja2 模板語言,更強的遠程命令執行操做 其餘 DevOps 請參看:https://github.com/geekwolf/sa-scripts/blob/master/devops.md
Ansible 是一個簡單的自動化運維管理工具,能夠用來自動化部署應用、配置、編排 task(持續 交付、無宕機更新等),採用 paramiko 協議庫(fabric 也使用這個),經過 SSH 或者 ZeroMQ 等連 接主機,大概每 2 個月發佈一個主版git
Ansible 工做機制 github
Ansible 在管理節點將 Ansible 模塊經過 SSH 協議(或者 Kerberos、LDAP)推送到被管理端執 行,執行完以後自動刪除,可使用 SVN 等來管理自定義模塊及編排vim
由上面的圖能夠看到 Ansible 的組成由 5 個部分組成: 架構
Ansible:核心引擎運維
Modules:包括 Ansible 自帶的核心模塊(core modules)及自定義模塊 (custom modules);分佈式
核心模塊:ansible模塊資源分發到遠程節點使其執行特定任務或匹配一個特定的狀態。工具
自定義模塊:若是核心模塊不足以完成某種功能,能夠添加自定義模塊。oop
Plugins:完成模塊功能的補充,包括鏈接插件、郵件插件等 測試
Playbooks:網上不少翻譯爲劇本,我的以爲理解爲編排更爲合理;定義ansible任務的配置文件,能夠將多個任務定義在一個劇本中,由ansible自動執行,劇本執行支持多個任務,能夠由控制主機運行多個任務,同時對多臺遠程主機進行管理。
Inventory:定義 Ansible 管理主機的清單
ansible功能特性
二.安裝ansible
安裝前準備:
1.由於ansible是基於python的,因此先檢查是否有python,若是沒有須要安裝(注意版本,版本太低,也可能致使安裝失敗)。
2.安裝ansible前須要安裝依賴包
yum -y install epel-release
......
ansible安裝:
yum -y install ansible
.......
安裝完成後須要配置機組:
vim /etc/ansible/hosts
這裏個人機組名爲[ccdoop],如下是個人另外2臺機子的配置(本機爲:test1:192.168.254.130)
test2 192.168.254.131
test3 192.168.254.132
到這裏ansible就安裝完成了。
測試:
ansible all -m ping
結果:成功!
注:因爲本機只有一個組[ccdoop],故用all,若是有多個機組,而你只想測試一個組的話能夠把all替換爲組名,如: