Ansible一種集成IT系統的配置管理,應用部署,執行特定任務的開源平臺。Ansible具有如下特點:
部署簡單,只需在主控制端部署Ansible環境,被控端無需做任何操作;
默認使用SSH協議對設備進行管理;
主從集中化管理;
配置簡單,功能強大,擴展性強
通過Playbooks來定制強大的配置、狀態管理;
一、Ansible安裝
1.環境配置
角色 |
主機名 |
IP |
組名 |
msster |
Automation |
192.168.1.23 |
|
cleint |
test1 |
192.168.1.24 |
webservers |
client |
test2 |
192.168.1.76 |
webservers |
2.安裝ansible,在master上執行以下操作
EPEL已經提供了ansible所需的所有支持軟件包,所以在這里使用epel源進行安裝:
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -vih epel-release-6-8.noarch.rpm remi-release-6.rpm
yum install ansible -y
3.ansible配置及測試
第一步修改主機與組配置,文件位置/etc/ansible/hosts,格式為ini,添加兩臺主機Ip,同時定義兩個ip到webservers組,內如如下:
192.168.1.24
192.168.1.76
[webservers]
192.168.1.24
192.168.1.76
通過ping模塊測試主機的連通性,分別對單主機及組進行ping操作,出現如下圖所示表示測試成功
注意:由于主控端與被控主機未配置SSH證書信任,需要在執行ansible命令時添加-k參數,要求提供root默認密碼,
4.配置Linux主機SSH無密碼訪問
在主控端主機192.168.1.23創建密鑰,執行ssh-keygen -t rsa ,有詢問直接按回車鍵即可,將在/root/.ssh/下生成一對密鑰,其中id_rsa為私鑰,id_rsa.pub為公鑰
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
[root@Automation ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 8c:b2:59:d6:39:14:92:7f:95:98:3d:98:55:36:aa:bd root@Automation The key's randomart image is: +--[ RSA 2048]----+ | ... B.o+ | | .. .= =o . | | .. ... | | =...o | | . + S.. . | | * . . | | o E | | | | | +-----------------+ |
接下來同步公鑰id_rsa.pub到目標主機,推薦使用ssh-copy-id 公鑰拷貝工具
檢驗SSH無密碼配置是否成功,運行ssh [email protected],直接進入目標root賬戶提示符,說明配置成功.
5.定義主機與組規則
ansible通過定義好的主機與組規則對匹配的目標主機進行遠程操作,配置規則文件默認是/etc/ansible/hosts。
6.定義主機與組
所有定義的主機與組規則都在/etc/ansible/hosts文件中,為ini文件格式,主機可以用域名、IP、別名進行標識,其中webservers,dbservers為組名,緊跟著主機為其成員
1
2
3
4
5
6
7
|
192.168.1.21:29050 [webservers] 192.168.1.23 [dbservers] 192.168.1.76 |
其中,192.168.1.21:29050的意思是定義一個SSH服務器端口29050的主機,當然我們也可以使用別名來描述一臺主機,如
web1 ansible_ssh_port=22 ansible_ssh_host = 192.168.1.34
web1為定義的一個別名,ansible_ssh_port為主機SSH服務端口,ansible_ssh_host為目標主機