ansible安裝配置及實例

前面兩篇文章主要介紹了運維自動化工具 puppet 和 saltstack 部署安裝以及使用:

puppet:http://msiyuetian.blog.51cto.com/8637744/1745416

saltstack:http://msiyuetian.blog.51cto.com/8637744/1745785

下面這篇文章主要介紹另外一種運維自動化工具:ansible


一、簡介


ansible 和 saltstack 一樣都是基於 Python 開發的,是比 puppet 和 saltstack 更輕量級的運維自動化工具。無服務器端,使用時直接運行命令即可,不需要在被管控主機上安裝任何客戶端,所以任何一臺機器只要安裝了 ansible 就可以管控其他主機。基於模塊工作,可使用任意語言開發模塊。也可使用 yaml 語言定製劇本 playbook;基於SSH工作;可實現多級指揮。


二、安裝配置


1、準備工作

準備兩臺機器 Centos6.5_64,這兩臺機器都關閉 selinux,清空 iptables 規則並保存。

master:192.168.0.109

slaver:192.168.0.110

2、編輯 hosts 文件

兩臺都設置,若機器太多,可以通過搭建 DNS,則不用在每臺機器上設置這個

# vim /etc/hosts

192.168.0.109  master.test.com

192.168.0.110  slaver.test.com

3、設置 hostname

在 master 上

[root@master ~]# vim /etc/sysconfig/network

HOSTNAME=master.test.com

在 slaver 上

[root@slaver ~]# vim /etc/sysconfig/network

HOSTNAME=slaver.test.com

4、安裝

[root@master ~]# yum install -y epel-release

[root@master ~]# yum install -y ansible

5、SSH密鑰配置

1)生成密鑰對

[root@master ~]# ssh-keygen -t rsa

注意:直接回車即可,不用設置密鑰密碼。這樣會在 root 家目錄下生成 .ssh 目錄,這裏面也會生成兩個文件 id_rsa 和  id_rsa.pub 。

2)把公鑰(id_rsa.pub)內容放到本機和遠程客戶機的 /root/.ssh/authorized_keys 裏面
本機

[root@master ~]# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

遠程客戶機

[root@slaver ~]# vim /root/.ssh/authorized_keys        

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA9lfwS0rn5OPu43Gb3Lw04zDgIc4YitE+f988fcwXs3Gg0xm+5oZJGgWajFsNLJ1jIqsPTVXdHcTg9z0xMybRRM71EzYrgYH6o1ToDlJTMzW2iXHNtp1ECBYobki5f1MYNSBED1jvQTmvC/rO7a0vhIxj4tXjVOWm4v3XX2GS9KBoFejDAGL95cklKhn2B/NGKvqE7FfjBSMaPbr6HOZF6NbAdq2gMpuuoMoXK6sHWyVdfXmBruE1iqcRnNldOy8mEAJd8MSvZwxFQc6aEjEaWUo/DXGMFKABX+DMDYqGGLsnGUTY9+juhRvAIx0g2ulFAzQ8628cUfHfqoF3mAS0uw== [email protected]

注意:若沒有.ssh目錄,則需手動創建該目錄,目錄權限爲700。

[root@slaver ~]# chmod 600 /root/.ssh/authorized_keys         //修改文件權限

6、ansible配置

[root@master ~]# vim /etc/ansible/hosts         //增加以下內容

[testhost]

127.0.0.1

192.168.0.110


三、ansible 實例


1、遠程執行命令

[root@master ~]# ansible testhost -m command -a 'w'

wKioL1bXo-bxi2JnAABmq-1fxvU155.png

注意:"-m" 指定模塊名,"-a" 指定相應命令,這樣就可以批量執行命令。這裏的 testhost 爲之前自定義的主機組名,當然我們也可以直接寫一個 ip,針對某一臺機器來執行命令。如下:

[root@master ~]# ansible 192.168.0.110 -m command -a 'w'

wKioL1bXpDPwyglTAAAsfRLwOO8125.png

若報錯誤: "msg": "Aborting, target uses selinux but python bindings (libselinux-python) aren't installed!"

解決: yum install -y libselinux-python


2、遠程執行Shell腳本

1)創建一個shell腳本
[root@master ~]# vim /tmp/test.sh            //加入內容

#!/bin/bash
echo `date` > /tmp/ansible_shell.log

2)把腳本分發到各遠程機
[root@master ~]# ansible testhost -m copy -a "src=/tmp/test.sh dest=/tmp/test.sh mode=0755"

3)批量執行腳本

[root@master ~]# ansible testhost -m shell -a "/tmp/test.sh"

注意:shell 模塊,還支持遠程執行命令並且帶管道
ansible testhost -m shell -a "cat /etc/passwd|wc -l "

4)在遠程機查看

wKioL1bX00iyyOSCAABBMJd4zMg086.png


3、拷貝文件和目錄

1)拷貝文件

[root@master ~]#  ansible testhost -m copy -a "src=/etc/ansible/ansible.cfg dest=/tmp/ansibletet.txt owner=root group=root mode=0644"

2)拷貝目錄

[root@master ~]# ansible testhost -m copy -a "src=/etc/ansible/ dest=/tmp/ansibletest owner=root group=root mode=0644" 

3)遠程機查看

wKiom1bXub-A6ndfAAA-YrYHJzM351.png


4、任務計劃

1)創建任務計劃

[root@master ~]# ansible testhost -m cron -a "name='test_cron' job='/bin/touch /tmp/test.txt'  hour='1,5,10' weekday=1"
注意:其他的時間表示:分鐘 minute,小時 hour,日期 day,月份 month。

2)遠程機查看

wKiom1bcFHKDKOSFAABD8tcab-w366.png

3)刪除任務計劃

若要刪除該 cron 只需要加一個字段 state=absent
[root@master ~]# ansible testhost -m cron -a "name='test_cron' state=absent"


5、yum安裝

[root@master ~]# ansible testhost -m yum -a "name=httpd"

注意:安裝 httpd 


6、服務管理

[root@master ~]# ansible testhost -m service -a "name=httpd state=started enabled=no"

注意:開啓 httpd 服務,並關閉開機啓動。


7、文檔使用

1)列出所有的模塊

[root@master ~]# ansible-doc -l                         
2)查看指定模塊的文檔

[root@master ~]# ansible-doc cron                    

[root@master ~]# ansible-doc service


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章