linux自動化分爲三個層次python
1.OS provisioning 自動化安裝系統 linux
經常使用軟件:cobbler(red hat 用、PXEweb
2.OS config 自動化配置系統apache
經常使用軟件:cfengine,puppet,saltstack chefvim
3.OS deployment 深度定製自動化服務器
經常使用軟件:func(C/S,ssl)、fabric(ssh,python)、ansible架構
ansible:因爲能夠完成三個層次的事情因此比較強大。(基於ssh去鏈接到主機,因此先要認證)運維
ansible特性: ssh
部署簡單,只需在主控端部署Ansible環境,被控端無需作任何操做;
默認使用SSH協議對設備進行管理;
有大量常規運維操做模塊,可實現平常絕大部分操做;
配置簡單、功能強大、擴展性強;
支持API及自定義模塊,可經過Python輕鬆擴展;
經過Playbooks來定製強大的配置、狀態管理;
輕量級,無需在客戶端安裝agent,更新時,只需在操做機上進行一次更新便可;
提供一個功能強大、操做性強的Web管理界面和REST API接口——AWX平臺。測試
ansible的架構及組件
Ansible:Ansible核心程序。
HostInventory:記錄由Ansible管理的主機信息,包括端口、密碼、ip等。
Playbooks:「劇本」YAML格式文件,多個任務定義在一個文件中,定義主機須要調用哪些模塊來完成的功能。
CoreModules:核心模塊,主要操做是經過調用核心模塊來完成管理任務。
CustomModules:自定義模塊,完成核心模塊沒法完成的功能,支持多種語言。
ConnectionPlugins:鏈接插件,Ansible和Host通訊使用
安裝ansible:yum安裝
安裝ansible:
1.下載epel源到/etc/yum.repos.d
#wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
2.yum clean all
3. yum makecache
4.yum install ansible -y
使用ansible準備
1.配置主機:
在安裝有ansible服務器上/etc/hosts 文件中添加主機
格式:
[機組名] 例: [websevices]
機組ip或主機名 192.168.29.129
www.zrq1.com
2.配置認證:這裏因爲ansible須要到客戶機上執行操做,因此須要對於客戶機有登陸權限,最好設置免密登陸
1.建立證書
#ssh-keygen -t rsa -P ''
2.拷貝證書
#ssh-copy-id -i ./ssh/id_rsa.pub root@192.1168.1.162
3.測試是否成功
#ansible all -m pinng :像全部的客戶機發送ping測試
ansible配置文件:
hosts:配置主機羣
ansible基本語法:
ansible
ansible <host-pattern> [options]
host-pattern:在host中定義的主機羣
all:全部主機
options:
-m:後面接模塊
若是直接執行命令,不用模塊能夠省略
例如:ansible all -a ‘service httpd status’
查看客戶機的httpd服務狀態
-a:後面接模塊的命令
ansible-doc -l:列出全部模塊
經常使用模塊:copy、cron、acl、group、user
ansible-doc -s 模塊名:查看指定模塊的參數
例:ansible webserver -m copy -a 「src=/root/zrq.sh dest=/tmp/zrq/」 注意:命令不支持管道
用複製模塊複製文件到websever服務器羣的目錄中
ansible相關命令:
ansible-doc
-l:查看全部模塊
主要模塊:
acl:
at:
cron
copy
command:
user
group
yum
service
file
-s:查看指定模塊的參數
例如:ansible-doc -s copy
ansible的playbook模塊:
1.基於YAML(一種文本格式)語言:
ymal文件擴展名一般爲。yaml
-:表示
空格:表示
每一個任務都有名稱
注意縮進
2.playbooks:基於yaml語言格式的一個.yaml文件
示例:(注意:千萬注意縮進以及對其,特別是-)
#vim test.yaml
- hosts: all remote_user: root tasks: - name: ensure apache status service: name: httpd state: status