1. 程式人生 > >ansible 發部署nginx以及更新、回滾

ansible 發部署nginx以及更新、回滾

ansible 發部署nginx以及更新、回滾

ansible 發部署nginx以及更新、回滾

ansible 和 saltstack 一樣都是基於 Python 開發的,是比 puppet 和 saltstack 更輕量級的運維自動化工具。

一:安裝ansible

開啟倆臺centos

Master 192.168.0.6

Slave 192.168.0.8

二:編輯vim /etc/hosts

技術分享圖片

三:安裝 ansible

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

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

四:ssh 密鑰配置 直接回車 不設置密鑰密碼

這樣會在root目錄下生產.ssh目錄 會生成兩個文件 id_rsa 和 id_rsa.pub 。

技術分享圖片

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

技術分享圖片

[root@master .ssh]# cat /root/.ssh/authorized_key >> /root/.ssh/authorized_key

技術分享圖片

ansiblc配置

[root@master .ssh]# vim /etc/ansible/hosts

技術分享圖片

測試執行遠程命令 "-m" 指定模塊名,"-a" 指定相應命令,這樣就可以批量執行命令

技術分享圖片

2 1遠程執行shcll腳本

技術分享圖片

2把腳本分到遠程主機

技術分享圖片

2 批量執行腳本

技術分享圖片

2 在遠程主機上查看

技術分享圖片

2 拷貝文件

技術分享圖片

6拷貝目錄

技術分享圖片

遠程主機查看

技術分享圖片

技術分享圖片

一:首先我們需要在安裝了 ansible 的機器上編譯安裝好nginx

技術分享圖片

二:安裝依賴包

技術分享圖片

三配置編譯參數 結束後在 make && make install 編譯

技術分享圖片

四:編寫啟動腳本

技術分享圖片

技術分享圖片

技術分享圖片

保存退出修改啟動腳本權限

# chmod 755 /etc/init.d/nginx

五:更改配置文件

[root@localhost nginx-1.4.4]# > /usr/local/nginx/conf/nginx.conf 清空原有的配置

[root@localhost nginx-1.4.4]# vim /usr/local/nginx/conf/nginx.conf

技術分享圖片

技術分享圖片

保存退出後檢查版本是否正常

技術分享圖片

啟動nginx服務

技術分享圖片

Keepalived安裝

優勢:主要用來提供故障切換和健康檢查,節點高可用,及時隔離並替換新的服務器

[root@master /]# yum -y install gcc gcc+ gcc-c++

[root@slave nginx-1.4.4]# yum install popt-devel openssl openssl-devel libssl-dev libnl-devel popt-devel -y

安裝keepalived 然後編譯

[root@master keepalived-1.2.13]# ./configure && make && make install

技術分享圖片

技術分享圖片

技術分享圖片

飄逸地址已經成功 下面配置backup端 提高高可用性

技術分享圖片

master端keepalived暫停飄逸IP地址自動切換 修復完成 自動切換回來 實現高可用

技術分享圖片

roles目錄下有三個角色,common為一些準備操作,delete為刪除nginx的操作,install為安裝nginx的操作。每個角色下面又有幾個目錄,handlers下面是當發生改變時要執行的操作,通常用在配置文件發生改變,重啟服務。

2:打包nginx拷貝文件

[root@master local]# tar czvf nginx.tar.gz nginx

技術分享圖片

3:定義common的sasks

[root@master local]# cd /etc/ansible/nginx_install/roles/

[root@master roles]# vim common/tasks/main.yml

技術分享圖片

4:定義install的vars

技術分享圖片

這裏的 nginx_user 要與 nginx.conf 配置文件中定義的用戶一致

5:定義install的tasks

技術分享圖片

拷貝文件到遠程機器/tmp/目錄下,然後解壓。其中的 copy: src 相對於 install/files/ 目錄下,template: src 相對於 install/templates/ 目錄下。

技術分享圖片

對遠程機器建立用戶,啟動服務,刪除壓縮包等操作。不過我們還可以定義nginx_web_dir目錄,存放虛擬主機文件

技術分享圖片

創建的是調用 copy.yml 和 install.yml 的文件。

6:定義總入口文件

[root@master roles]# cd /etc/ansible/nginx_install/

技術分享圖片

7:執行下發

先修改下 hosts 文件,因為之前實驗把本機也添加到了 [testhost] 組裏面去了,這裏只保留一個遠程機:

技術分享圖片

[root@master nginx_install]# ansible-playbook install.yml

技術分享圖片

8:在遠程機上測試結果

技術分享圖片

更新nginx

生產環境中大多時候是需要管理配置文件的,安裝軟件包只是在初始化環境的時候用一下。

1 新建及拷貝文件

[root@master ansible]# mkdir -p nginx_config/roles

[root@master ansible]# cd nginx_config/roles/

[root@master roles]# mkdir -p new/{vars,files,tasks,handlers}

[root@master roles]# cp /usr/local/nginx/conf/nginx.conf new/files

[root@master roles]# cp -r /usr/local/nginx/conf/vhosts new/files

其中 new 為更新時用到的,後面會新建old 為回滾時用到的,new/files 下面為 nginx.conf文件 和 vhosts 目錄,handlers 為重啟 nginx 服務所需目錄。

2 定義變量

技術分享圖片

3 定義重新加載

技術分享圖片

4 定義tasks核心任務

技術分享圖片

4 定義總入口配置

技術分享圖片

4 測試更新 新建一個虛擬主機配置文件

技術分享圖片

2 發布更新

[root@master nginx_config]# ansible-playbook update.yml

3 遠程主機查看同步成功

技術分享圖片

回滾nginx

關於回滾,需要在執行 playbook 之前先備份一下舊的配置千萬不能隨便去修改線上機器的配置,並且要保證 new/files 目錄下面的配置和線上的配置一致。

1 備份

[root@master nginx_config]# mkdir roles/old

[root@master nginx_config]# rsync -av roles/new/roles/old

這裏用rsync而不用cp,是因為rsync會直接覆蓋相同的文件。

2 定義回滾入口

技術分享圖片

1 更新 修改虛擬主機文件

技術分享圖片

1 下發更新 遠程主機是否更新成功

技術分享圖片


本文出自 “chaixinwang” 博客,請務必保留此出處http://chaixinwang.blog.51cto.com/13052229/1983484

ansible 發部署nginx以及更新、回滾