设为首页 收藏本站
查看: 1400|回复: 0

[经验分享] SaltStack安装Nginx

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-9-26 10:42:59 | 显示全部楼层 |阅读模式
1. 思路整理

五步走:

    整个base环境规划

        工作当中,我们在使用SaltStack的时候,环境目录的规划尽量做到标准化,自己要严格要求好!这也是作为一个运维工程师的基本技能要求。

    安装Nginx(依赖包)

        在本文章中,我的Example使用的是源码安装,也是当前主流的安装方式!(这里会用到pkg.installed,cmd.run等多种状态管理模块)

    配置管理

        在安装好服务之后,我们需要对服务进行基本的配置管理,通过模板文件来进行统一管理!(会用到"file.managed","file.directory"等多种状态管理)

    服务启动

        在安装和配置完成之后,就可以启动服务了!(这里会用到service.running等状态管理模块)

    top高级状态指定

        在上述完成之后,在工作中,我们需要指定哪些角色主机安装Nginx服务,这时候我们就需要在“top_file”中指定。

1.1 base环境规划

这里我展示一下我的目录规划。

    在master配置文件中的"file_roots"配置:

[iyunv@linux-node1 ~]# cd /etc/salt/
[iyunv@linux-node1 ~]# vim master
······
file_roots:
  base:
    - /srv/salt/base
  prod:
    - /srv/salt/prod
······

我的所有salt项放在基础环境(base)及生产环境(prod)两个项目目录下。

    然后再/srv/salt/下创建两个目录,base和prod

[iyunv@linux-node1 ~]# cd /srv/salt/
[iyunv@linux-node1 salt]# mkdir -pv base prod
[iyunv@linux-node1 salt]# tree
.
├── base
│   ├── init
│   │   ├── audit.sls
│   │   ├── dns.sls
│   │   ├── epel.sls
│   │   ├── files
│   │   │   ├── resolv.conf
│   │   │   └── zabbix_agentd.conf
│   │   ├── history.sls
│   │   ├── init.sls
│   │   ├── sysctl.sls
│   │   └── zabbix-agent.sls
│   └── top.sls
└── prod
    ├── bbs
    │   ├── files
    │   │   └── nginx-bbs.conf
    │   ├── memcached.sls
    │   └── web.sls
    ├── cluster
    │   ├── files
    │   │   ├── haproxy-outside.cfg
    │   │   └── haproxy-outside-keepalived.conf
    │   ├── haproxy-outside-keepalived.sls
    │   └── haproxy-outside.sls
    └── modules
        ├── haproxy
        │   ├── files
        │   │   ├── haproxy-1.6.3.tar.gz
        │   │   └── haproxy.init
        │   └── install.sls
        ├── keepalived
        │   ├── files
        │   │   ├── keepalived-1.2.17.tar.gz
        │   │   ├── keepalived.init
        │   │   └── keepalived.sysconfig
        │   └── install.sls
        ├── libevent
        │   ├── files
        │   │   └── libevent-2.0.22-stable.tar.gz
        │   └── install.sls
        ├── memcached
        │   ├── files
        │   │   └── memcached-1.4.24.tar.gz
        │   └── install.sls
        ├── nginx
        │   ├── files
        │   │   ├── nginx-1.10.1.tar.gz
        │   │   ├── nginx.conf
        │   │   └── nginx-init
        │   ├── install.sls
        │   └── service.sls
        ├── pcre
        │   ├── files
        │   │   └── pcre-8.37.tar.gz
        │   └── install.sls
        ├── php
        │   ├── files
        │   │   ├── init.d.php-fpm
        │   │   ├── memcache-2.2.7.tgz
        │   │   ├── php-5.6.9.tar.gz
        │   │   ├── php-fpm.conf.default
        │   │   ├── php.ini-production
        │   │   └── redis-2.2.7.tgz
        │   ├── install.sls
        │   ├── php-memcache.sls
        │   └── php-redis.sls
        ├── pkg
        │   └── make.sls
        └── user
            ├── test.sls
            └── www.sls

25 directories, 47 files

