Ansible是新出現的自動化運維工具,基於Python研發。糅合了衆多老牌運維工具的優勢實現了批量操做系統配置、批量程序的部署、批量運行命令等功能。僅需在管理工做站上安裝ansible程序配置被管控主機的IP信息,被管控的主機無客戶端。ansible應用程序存在於epel(第三方社區)源,依賴於不少python組件。主要包括:node
(1)、鏈接插件connection plugins:負責和被監控端實現通訊;python
(2)、host inventory:指定操做的主機,是一個配置文件裏面定義監控的主機;linux
(3)、各類模塊核心模塊、command模塊、自定義模塊;web
(4)、藉助於插件完成記錄日誌郵件等功能;shell
(5)、playbook:劇本執行多個任務時,非必需可讓節點一次性運行多個任務。vim
下面來看下ansible的使用:bash
一:首先安裝ansible模塊:apt install ansible運維
二:配置Ansible以及測試。ssh
(1)第一步是修改主機與組配置。文件在/etc/ansible/hosts. 格式位ini。添加1臺主機同時定義IP到werbserver組。工具
#green.example.com
#blue.example.com
192.168.0.9
# Ex 2: A collection of hosts belonging to the 'webservers' group
#[webservers]
#alpha.example.org
#beta.example.org
192.168.0.9
(二)經過ping模塊測試主機的連通性。分別對單主機進行ping操做。出現以下結果代表測試成功。
root@zhf-linux:/home/zhf# ansible 192.168.0.9 -m ping
192.168.0.9 | SUCCESS => {
"changed": false,
"ping": "pong"
}
root@zhf-linux:/home/zhf# ansible webservers -m ping
192.168.0.9 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Ansible是依賴於SSH通訊,若是機器之間沒有配置SSH證書訪問的話,則須要用登陸密碼訪問。命令需改成ansible 192.168.0.9 -m ping -k.
三:Ansible功能模塊:
(1) 遠程命令模塊:
模塊包括command,script,shell均可以實現遠程shell命令運行。command做爲ansible的默認模板,能夠運行遠程權限範圍全部的shell命令,script是在遠程主機執行主控端存儲的shell腳本文件。至關於SCP+SHELL組合,shell功能是執行遠程主機的shell腳本文件。
root@zhf-linux:/home/zhf# ansible webservers -m command -a "ls -al"
192.168.0.9 | SUCCESS | rc=0 >>
total 72
drwx------ 12 root root 4096 Nov 12 14:45 .
drwxr-xr-x 22 root root 4096 Jul 9 16:59 ..
drwxr-xr-x 3 root root 4096 Nov 12 14:45 .ansible
-rw------- 1 root root 5408 Nov 12 14:46 .bash_history
-rw-r--r-- 1 root root 3106 Feb 20 2014 .bashrc
drwx------ 5 root root 4096 Aug 31 21:47 .cache
drwx------ 4 root root 4096 Jul 26 10:47 .config
drwx------ 3 root root 4096 Jul 9 15:59 .dbus
drwx------ 2 root root 4096 Jul 9 16:23 .gvfs
drwxr-xr-x 3 root root 4096 Jul 26 11:23 .local
drwxr-xr-x 2 root root 4096 Jul 26 11:33 .pip
-rw-r--r-- 1 root root 140 Feb 20 2014 .profile
drwxr-xr-x 3 root root 4096 Jul 26 11:41 .python-eggs
drwxr-xr-x 2 root root 4096 Oct 30 21:18 .rpmdb
drwx------ 2 root root 4096 Oct 27 23:11 .ssh
-rw-r--r-- 1 root root 0 Oct 29 10:02 test.txt
-rw------- 1 root root 5439 Oct 31 22:07 .viminfo
在主機上創建一個sh文件,內容很簡單,就是echo 「hello ansible」。經過遠程端也能夠調用。
root@zhf-linux:/home/zhf# ansible webservers -m shell -a "/home/zhf/zhf/shell_prj/test1.sh"
192.168.0.9 | SUCCESS | rc=0 >>
hello ansible!
拷貝文件:
在上傳文件的同時還能夠設置上傳文件的屬主以及權限。格式爲: owner=xxx group=xxx mode=0744
root@zhf-linux:/home/zhf/zhf# ansible webservers -m copy -a "src=/home/zhf/zhf/test2.txt dest=/home/zhf owner=root group=root mode=0744"
192.168.0.9 | SUCCESS => {
"changed": true,
"checksum": "07c0752c54e3883358ab0c8c6008004929954217",
"dest": "/home/zhf/test2.txt",
"gid": 0,
"group": "root",
"md5sum": "d2c01e6badaa08464b9e0cd578a5de8b",
"mode": "0744",
"owner": "root",
"size": 30,
"src": "/root/.ansible/tmp/ansible-tmp-1510471651.28-269106495340296/source",
"state": "file",
"uid": 0
}
stat模塊:
獲取遠程文件的狀態信息,包括ctime,mtime,atime,uid,gid等信息。咱們用剛纔上傳的文件爲例。
root@zhf-linux:/home/zhf/zhf# ansible webservers -m stat -a "path=/home/zhf/test2.txt"
192.168.0.9 | SUCCESS => {
"changed": false,
"stat": {
"atime": 1510471652.086876,
"checksum": "07c0752c54e3883358ab0c8c6008004929954217",
"ctime": 1510471652.130877,
"dev": 2054,
"exists": true,
"gid": 0,
"gr_name": "root",
"inode": 130813,
"isblk": false,
"ischr": false,
"isdir": false,
"isfifo": false,
"isgid": false,
"islnk": false,
"isreg": true,
"issock": false,
"isuid": false,
"md5": "d2c01e6badaa08464b9e0cd578a5de8b",
"mode": "0744",
"mtime": 1510471651.438875,
"nlink": 1,
"path": "/home/zhf/test2.txt",
"pw_name": "root",
"rgrp": true,
"roth": true,
"rusr": true,
"size": 30,
"uid": 0,
"wgrp": false,
"woth": false,
"wusr": true,
"xgrp": false,
"xoth": false,
"xusr": true
}
}
遠程安裝軟件:將會遠程主機安裝上ansible模塊。
root@zhf-linux:/home/zhf/zhf# ansible webservers -m apt -a "pkg=ansible state=latest"
cron模塊:
root@zhf-linux:/home/zhf/zhf# ansible webservers -m cron -a "name=check dirs hour='5,2' job='ls -al'"
下一節講介紹playbook模塊