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

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

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

一:安裝ansible 

開啓倆臺centos

Master 192.168.0.6

Slave 192.168.0.8

二:編輯vim /etc/hosts

截圖04.png

三:安裝 ansible

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

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

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

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

a9c20f9d756cc1716e03a7bce3f4db54.png-wh_

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

1f41713e013ef0e9cd3f6c59f02efd36.png-wh_

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

5c3412faff9eae7f26460b5a6e5d8ae7.png-wh_

ansiblc配置

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

c5c7783209949ea29d9eb61c4e074680.png-wh_

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

9b1b0ba787a5043999a37a5603891872.png-wh_

2 1遠程執行shcll腳本

af271564f08345afb0d0e60bf65e7a2c.png-wh_

2把腳本分到遠程主機

7e2f9b4d05922fb5d8eab9968100b342.png-wh_

2 批量執行腳本

1e14efebd6a328769a2c2a3700e7ac28.png-wh_

2 在遠程主機上查看

2ca3241079960195e5b5c8c1cbff804b.png-wh_

2 拷貝文件

91c4c81741da9b451fae46661564ebec.png-wh_

6拷貝目錄

9248628476204c3b95506127483a8b82.png-wh_

遠程主機查看

f94a30f68281ab8148f5ceb2e7166112.png-wh_

77c158ccd731129b43abc5ace8ee23fa.png-wh_

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

49e817bbdc759269fc6e1a1fe6814b97.png-wh_

二:安裝依賴包

825a7f3b76aeffe8dfe2e6b0143fb162.png-wh_

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

90660ebe070e9c0f507a276ca631cf0c.png-wh_

四:編寫啓動腳本

5652f7bc99b76ec8e307a85b92370cf0.png-wh_

97c046a68e75176d2d6a9cac9e16fe98.png-wh_

21591002018cd446ea30bb371aa36e62.png-wh_

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

# 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

bdf9a5c7042705fd51ee983383be08bd.png-wh_

d4cd6f780effd5188ecea5d5709f05ae.png-wh_

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

865588fa377ea8cdb52024d9f1fb4c96.png-wh_

啓動nginx服務

7b341c2b2048dd54108801de7e495ce3.png-wh_

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 

dba2423feb6a7b420a268c576450dbe3.png-wh_

7e073e6cd68141b0e3eeaa9c5d9d7c9a.png-wh_

ae269e6f61b2b47733d721d5ff950e97.png-wh_

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

7afba41d031c44664ae389b4cc4b123c.png-wh_

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

885d19d32fc5571f8d6ee218bbd4d5d3.png-wh_

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

2:打包nginx拷貝文件

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

ebe7b02ae0748a677252822f29c211dd.png-wh_

3:定義common的sasks

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

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

b965a90786ce66f1473c3a370c59981c.png-wh_

4:定義install的vars

99b4b3c4978fa3a6e4d69f2e24a285a7.png-wh_

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

5:定義install的tasks

c0baa1cbc37211d571026fc2ee04a615.png-wh_

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

670d0200a3f4cd17982033d9eff0c3b7.png-wh_

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

1c22cb510106785c21fcd031cb87d99c.png-wh_

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

6:定義總入口文件

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

b3bf6121d06242536b53be8a836a4a91.png-wh_

7:執行下發

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

043f77293a9f7646225fa92086753169.png-wh_

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

87dcc8d3b944d3975e776685b82e8ea0.png-wh_

8:在遠程機上測試結果

31b3360af4c4390ec432e130e380f8b5.png-wh_

更新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 定義變量

3a197b7da67f159ab64209d17ac3d6e4.png-wh_

3 定義重新加載

1feb15c2aedc9661c2a33fa213be4488.png-wh_

4 定義tasks核心任務

aa7bae6551a4e5fd595350b9baa280bc.png-wh_

4 定義總入口配置

698eb7f4ae3bd9648dee58341a15892d.png-wh_

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

e7e546702240a70ec5f845ae41c50bfc.png-wh_

2 發佈更新

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

3 遠程主機查看同步成功

a48670444efc4cf563a348c6665c84c9.png-wh_

回滾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 定義回滾入口

f304f9006344c82a4de009fcdaee06ed.png-wh_

1 更新 修改虛擬主機文件

551409532497bc9380b10009a70d905e.png-wh_

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

1f1d13dde0a65af3133175fbea602b00.png-wh_


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