我使用過puppet與salt,但這2個軟件都需要安裝客戶端,并且更新很快,每次更新都是令人蛋疼的事,尤其是salt,喜歡他的命令功能,但bug太多,不敢在公司線上使用,puppet雖然穩定,但弄命令執行的時候,需要mco配置,非常麻煩,我公司由于跟多家公司合作,很多業務沒辦法安裝客戶端,所以沒辦法使用puppet與salt(雖然salt有ssh,但不太好使),最后找到了ansible,他既有命令執行也有配置管理,關鍵開發它的語言是python,paramiko進行ssh連接,跟我之前開發的自動管理軟件都是使用paramiko進行操作,不需要安裝客戶端,滿足我的需求,下面給大家介紹一下我是如何使用的。
一、安裝
1、安裝第三方epel源
centos 5的epel
rpm -ivh http://mirrors.sohu.com/fedora-epel/5/x86_64/epel-release-5-4.noarch.rpm
centos 6的epel
rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
查看系統版本
17:01:30 # cat /etc/issueCentOS release 6.5 (Final)Kernel /r on an /m
由于是6版本所以安裝6的epel
2、安裝ansible
yum install ansible
如果需要自定義module或者想閱讀源碼、使用最新版本,可以去github里下載源碼
git clone https://github.com/ansible/ansible.git
3、添加主機
17:22:08 # cd /etc/ansible/root@ip-10-10-10-10:/etc/ansible17:23:27 # lltotal 12-rw-r--r-- 1 root root 5113 Dec 29 03:00 ansible.cfg-rw-r--r-- 1 root root 965 Dec 29 03:00 hosts其中ansible.cfg是配置文件,hosts是管理主機信息17:24:44 # cat hosts172.17.0.2:49154172.17.0.4:49155[zabbix]172.17.0.2:49154172.17.0.4:49155[vpn]172.17.0.10
4、使用密碼登陸
ansible支持正則測試
16:20:57 # ansible 127* -m pingSSH password: 127.0.0.1 | success >> { "changed": false, "ping": "pong"} root@ip-10-10-10-10:/etc/ansible16:21:05 # ansible 172* -m pingSSH password: 172.17.0.5 | success >> { "changed": false, "ping": "pong"} 172.17.0.4 | success >> { "changed": false, "ping": "pong"} 172.17.0.2 | success >> { "changed": false, "ping": "pong"}
如果你有多臺服務器的話,想并發運行,可以使用-f參數,默認是并發5
5、使用密鑰登陸測試
11:30:35 # ansible vpn -m shell -a "echo $TERM" -u test --private-key=denglei -KSSH password: sudo password [defaults to SSH password]: 172.17.0.10 | success | rc=0 >>xterm
二、模塊應用
6、文件傳輸
11:30:44 # ansible vpn -m copy -a "src=/tmp/server dest=/tmp/server" -u test --private-key=denglei -KSSH password: sudo password [defaults to SSH password]: 172.17.0.10 | success >> { "changed": true, "dest": "/tmp/server", "gid": 505, "group": "test", "md5sum": "e8b32bc4d7b564ac6075a1418ad8841e", "mode": "0664", "owner": "test", "size": 7, "src": "/home/test/.ansible/tmp/ansible-1402630447.45-253524136818424/source", "state": "file", "uid": 503}
去客戶端查看文件是否傳輸過來
新聞熱點
疑難解答