1. 程式人生 > >安裝部署自動化運維之Ansible

安裝部署自動化運維之Ansible

service firewall sta systemctl 方式安裝 bin src 管理 release

初步了解Ansible
ansible基於Python開發,,集合了眾多運維工具的優點,實現了批量運行命令,部署程序,配置系統等功能。默認通過SSH協議進行遠程命令執行或下發配置,無需部署任何客戶端代理軟件,從而使得自動化環境部署變得更加簡單。可同時支持多臺主機並行管理,使得管理主機更加便捷。

Ansible核心組件
ansible可以看做是一種基於模塊進行工作的框架結構,批量部署能力就是有ansible所運行的模塊實現的。簡而言之ansible是基於“模塊”完成各種“任務”的。
結構圖如下所示
技術分享圖片

ansible組件由如下六部分組成
Ansible core 核心引擎

Host inventory 主機清單:用來定義Ansible所管理的主機,默認是在Ansible的hosts配置文件中定義被管理的主機,同時也支持自定義動態主機清單和指定其他配置文件的位置

Connection plugins 連接插件:負責和被管理主機實現通信。除支持使用SSH連接被管理主機外,ansible還支持其它的連接方式,所以需要有連接插件將各個主機用連接插件連接到ansible

Playbooks(yam1,jinja2)劇本:用來集中定義ansible的任務配置文件,即將多個任務定義在一個劇本中由ansible自動執行,可以由控制主機針對多臺被管理主機同時運行多個任務

Core modules 核心模塊:是ansible自帶的模塊,使用這些模塊將資源分發到被管理主機,使其執行特定任務或匹配特定狀態

Custom modules 自定義模塊:用於完成模塊功能的補充,可借助相關插件完成記錄日誌,發送郵件等功能

安裝部署ansible服務
ansible自動化運維環境由控制主機與被管理主機組成,由於ansible是基於SSH協議進行通信的,所以控制主機安裝ansible軟件後不需要重啟或運行任何程序,被管理主機也不需要安裝或運行任何代理程序。

案例環境如下:
技術分享圖片

1 安裝ansible
可以使用源碼進行安裝,也可以使用操作系統軟件包工具進行安裝。這裏我使用的是CentOS7操作系統,通過yum方式安裝ansible,需要依賴第三方的epel源。

yum install epel-release -y

下載好yum源之後,就可以直接使用yum命令安裝ansible

yum install ansible -y

安裝好之後可以查看ansible軟件的版本信息。

ansible --version
ansible 2.7.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u‘/root/.ansible/plugins/modules‘, u‘/usr/share/ansible/plugins/modules‘]
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Aug  4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]

ansible主要相關配置文件在/etc/ansible目錄下

cd /etc/ansible/
總用量 24
-rw-r--r--. 1 root root 20269 10月  9 09:34 ansible.cfg         #配置文件
-rw-r--r--. 1 root root  1016 10月  9 09:34 hosts                  #管控主機文件
drwxr-xr-x. 2 root root     6 10月  9 09:34 roles

2 配置主機清單
ansible通過讀取默認主機清單/etc/ansible/hosts文件,修改主機與組配置後,可同時連接到多個被管理主機上執行任務。具體配置如下:

vim hosts
[web]                                   #被管理主機分類
192.168.199.130
[mysql]                                #被管理主機分類
192.168.199.131

3 設置SSH無密碼登錄
為了避免ansible下發指令時輸入被管理主機的密碼,可以通過證書簽名達到SSH無密碼登錄的效果,使用ssh-keygen產生一對密匙,使用ssh-copy-id來下發生成的公匙
關閉三臺服務器的防火墻

systemctl stop firewalld.service
setenforce 0

配置秘鑰驗證

ssh-keygen -t rsa
ssh-copy-id [email protected]
ssh-copy-id [email protected]

到此,ansible的環境就部署完成了。

安裝部署自動化運維之Ansible