5324jj 发表于 2017-2-13 14:52:09

salt部署nginx

尝试使用saltstack部署nginx搭建环境:
master:192.168.25.135    centos 7
master:192.168.25.133    centos 7
master端目录:在/etc/salt/x下新建nginx目录用来存放源码包和配置文件,将源码包下载到这个目录,
   #mkdir//etc/salt/nginx
查看目录:
https://s1.iyunv.com/wyfs02/M02/8D/78/wKiom1idOiGwssbpAAAISau-l5o427.png-wh_500x0-wm_3-wmp_4-s_4264978045.png
编写salt 入口文件top.sls
    #cat top.sls
base:
'*':
    - nginx.install                  //安装sls文件
    - nginx.server               //配置文件
    - nginx.init                      //启动文件
    - nginx.html                  //自定义的首页文件
首先对系统进行初始化配置,安装必要的依赖包
      #cat nginx/init.sls

system_init:
pkg.installed:
    - pkgs:                              //同时安装多个报用复数
      - gcc
      - gcc-c++
      - openssl
      - make
      - unzip
      - openssl-devel
      - zlib
      - zlib-devel
安装文件:

         # cat nginx/install.sls
pcre_install:
file.managed:
    - name: /usr/local/pcre-8.40.zip                     //安装必要的依赖包pcre
    - source: salt://nginx/pcre-8.40.zip
    - user: root
    - group: root
    - mode: 0644
cmd.run:
    - name: cd /usr/local && unzip pcre-8.40.zip && cd pcre-8.40 && ./configure --prefix=/usr/local/pcre && make && make install
    - unless: test-d /usr/local/pcre
    - require:
      - file: pcre_install
nginx_install:
file.managed:
    - name: /usr/local/nginx-1.8.1.tar.gz
    - source: salt://nginx/nginx-1.8.1.tar.gz
    - user: root
    - group: root
    - mode: 0644
cmd.run:
    - name: cd /usr/local && tar zxf nginx-1.8.1.tar.gz && cd nginx-1.8.1 && ./configure --with-pcre=/usr/local/pcre-8.40 --with-http_ssl_module --with-http_stub_status_module --with-file-aio --with-http_dav_module && make && make install
    - unless: test -d /usr/local/nginx
    - require:
      - cmd: pcre_install
      - file: nginx_install
配置文件:
与启动有关的启动文件nginx.service,nginx主配置文件,nginx主配置文件可以先解压nginx源码包后,将配置文件修改后在复制到nginx目录下。
         # cat nginx/nginx.service

Description=nginx service
After=network.target


Type=forking   
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true


WantedBy=multi-user.target
########################################################

         # cat nginx/server.sls

nginx_init:
file.managed:
    - name: /usr/lib/systemd/system/nginx.service
    - source: salt://nginx/nginx.service
    - user: root
    - group: root
    - mode: 754
nginx_conf:
file.managed:
    - name: /usr/local/nginx/conf/nginx.conf
    - source: salt://nginx/nginx.conf
    - user: root
    - group: root
    - mode: 644
nginx_service:
cmd.run:
    - name: systemctl start nginx.service
    - require:
      - file: nginx_init
    - watch:
      - file: /usr/local/nginx/conf/nginx.conf
编写首页文件
       #vim nginx/www.html

hello !
if you see this picture, you are successful
首页sls文件:
       #cat nginx/html.sls
www_html:
file.managed:
    - name: /usr/local/nginx/html/www.html
    - source: salt://nginx/www.html
    - user: root
    - group: root
    - mode: 644
到此配置完成。进行测试
       #salt '192.168.25.133' state.highstate test=Ture      

                         test=Ture   参数是测试是否能执行,但是不会真的去执行安装,只用于测试,也方便排查sls文件的错误。

Succeeded: 9                     //成功的个数
Failed:    0                        //不成功的个数
------------
Total states run:   9         

接下来可以执行安装部署操作了
      #salt '192.168.25.133' state.highstate
查看但会结果,只要没有failed的就是执行成功的。

最后被控端验证,nginx服务是否启动,页面是否能访问:


配置完成。
页: [1]
查看完整版本: salt部署nginx