值得注意的是:在写SLS文件的时候,尽量每个服务单独写一个SLS,将整个项目中的服务进行解耦,方便我们以后更好的引用。如果在别的项目中需要的时候,只需要include这个SLS就可以了!
2. 编写安装Nginx的SLS文件
2.1 安装依赖包的SLS

[iyunv@linux-node1 prod]# cd modules/
[iyunv@linux-node1 modules]# cd pkg/
[iyunv@linux-node1 pkg]# vim make.sls
make-pkg:
  pkg.installed:
    - pkgs:
      - gcc
      - gcc-c++
      - glibc
      - make
      - autoconf
      - openssl
      - openssl-devel
      - pcre
      - pcre-devel

2.2 编写安装Nginx的SLS文件

    需要提前下载源码包:

[iyunv@linux-node1 files]# wget http://nginx.org/download/nginx-1.10.1.tar.gz

Note:

    需要放在/srv/salt/prod/modules/nginx/files/下。

    编写SLS文件

[iyunv@linux-node1 ~]# cd /srv/salt/prod/modules/nginx/
[iyunv@linux-node1 ~]# vim install.sls
include:
  - module.pkg.make      
  - module.user.www

nginx-source-install:
  file.managed:
    - name: /usr/local/src/nginx-1.10.1.tar.gz
    - source: salt://modules/nginx/files/nginx-1.10.1.tar.gz
    - user: root
    - group: root
    - mode: 755
  cmd.run:
    - name: cd /usr/local/src && tar zxf nginx-1.10.1.tar.gz && cd nginx-1.10.1&& ./configure --prefix=/usr/local/nginx-1.10.1 --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-file-aio --with-http_dav_module && make && make install && ln -s /usr/local/nginx-1.10.1 /usr/local/nginx && chown -R www:www /usr/local/nginx
    - unless: test -d /usr/local/nginx
    - requrie:
      - user: www-user-group
      - file: nginx-install
      - pkg: make-pkg

这样一个Nginx的安装SLS文件,就完成了!接下来要做的就是配置管理。在这里我们的安装文件和配置启动文件写成了两个,这样方便以后我们多次使用。
2.3 配置管理及启动SLS文件

[iyunv@linux-node1 ~]# vim service.sls
include:
  - modules.nginx.install

nginx-init:
  file.managed:
    - name: /etc/init.d/nginx
    - source: salt://modules/nginx/files/nginx-init
    - mode: 755
    - user: root
    - group: root
  cmd.run:
    - name: chkconfig --add nginx
    - unless: chkconfig --list|grep nginx
    - require:
      - file: nginx-init

/usr/local/nginx/conf/nginx.conf:
  file.managed:
    - source: salt://modules/nginx/files/nginx.conf
    - user: www
    - group: www
    - mode: 644

#Starting Nginx Server
nginx-service:
  service.running:
    - name: nginx
    - enabled: True
    - reload: True
    - watch:
      - file: /usr/local/nginx/conf/nginx.conf
      - file: nginx-online

#下面的两个ID声明,一个是存放在线的服务主机,一个是存放已经从线上撤下来的服务主机。
nginx-online:
  file.directory:
    - name: /usr/local/nginx/conf/vhost_online

nginx-offline:
  file.directory:
    - name: /usr/local/nginx/conf/vhost_offline

Note:

    在这个文件中,创建vhostonline和vhostoffline的目的是存放线上主机和线下服务主机的目录。可能有的人问,为什么要这么做?原因就是我们下线的主机最好不要删除,而是另存为。这样方便以后我们再次使用的时候能够拿到数据。

3. 在top file中指定哪些主机执行这个安装操作

    注意:我的top.sls是放在我的/srv/salt/base/下的。

[iyunv@linux-node1 base]# vim top.sls
base:
  '*':
    - init.env_init

prod:
  'linux-node*':
    - modules.nginx.install
    - modules.nginx.service

    主要添加的是prod后面的内容,表示匹配满足主机名为"linux-node*"这种格式的Minion都可以执行按照Nginx操作。

这样我们就实现了用SaltStack安装Nginx了。

Daily sentence

No matter how far you may fly, never forget where you come from.




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-277674-1-1.html 上篇帖子: CentOS 7.2 部署Saltstack 下篇帖子: salt-ssh安装salt-minion
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表