saltstack源碼安裝nginx
因為涉及到的目錄較多,因此先規劃好目錄結構
[root@pc1 dev]# tree /srv/dev/
/srv/dev/nginx_install
│ ├ initpkg.sls
│ ├ initall .sls
│ ├ nginx_init.sls
│ ├ files
│ └── nginx-1.9.2.tar.gz
│ └── nginx.service
│
└── top.sls
一、修改配置文件,為不同的環境配置不同的文件目錄
[root@pc1 /]#vim /etc/salt/master
file_roots:
base:
- /srv/base
dev:
- /srv/dev
prod:
- /srv/prod
[root@pc1 salt]# systemctl restart salt-master.service 重啟服務
[root@pc1 salt]# mkdir /srv/{base,dev,prod} 創建目錄
二、指定環境路徑
1、 部署源碼包運行環境
[root@pc1 dev]# vim top.sls
dev:
‘pc1’
- nginx_install 只定義目錄位置 會默認去init.sls 文件找
2、創建目錄,並把源碼包拷貝過來
[root@pc1 dev]#mkdir nginx_install
[root@pc1 nginx_install]# mkdir files 為了方便另創一個目錄
[root@pc1 nginx_install]# cp nginx-1.9.2.tar.gz files/ 拷貝源碼包
3、安裝依賴包
使用pkg.installed模塊安裝依賴包
[root@pc1 nginx_install]# vim initpkg.sls
init_pkg_install:
pkg.installed:
- name:
- gcc
- gcc-c++
- make
- autoconf
- openssl-devel
- pcre-devel
4、設定源碼編譯方式
首先通過file.managed模塊將源碼分發至服務器
[root@pc1 nginx_install]# vim install.sls
nginx_src_install:
file.managed:
- name: /usr/local/src/nginx-1.9.2.tar.gz 目標路徑
- source: salt://nginx_install/files/nginx-1.9.2.tar.gz 文件源路經
- user: root 所有者
- group: root 所屬主
- mode: 644 權限
為了方便可以寫個小腳本執行源碼安裝
build_src: 指定源碼安裝腳本路徑
cmd.scropt:
- source: salt://nginx_install/files/build.sh 指定腳本路徑
- cwd: usrlocal/src
- user: root
- unless: test -d usrlocal/nginx 判斷有這個文件就不執行腳本
- repuire:
- file: nginx_src_install 上面執行完才會執行腳本
- pkg: init_pkg_install 判斷是否已經安裝依賴包
5、創建腳本並存放在指定路徑
[root@pc1 nginx_install]# vim files/build.sh
#!/bin/bash
useradd -s /sbin/nologin nginx
tar zxf nginx-1.9.12.tar.gz
cd nginx-1.9.12
./configure —prefix=usrlocal/nginx —user=nginx —group=nginx
make
make install
三、配置開機啟動服務
1、創建開機啟動的文件
[root@pc1 nginx_install]# vim nginx_init.sls
nginx_init:
file.managed:
- name: usrlib/systemd/system/nginx.service 拷貝服務單元文件
- source: salt://nginx_install/files/nginx.service 源文件路徑
- user: root
- group: root
- mode: 644
nginx_service: 設定服務運行狀態
sevrice.running:
- name: nginx
- enable: true
- restart: true
- watch: 判斷上述執行成功才運行服務
- file: nginx_init
2、創建init.sls運行文件
[root@pc1 nginx_install]# vim init.sls
include: 按順序執行
- .initpkg . 當前目錄
- .initall
- .nginx_init
3、進行測試.
[root@pc1 nginx_install]# salt ‘pc2’ state.highstate saltenv=dev test=true
如果沒有報錯就執行False
[root@pc1 nginx_install]# salt ‘pc2’ state.highstate saltenv=dev test=false
4、進入pc2上查看端口是否開啟
nginx.service文件
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=usrlocal/nginx/logs/nginx.pid
ExecStartPre=usrlocal/nginxsbinnginx -t -c usrlocal/nginx/conf/nginx.conf
ExecStart=usrlocal/nginxsbinnginx -c usrlocal/nginx/conf/nginx.conf
ExecReload=usrlocal/nginxsbinnginx -s reload
ExecStop=usrlocal/nginxsbinnginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
saltstack源碼安裝nginx