1. 程式人生 > >slatstack部署nginx一鍵推送

slatstack部署nginx一鍵推送

一、SaltStack基本介紹:

(一)SaltStack作用於僕從和主拓撲。SaltStack與特定的命令結合使用可以在一個或多個下屬執行。實現這一點,此時Salt Master可以發出命令,如salt '*' cmd.run 'ls -l /'。

除了執行遠端命令,SaltStack允許管理員使用“grain”。 grain可以在SaltStack僕從執行遠端查詢,因此收集僕從的狀態資訊並允許管理員在一箇中央位置儲存資訊。SaltStack也可以幫助管理員 定義目標系統上的期望狀態。這些狀態在應用時會用到.sls檔案,其中包含了如何在系統上獲得所需的狀態非常具體的要求。

由於它提供了在管理遠端系統的靈活性,SaltStack-based產品迅速獲得利益。該功能可以對比由狀態管理系統提供的功能,如Puppet和Ansible。SaltStack很大程度上得益於快速的採用率,它包括一個在管理系統上執行遠端命令的有效方式。

(二).Salt的核心功能
1.使命令傳送到遠端系統是並行的而不是序列的
2.使用安全加密的協議
3.使用最小最快的網路載荷
4.提供簡單的程式設計介面
Salt同樣引入了更加細緻化的領域控制系統來遠端執行,使得系統成為目標不止可以通過主機名,還可以通過系統屬性。
(三).salt使用Python客戶端介面
為了允許簡單的擴充套件,Salt執行程式可以寫為純Python模組。資料從Salt執行過程中收集到可以傳送回master服務端,或者傳送到任何任意程式。Salt可以從一個簡單的Python API呼叫,或者從命令列被呼叫,所以Salt可以用來執行一次性命令,也可以作為一個更大的應用程式的一個組成部分。

配置環境(rhel6.5虛擬機器)
172.25.45.1 server1    master
172.25.45.2 server2
    minion

172.25.45.3 server3    minion

二.安裝salt

1.配置yum源

將要用包所在的檔案目錄(此處是rhel6)放到物理機apache預設釋出目錄下(/var/www/html)

在server1和server2中:

vim /etc/yum.repos.d/rhel-source.repo

yum clean all

yum repolist

2.安裝服務

在兩臺機器/etc/hosts加入本地解析

在server1上:

yum install salt-master -y

etc/init.d/salt-master start

在server2上:

yum install salt-minion -y

編輯server2的minion配置檔案,指定master

vim /etc/salt/minion

/etc/init.d/salt-minion start

在server1中:

salt-key -L                   ###檢視到已經簽名的客戶端

salt-key -A                   ##新增所有

salt server2 test.ping                      ##檢測網路是否通

salt server2 cmd.run hostname   ##顯示server2主機名稱

salt server2 cmd.run 'df -h'           ##檢視磁碟空間使用情況

                         

在minion(server2)端的 /etc/salt/pki/minion 目錄下面會多出一個minion_master.pub 檔案

與master(server1)端的 master.pub一致

yum install -y lsof                             ##列出當前系統開啟檔案的工具

lsof -i: 4505             

在server3上做和server2一樣的配置,然後在在server1中:salt-key -L 檢視到已經簽名的客戶端 salt-key -A   ##新增所有

lsof -i: 4505              ##檢視server3是否連線上

在server1上:

netstat -antlp

4505埠:用來連結slave,釋出訂閱
4506埠:請求響應,模式為:zmq(訊息佇列)

####也可以安裝tree(yum install -y tree)來檢視master和minion連線情況

三、配置自動化部署

修改master端的配置檔案

vim /etc/salt/master

   file_roots: 

      base: 

          - /srv/salt          # 這個目錄沒有,自己建立

(一)一鍵部署httpd:自動重啟httpd服務,更改httpd的預設埠
1.mkdir /srv/salt

/etc/init.d/salt-master restart

2.配置自動化安裝httpd的指令碼

在server1上:

cd /srv/salt/

mkdir apache

cd apache

vim install.sls

    

mkdir files

cd files  

 salt server2 state.sls apache.install

##出現後兩個任務執行失敗的結果 但此時server2上已經安裝好apache

在server2上:

scp /etc/httpd/conf/httpd.conf  server1:/srv/salt/apache/files

執行,在minion端自動安裝了httpd服務,將httpd的配置檔案放到master的base/httpd/files下

 salt server2 state.sls apache.install


 

測試:自動重啟httpd服務,更改httpd的預設埠
在server1中:vim/srv/salt/apache/files/httpd.conf # 編輯配置檔案,修改httpd服務的埠為8080

 salt server2 state.sls apache.install    重新執行此指令碼發現埠改變


在server2中:netstat antlp    ##發現最新的埠號已經從master端推送到minion端
 

做完本次實驗將埠號還原到80 並執行指令碼推送到server2

(二)salt原始碼編譯安裝nginx

yum install python-setproctitle.x86_64 -y    ##由於salt軟體使用python寫的 所以原始碼編譯需要
1.在master端:

mkdir /srv/salt/nginx/files -p

cd /srv/salt/nginx/files                                       # 將nginx的原始碼包放進去

vim install.sls

nginx-install:

     pkg.installed:

          - pkgs:
               - gcc
               - pcre-devel
               - openssl-devel                                            # 安裝原始碼編譯的依賴項
     file.managed:

       - name: /opt/nginx-1.10.1.tar.gz
       - source: salt://nginx/files/nginx-1.10.1.tar.gz    # 原始碼包存放的位置
     cmd.run: ......
        - creates: /usr/local/nginx            # 檢驗條件,當存在這個目錄時,就不再編譯安裝


2.執行指令碼
salt server3 state.sls nginx.install

3.編輯執行指令碼

執行:salt server3 state.sls nginx.service

4.在server3中檢視是否已經安裝nginx

netstat -antlp    ##看出nginx80埠已開啟

(三) nginx的工作程序

在server3上:

 cd /usr/local/nginx/conf/

scp nginx.conf server1:/srv/salt/nginx/files

nginx是自己編輯的指令碼

在server1上:

vim /srv/salt/nginx/service.sls

salt server3 state.sls nginx.service


在server3上:ps ax

在server1改變程序數再次推送

vim  /srv/salt/nginx/files/nginx/conf

在server3上:ps ax

(四)實現建立ngxin使用者並且自動啟動載入

1.在master端,base目錄下建立users/編輯建立使用者和使用者組

vim files/nginx.conf

mkdir /srv/salt/users

vim users/nginx.sls

vim /srv/salt/nginx/service.sls

在server3中檢視:

###############一鍵推送##########

在上面配置好前提下,可以設定多臺機器一鍵推送,在base目錄下建立編輯top.sls,即可實現

salt '*' state.highstate