標籤:ansible
一、ansible介紹
1、簡介
ansible是新出現的自動化營運工具,基於Python開發,集合了眾多營運工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批配量序部署、批量運行命令等功能。ansible是基於模組工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所啟動並執行模組,ansible只是提供一種架構。主要包括:
(1)、串連外掛程式connection plugins:負責和被監控端實現通訊;
(2)、host inventory:指定操作的主機,是一個設定檔裡面定義監控的主機;
(3)、各種模組核心模組、command模組、自訂模組;
(4)、藉助於外掛程式完成記錄日誌郵件等功能;
(5)、playbook:劇本執行多個任務時,非必需可以讓節點一次性運行多個任務。
2、基礎架構
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/53/A7/wKiom1Rsxz3ToUCAAAGROYAM3EI989.jpg" width="642" height="391" alt="wKiom1Rsxz3ToUCAAAGROYAM3EI989.jpg" />
3、特性
(1)、no agents:不需要在被管控主機上安裝任何用戶端;
(2)、no server:無伺服器端,使用時直接運行命令即可;
(3)、modules in any languages:基於模組工作,可使用任意語言開發模組;
(4)、yaml,not code:使用yaml語言定製劇本playbook;
(5)、ssh by default:基於SSH工作;
(6)、strong multi-tier solution:可實現多級指揮。
4、優點
(1)、輕量級,無需在用戶端安裝agent,更新時,只需在操作機上進行一次更新即可;
(2)、批量任務執行可以寫成指令碼,而且不用分發到遠程就可以執行;
(3)、使用python編寫,維護更簡單,ruby文法過於複雜;
(4)、支援sudo。
5、任務執行流程
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/53/A7/wKiom1Rsx2uQYJZ5AAJplY08vOQ976.jpg" width="514" height="415" alt="wKiom1Rsx2uQYJZ5AAJplY08vOQ976.jpg" />
二、Ansible基礎安裝與配置
1、安裝ansible
為了快速部署,我們這裡不使用編譯安裝,我們使用epel源裡面的rpm包
# yum install ansible
2、配置hosts檔案
# vim /etc/ansible/hosts
我們可以看到有好多案例,我們可以注釋掉他們,或者刪掉他們,我們這裡注釋掉他們,在vim模式下
:%s/^\([^[:space:]#]\)/#\1/g
然後添加我們需要操作的主機,假設我就管理這兩台主機。
[webserver]10.0.0.1610.0.0.13
3、配置主機無密鑰登入
# ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.0.16
[email protected]‘s password: Now try logging into the machine, with "ssh ‘10.0.0.16‘", and check in: .ssh/authorized_keysto make sure we haven‘t added extra keys that you weren‘t expecting.
三、案例測試
ansible <host-pattern> [-f forks] [-m module_name] [-a args]
1、對所管轄的主機進行Ping操作
# ansible all -m ping
10.0.0.13 | success >> { "changed": false, "ping": "pong"}10.0.0.16 | success >> { "changed": false, "ping": "pong"}
2、查看兩台主機的時間
# ansible all -a ‘date‘
10.0.0.16 | success | rc=0 >>Tue Nov 17 15:57:16 CST 201510.0.0.13 | success | rc=0 >>Tue Nov 17 15:57:17 CST 2015
註:完整命令是ansible all -m command -a ‘date‘,-m command預設可以省略
3、複製檔案
命令ansible-doc -l可以查看很多可以操作的模組,具體查看某個模組操作用ansible-doc -s module,例如ansible-doc -s copy
# ansible webserver -m copy -a "src=/root/cmdline-jmxclient-0.10.3.jar dest=/root"
10.0.0.13 | success >> { "changed": true, "checksum": "98650e89f3c174b68971098618c2126b6cc1ab8b", "dest": "/root/cmdline-jmxclient-0.10.3.jar", "gid": 0, "group": "root", "md5sum": "ea665f2c562fc6aca3578cae46520b6d", "mode": "0644", "owner": "root", "size": 20124, "src": "/root/.ansible/tmp/ansible-tmp-1447747792.14-265823444157691/source", "state": "file", "uid": 0}10.0.0.16 | success >> { "changed": true, "checksum": "98650e89f3c174b68971098618c2126b6cc1ab8b", "dest": "/root/cmdline-jmxclient-0.10.3.jar", "gid": 0, "group": "root", "md5sum": "ea665f2c562fc6aca3578cae46520b6d", "mode": "0644", "owner": "root", "size": 20124, "src": "/root/.ansible/tmp/ansible-tmp-1447747792.15-265197722191280/source", "state": "file", "uid": 0}
本文出自 “小小水滴” 部落格,請務必保留此出處http://wangzan18.blog.51cto.com/8021085/1713543
CentOS 6.5 Ansible詳細部署