本節內容:node
做爲一個Linux運維人員,須要瞭解大量的運維工具,並熟知這些工具的差別,可以熟練運用這些工具去解決一些手動重複的勞動,一方面是避免人工操做失誤,另外一方面也能夠提升工做效率。同時還能將本身從這些重複的工做中解放出來,以便研究更新和更深的技術。shell
運維工具大致上能夠分爲3類:編程
而Ansible是一款較新的工具,能夠實現OS Config、Task Excute和Deployment。vim
運維工具實現遠程管理的兩種方式:api
架構圖:架構
ansible是Python編寫的,Python有一個模塊叫paramiko,paramiko組件可以實現並行地基於ssh協議遠程鏈接至各主機的庫。ansible就是用了paramiko。less
核心組件:運維
能夠選擇源碼編譯安裝或者yum安裝。ansible的rpm包在epel源中,事先安裝好epel源。我這裏實驗環境是CentOS 7。ssh
安裝:編程語言
# yum install ansible -y
查看安裝的rpm包裏有哪些文件:
# rpm -ql ansible | more
ansible配置文件:/etc/ansible/ansible.cfg
inventory文件:/etc/ansible/hosts
1.環境信息
主機名 | 操做系統版本 | IP地址 | 安裝軟件 |
node1 | CentOS 7.0 | 172.16.7.151 | ansible-noarh-2.2.0.0-4.el7 |
node2 | CentOS 7.0 | 172.16.7.152 | 無 |
node3 | CentOS 7.0 | 172.16.7.153 | 無 |
2.配置Ansible主機登陸其餘主機使用密鑰登陸
因爲Ansible默認使用ssh管理主機,因此首先須要配置Ansible所在主機登陸其餘被管理主機不須要輸入密碼。在node1主機上執行以下命令:
[root@node1 ~]# ssh-keygen -t rsa -P '' [root@node1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.7.151 [root@node1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.7.152 [root@node1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.7.153
3.定義主機
每個主機可使用主機名,也可使用ip地址。也能夠把多個主機定義到一個組裏。好比:
[root@node1 ~]# vim /etc/ansible/hosts
4.使用模塊
Ansible是依賴模塊進行工做的,裏面有大量的模塊幫助咱們去完成任務。好比使用command模塊:
[root@node1 ~]# ansible 172.16.7.152 -m command -a "date"
如上,在執行任務時,能夠指定IP,也能夠指定組名,ansible有個默認的組叫all,表明/etc/ansible/hosts文件裏的全部主機。
列出當前主機可使用的ansible模塊:
[root@node1 ~]# ansible-doc -l
經常使用的模塊有:user、yum、copy、command等。若是想知道某個模塊怎麼使用的,好比想知道yum怎麼用:
[root@node1 ~]# ansible-doc -s yum