Linux自動化運維工具之a(chǎn)nsible(一)
運維自動化是運維發(fā)展的必然方向,同時也是一個運維工程師實現(xiàn)效率***化的必然選擇。
運維自動化的知識可以說是浩瀚如海,本文將選擇其中一個工具ansible為大家介紹一下。
一、哪些工作需要批量部署
1、操作系統(tǒng)的安裝
常見的有collber,red hat satelite(redhat)系統(tǒng)專用。
2、操作系統(tǒng)的配置
常見的有cfengine,puppet,chef,func。其中puppet***
3、批量程序的部署
4、批量命令的運行查看狀態(tài)信息
二、ansible介紹
ansible的架構(gòu)大致如下
ansible是新出現(xiàn)的運維工具是基于Python研發(fā)的糅合了眾多老牌運維工具的優(yōu)點實現(xiàn)了批量操作系統(tǒng)配置、批量程序的部署、批量運行命令等功能。
- 運維工具常見的工作模式
- 1、agent模式: 基于ssl實現(xiàn)。代理工作在被監(jiān)控端。像puppet。
- 2、agentless模式: 基于ssh服務(wù)實現(xiàn)工作在被監(jiān)控端。監(jiān)控端是ssh的客戶端。
ansible是工作在agentless模式下具有冪等性。ansible在控制端只需要告訴監(jiān)控端的期望狀態(tài)就可以實現(xiàn)批量部署。
- 名詞解釋
- 冪等性不會重復(fù)執(zhí)行相同的指令。例如不會重復(fù)安裝軟件
- 期望狀態(tài)只需要告訴被監(jiān)控端的期望狀態(tài)
ansible是基于模塊工作的ansible本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊ansible只是提供一種框架。架構(gòu)包括
連接插件connection plugins負責(zé)和被監(jiān)控端實現(xiàn)通信。
Host Inventory:指定操作的主機,是一個配置文件里面定義監(jiān)控的主機
各種模塊核心模塊command模塊自定義模塊
借助于插件完成記錄日志郵件等功能
PlayBooks:劇本執(zhí)行多個任務(wù)時。并非必需可以讓節(jié)點一次性運行多個任務(wù)
三、ansible的基本使用
1、安裝軟件
- yum install ansible -y # 對應(yīng)的軟件在 epel 倉庫中也可自己手動編譯
- #源碼地址 https://pypi.python.org/packages/source/a/ansible/ansible-1.5.tar.gz
2、定義Host Inventory
- # vim /etc/ansible/hosts
- [webhosts]
- 172.16.10.22 ansible_ssh_user=root ansible_ssh_pass=guoting
- 172.16.10.33 ansible_ssh_user=root ansible_ssh_pass=guoting
解釋
#ansible_ssh_user=root 是ssh登陸用戶
#ansible_ssh_pass=guoting 是ssh登陸密碼3、測試各個模塊
# 注意每個模塊的用法可以使用 ansible-doc MOD 來查看例如ansible-doc copy
ansible命令最常用的用法
ansible <Host-partten> -m MOE -a 'MOD_ARV'所支持的模塊可以使用ansible-doc -l來查看
四、ansible示例
1、查看時間信息。command、shell模塊
2、在控制端添加添加用戶。user模塊
3、實現(xiàn)ssh秘鑰認證。shell、copy模塊
此時就可以實現(xiàn)基于ssh秘鑰通信了此時/etc/ansible/hosts可以修改如下
- ###### /etc/ansible/hosts
- [webhosts]
- 172.16.10.22
- 172.16.10.33
4、安裝軟件和啟動服務(wù)。yum、service模塊
5、支持管道的命令。raw模塊,類似于shell模塊
關(guān)于ansible的基本介紹到這里就結(jié)束了,下一篇文章我們會介紹一些批量部署的小技巧哦~