1. 程式人生 > >ansiable自動化運維工具

ansiable自動化運維工具

ansible的安裝

日常的運維工作任務

系統安裝(物理機、虛擬機) --> 程序包安裝、配置、服務啟動 --> 批量操作 --> 程序發布 --> 監控


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自動化運維工具