ansiable自動化運維工具
日常的運維工作任務
系統安裝(物理機、虛擬機) --> 程序包安裝、配置、服務啟動 --> 批量操作 --> 程序發布 --> 監控
OS Provisioning
物理機:PXE(預引導程序)、Cobbler
PXE(網卡支持網絡引導、dhcp、filename、next-server、tftp-server(UDP69端口監聽))
-->pxelinux.0
-->vmlinux、initrd.img
-->menu.c32
-->pxelinux.cfg/default
虛擬機:Image Templates
Configration
程序包、用戶管理、配置文件、服務管理、cron任務等
puppet (ruby研發的)
saltstack (python研發)
chef
cfengine(C/C++研發)
管理完成配置的安裝和批量的管理
Command and Control
fabric
func
進入正題:
ansiable自動化運維工具
①ansible優點:
1、configuration:(cfengine、chef、puppet) 服務的配置
2、Deployment(Capistrano、Fabric) 應用程序的部署
3、Ad-Hoc Tasks(Func) 批量命令執行
4、Multi-Tier ORCHEHESTRATION 多層次的任務編排
②ansible特性:
上手方便簡單
NO bootstrapping
No DAG ordering
NO agent
No server
No additional PKL
模塊化,調用特定的模塊,完成特定的任務
基於Python語言實現由Paramiko、Pyyaml(標記語言)jinja2三個關鍵模塊
部署簡單,agenless
支持自定義模塊
支持Playbook
冪等性:允許重復執行多次
③ansible的模塊:
查看doc幫助文檔
ansible-doc -s command
command -a ‘command‘ ansible all -m command -a ‘echo Centos | passwd --stdin Centos‘ 賦予Centos用戶密碼但是這 樣是只打印出整體 user -a ‘name= state={present|absent} system= uid=‘ ansible 主機名 -m user -a ‘name=cluster state=present ‘ group -a ‘name= gid= state= system=‘ cron -a ‘name= minute= hour= day= month= job= user= state=‘ ansible 主機名 -m cron -a ‘name="sync time from ntpserver" state=present minute=*/10 job="/sbin/ntpdate 要同步的主機IP &>/dev/null"‘ ansible all -m cron -a ‘name="sync time from ntpserver" state=absent‘ 刪除計劃 copy -a ‘src=\‘#\‘" /etc/fstab dest=/tmp/fstab.tmp mode=600‘ file -a ‘path= mode= owner= group= state={directory|link|present|absent} src=\‘#\‘" /pre>
④ansible -playbooks的核心元素
->Tasks任務
->Variables變量
->Templates模板
->Handlers處理器
->Roles角色
⑤配置文件:
/etc/ansible/ansible.cgf 角色列表
/etc/ansible/hosts 主機清單
⑥ansible 源碼安裝配置
解決依賴:
yum -y install python-jinja2 PyYAML python-paramiko python-babel python-crypto
克隆到主機:
git clone git://github.com/ansible/ansible.git --recursive
安裝文件:
source ./ansible/hacking/env-setup
創建配置文件:
mkdir -p /etc/ansible
cp ./examples/ansible.cfg /etc/ansible/
cp ./examples/hosts /etc/ansible/
創建公鑰傳遞給要管理的主機:
ssh-keygen -t rsa -P ‘‘ ##一路回車
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
ssh IP ‘ifconfig‘ ##測試是否連通
ansible all -m ping
ansiable自動化運維工具