Ansible和saltstack目前市面上一些其它的項目管理工具備很大的不一樣,它的設計初衷就是爲了更方便、快捷的進行配置管理。它易於安裝和使用、語法也很是簡單易學。你能夠用Ansible將日常複雜的配置工做變得簡單,變得更加標準化更容易控制。python
Ansible只須要在一臺普通的服務器上運行便可,不須要在被管控的服務器上安裝客戶端。由於它是基於SSH的,Linux服務器離不開SSH,因此Ansible不須要爲配置工做添加額外的支持。 你能夠經過命令行來使用Ansible,運行Ansible的服務器這裏俗稱「管理節點」;經過Ansible進行管理的服務器俗稱「受控節點」。正則表達式
Ansible是一款極爲靈活的開源工具套件,可以大大簡化Unix管理員的自動化配置管理與流程控制方式。它利用推送方式對客戶系統加以配置,這樣全部工做均可在主服務器端完成。其命令行機制一樣很是強大,容許你們利用商業許可Web UI實現受權管理與配置。shell
Ansible優勢:服務器
1) 輕量級,不須要去客戶端安裝agent,更新時,只須要在操做機上進行一次更新便可,採用SSH協議(免密鑰)。 併發
2) 批量任務執行能夠寫成腳本,並且不用分發到遠程就能夠執行。 ssh
3) 使用python編寫的,維護更簡單。 工具
4) 支持sudo普通用戶命令。spa
Ansible 可以安裝到 Linux、BSD、Mac OS X 等平臺,Python 版本最低要求爲 2.6。命令行
CentOS直接使用yum安裝便可,安裝以前先安裝epel源碼。設計
rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
而後執行命令: yum install ansible -y 安裝便可。
安裝完後正式來使用,ansible默認配置文件路徑爲:
/etc/ansible:
常見的命令參數有:
默認hosts內容能夠配置分組,咱們能夠定義各類ip及規則,內容以下(自動化的前提就是ssh互通免密鑰):
ansible -i /etc/ansible/hosts all -a 「date」
能夠單獨匹配某個組
這裏能夠單獨匹配ip段
ansible主要參數以下:
-u username 指定ssh鏈接的用戶名,即執行後面命令的用戶
-i inventory_file 指定所使用的inventory文件的位置,默認爲/etc/ansible/hosts
-m module 指定使用的模塊,默認爲command,常見模塊有command、shell、script、yum、copy等等
-f 10 指定併發數,併發量大的時候,提升該值
--sudo [-k] 當須要root權限執行的化,-k參數用來輸入root密碼。
-a 指定模塊的參數,能夠是命令等等。
ansible 192.168.33.* -m command -a "df -h"
ansible all -m copy -a 'src=/etc/passwd dest=/tmp/ mode=755 owner=root'
Ansible 192.168.* -m yum -a "name=sysstat,screen,ntpdate state=installed"
Playbook配置管理
咱們使用如上這些命令能夠快速利用Ansible的工具編寫腳本、從而以很是簡便的方式實現任務處理的自動化與流程化。
除此以外,咱們還能夠建立Ansible Playbook以收集命令與任務集,這樣可以大大下降管理工做的複雜程度。
Playbook採用YAML語法結構,所以它們通常比較易於閱讀並加以配置,以下簡單案例使用playbook實如今客戶端安裝screen軟件。
在/etc/ansible/目錄下,新建screen.yaml文件,內容以下:
- hosts: all
remote_user: root
tasks:
- name: yum install screen
shell: yum install screen -y
文件解析:-hosts:all指定對全部hosts生效,remote_user表示遠程root,tasks表示須要執行的任務;name顯示的名稱,shell後面接:須要在遠程客戶端執行的命令。能夠寫多個命令,以;分號隔開便可,例如 shell: yum install screen -y ;mkdir /tmp/`date +%Y%m%d`
固然了,咱們還能夠定義各類不一樣的playbook類型,以下咱們能夠定義源碼安裝Nginx或者yum安裝LAMP論壇。
執行結果以下圖: