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以及更新、回滾