Centos7-Ansible-Nginx自動化部署

Ansible自動化批量部署nginx服務器

搭建環境:

主機: Ansible Web1 Web2
系統: Centos7 64Bit
網卡: Vmnet0橋接
IP: Ansible-152.158 Web1-152.159 Web2-152.160
注:清空並關閉以上環境所有主機的防火牆和selinux

關閉防火牆 systemctl stop firewalld.service
禁止防火牆開機自啓 systemctl disable firewalld.service

關閉selinux sed -i 's/SELINUX=enforcing /SELINUX=disabled/g'
/etc/sysconfig/selinux

重啓 reboot
注:重啓後如果可以互相ping通,那麼就開始搭建ansible服務器

一、Ansible-server安裝

安裝方式:
1、從Ansible項目的GitHub源碼庫提取出來安裝,運行Ansible不需root 權限,也不依賴於其他軟件,沒有後臺進程運行,不需要數據庫支撐。

2、使用yum安裝,需要有合適的yum源,對於RHEL、CentOS的官方yum源中沒有 Ansible安裝包,這就需要先安裝支持第三方的yum倉庫組件,最常用的有EPEL、 Remi、RPMForge等。可國內速度較快的高質量yum源網易 163(http://mirrors.163.com)、阿里源(https://opsx.alibaba.com/mirror
注:這裏實驗使用的是默認的centos7自帶的源,並使用yum直接安裝

二、使用yum安裝ansible

1、安裝ansible yum –y install ansible
Centos7-Ansible-Nginx自動化部署
Centos7-Ansible-Nginx自動化部署

2、檢查ansible版本: ansible –version
Centos7-Ansible-Nginx自動化部署

三、設置節點授權的ssh密鑰

1、在Ansible服務端生成密鑰 ssh-keygen
Centos7-Ansible-Nginx自動化部署

2、使用ssh-copy-id命令來複制Ansible公鑰到節點web1和web2
1)複製Ansible公鑰到節點web1 ssh-copy-id -i [email protected]
Centos7-Ansible-Nginx自動化部署

2)複製Ansible公鑰到節點web2 ssh-copy-id -i [email protected]
Centos7-Ansible-Nginx自動化部署

四、配置Ansible定義文件

1、編輯ansible配置文件 vi /etc/ansible/hosts
Centos7-Ansible-Nginx自動化部署
注:將需要ansible自動化的節點IP添加到這裏

2、測試在ansible服務端運行命令(在互相能ping通的情況下)
ansible -m ping 'web-servers'
Centos7-Ansible-Nginx自動化部署

五、執行shell命令

1)查看ansible節點運行時間(uptime)
ansible -m command -a "uptime" 'web-servers'
Centos7-Ansible-Nginx自動化部署

2)查看節點內核版本(uname -r)
ansible -m command -a "uname -r" 'web-servers'
Centos7-Ansible-Nginx自動化部署
注:以上操作部署已完成ansible服務搭建

六、批量部署nginx服務器

兩種Ansible批量部署nginx服務器方式

方式一:yum安裝nginx,使用的是epel-release源
方式二:使用nginx.tar壓縮包解壓安裝nginx

1、在/root/目錄下創建Ansible YAML文件 vi nginx.yaml
Centos7-Ansible-Nginx自動化部署
註釋:
第1行表示該文件是YAML文件,非必須
第2行定義該playbook針對的目標主機,all表示針對所有主機
第3行定義該playbook所有的tasks集合,比如下面我們定義的3個task
第4行定義一個task的名稱,非必須,建議根據task實際任務命名
第5行定義一個狀態的action,比如這裏使用yum模塊實現Nginx軟件包的安裝
第6行到第9行使用template模板去管理/etc/nginx/nginx.conf文件,owner group定義該文件的屬主以及屬組,使用validate參數指文件生成後使用nginx -t -c %s命令去做Nginx文件語法驗證,notify是觸發handler狀態,如果同步後,文件 的MD5值有變化會觸發ReStart Nginx Service這個handler
第10行到第12行是定義一個handler狀態讓Nginx服務重啓,handler的名稱是 ReStart Nginx Service

注:書寫yaml文件時,注意左對齊,同級別應在同一列下,並且不能使用Tab鍵,可以使用空格(隨便空格幾個都行,但是同一級別必須對齊)

2、檢測YAML文件
ansible-playbook nginx.yaml --syntax-check nginx.yaml
Centos7-Ansible-Nginx自動化部署

3、查看YAML文件任務列表 ansible-playbook nginx.yaml --list-task
Centos7-Ansible-Nginx自動化部署

4、查看針對哪些主機做操作 ansible-playbook nginx.yaml --list-hosts
Centos7-Ansible-Nginx自動化部署

5、給兩個節點安裝epel-release源
ansible web-servers -m shell -a 'yum -y install epel-release' -i /etc/ansible/hosts
Centos7-Ansible-Nginx自動化部署
Centos7-Ansible-Nginx自動化部署
Centos7-Ansible-Nginx自動化部署
Centos7-Ansible-Nginx自動化部署

6、給兩個節點安裝nginx
ansible web-servers -m shell -a 'yum -y install nginx' -i /etc/ansible/hosts
Centos7-Ansible-Nginx自動化部署
Centos7-Ansible-Nginx自動化部署
Centos7-Ansible-Nginx自動化部署
Centos7-Ansible-Nginx自動化部署
Centos7-Ansible-Nginx自動化部署
Centos7-Ansible-Nginx自動化部署

7、編輯本地nginx.conf.j2文件(因爲本地沒有安裝nginx所以沒有這個文件需要從節點拷貝到當前/root/下再修改,並以這個修改過的模板來下發給節點)
Centos7-Ansible-Nginx自動化部署
注:根據實際情況要求修改(我這裏使用的默認)

8、確認信息是否正確
ansible-playbook -i /etc/ansible/hosts nginx.yaml -f 2
1)下圖是nginx.conf.j2配置文件未修改,默認執行命令的狀態
Centos7-Ansible-Nginx自動化部署
Centos7-Ansible-Nginx自動化部署

2)這是修改過nginx.conf.j2配置文件執行命令的狀態
Centos7-Ansible-Nginx自動化部署
Centos7-Ansible-Nginx自動化部署

9、這樣我們就完成了 3臺機器的Nginx安裝部署,下面需要對主機的Nginx服務進行覈查,並且確認生成後nginx.conf中的worker_processes參數的值是否正確,執行命令:
ansible -i /etc/ansible/hosts all -m shell -a 'netstat -utpln |grep 80' -f 2
Centos7-Ansible-Nginx自動化部署
注:上圖紅色字體說明並沒有自動重啓nginx,原因是nginx.conf.j2這文件默認沒有修改的情況不滿足執行條件,所以如果想得到下圖,隨意修改點東西即可。
Centos7-Ansible-Nginx自動化部署

10、驗證:瀏覽器訪問兩個節點IP
Web1:http://192.168.152.159
Centos7-Ansible-Nginx自動化部署

Web2:http://192.168.152.160
Centos7-Ansible-Nginx自動化部署
注:nginx自動化部署完成!

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