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

[经验分享] 自动化运维Saltstack系列(六)之配置管理系统模块

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-10-10 08:36:07 | 显示全部楼层 |阅读模式
架构图
Saltstack配置管理大型web架构网站其实并不是很难,最主要是合理管理各功能模块之间依赖关系,尽量独立各功能模块,让每一个系统功能都可以被业务引用。
1476016541399068.jpg

Saltstack环境目录
1
2
3
4
5
6
7
8
9
10
file_roots:
  base:
    - /srv/salt/base
  prod:
    - /srv/salt/prod
pillar_roots:
  base:
    - /srv/pillar/base
  prod:
    - /srv/pillar/prod




Saltstack目录结构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
[iyunv@saltstack-node1 srv]# tree
.
├── pillar
│   ├── base
│   │   ├── top.sls
│   │   └── zabbix
│   │       └── agent.sls
│   └── prod
└── salt
    ├── base
    │   ├── _grains
    │   │   └── my_grain.py
    │   ├── init
    │   │   ├── audit.sls
    │   │   ├── dns.sls
    │   │   ├── epel.sls
    │   │   ├── files
    │   │   │   ├── resolv.conf
    │   │   │   └── zabbix_agentd.conf
    │   │   ├── history.sls
    │   │   ├── init.sls
    │   │   ├── sysctl.sls
    │   │   └── zabbix-agent.sls
    │   ├── _modules
    │   │   └── my_disk.py
    │   └── 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.9.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
            │   │   ├── php.ini-production
            │   │   └── redis-2.2.7.tgz
            │   ├── install.sls
            │   ├── php-memcache.sls
            │   └── php-redis.sls
            ├── pkg
            │   └── make-pkg.sls
            ├── user
            │   └── www.sls
            └── web
                ├── bbs.sls
                └── files
                    └── bbs.conf




环境初始化
1)历史命令优化添加用户、时间信息
1
2
3
4
5
[iyunv@saltstack-node1 init]# vim history.sls
/etc/profile:
  file.append:
    - text:
      - export HISTTIMEFORMAT="%F %T `whoami` "




2)历史命令添加日志审计
1
2
3
4
5
[iyunv@saltstack-node1 init]# vim audit.sls
/etc/bashrc:
  file.append:
    - text:
      - export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }'




3)统一DNS
1
2
3
4
5
6
7
[iyunv@saltstack-node1 init]# vim dns.sls
/etc/resolv.conf:
  file.managed:
    - source: salt://init/files/resolv.conf
    - user: root
    - gourp: root
    - mode: 644




4)自定义epel源(这里可以换成自己的yum仓库地址)
1
2
3
4
5
6
[iyunv@saltstack-node1 init]# vim epel.sls
yum_repo_release:
  pkg.installed:
    - sources:
      - epel-release: http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
    - unless: rpm -qa | grep epel-release-7




5)系统初始优化
1
2
3
4
5
6
7
8
9
10
11
12
13
[iyunv@saltstack-node1 init]# vim sysctl.sls
net.ipv4.ip_local_port_range:
  sysctl.present:
    - value: 10000 65000
fs.file-max:
  sysctl.present:
    - value: 2000000
net.ipv4.ip_forward:
  sysctl.present:
    - value: 1
vm.swappiness:
  sysctl.present:
    - value: 0




6)zabbix-agents配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[iyunv@saltstack-node1 init]# vim zabbix-agent.sls
zabbix-agent:
  pkg.installed:
    - name: zabbix-agent
  file.managed:
    - name: /etc/zabbix/zabbix_agentd.conf
    - source: salt://init/files/zabbix_agentd.conf
    - template: jinja
    - backup: minion
    - defaults:
      Zabbix_Server: {{ pillar['Zabbix_Server'] }}
      Hostname: {{ grains['fqdn'] }}
    - require:
      - pkg: zabbix-agent
  service.running:
    - enable: True
    - watch:
      - pkg: zabbix-agent
      - file: zabbix-agent
zabbix_agentd.conf.d:
  file.directory:
    - name: /etc/zabbix/zabbix_agentd.d
    - watch_in:
      - service: zabbix-agent
    - require:
      - pkg: zabbix-agent
      - file: zabbix-agent
7)合计初始化功能
[iyunv@saltstack-node1 init]# vim init.sls
include:
  - init.dns
  - init.history
  - init.audit
  - init.epel
  - init.sysctl
  - init.zabbix-agent




业务模块
业务模块目录
1
2
3
4
5
6
[iyunv@saltstack-node1 ~]# cd /srv/salt/prod/
[iyunv@saltstack-node1 prod]# ll
total 0
drwxr-xr-x  3 root root  52 Sep 28 17:28 bbs
drwxr-xr-x  3 root root  81 Sep 28 17:28 cluster
drwxr-xr-x 12 root root 132 Sep 28 17:28 modules




服务部署安装模块
1
2
3
4
5
6
7
8
9
10
11
12
13
[iyunv@saltstack-node1 prod]# cd modules/
[iyunv@saltstack-node1 modules]# ll
total 0
drwxr-xr-x 3 root root 36 Sep 28 17:28 haproxy
drwxr-xr-x 3 root root 36 Sep 28 17:28 keepalived
drwxr-xr-x 3 root root 36 Sep 28 17:28 libevent
drwxr-xr-x 3 root root 36 Sep 28 17:28 memcached
drwxr-xr-x 3 root root 54 Sep 28 17:28 nginx
drwxr-xr-x 3 root root 36 Sep 28 17:28 pcre
drwxr-xr-x 3 root root 79 Sep 28 17:28 php
drwxr-xr-x 2 root root 25 Sep 28 17:28 pkg
drwxr-xr-x 2 root root 20 Sep 28 17:28 user
drwxr-xr-x 3 root root 32 Sep 28 17:28 web




1)安装系统必要组件包
1
2
3
4
5
6
7
8
9
10
11
12
13
[iyunv@saltstack-node1 pkg]# vim make-pkg.sls
make-pkg:
  pkg.installed:
    - pkgs:
      - gcc
      - gcc-c++
      - glibc
      - make
      - autoconf
      - openssl
      - openssl-devel
      - pcre
      - pcre-devel




2)安装Haproxy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[iyunv@saltstack-node1 haproxy]# vim install.sls
include:
  - modules.pkg.make-pkg
haproxy-install:
  file.managed:
    - name: /usr/local/src/haproxy-1.6.3.tar.gz
    - source: salt://modules/haproxy/files/haproxy-1.6.3.tar.gz
    - mode: 755
    - user: root
    - group: root
  cmd.run:
    - name: cd /usr/local/src && tar xf haproxy-1.6.3.tar.gz && cd haproxy-1.6.3 && make TARGET=2628 PREFIX=/usr/local/haproxy-1.6.3 && make install PREFIX=/usr/local/haproxy-1.6.3 && ln -s /usr/local/haproxy-1.6.3 /usr/local/haproxy
    - require:
      - pkg: make-pkg
      - file: haproxy-install
    - unless: test -d /usr/local/haproxy
haproxy-init:
  file.managed:
    - name: /etc/init.d/haproxy
    - source: salt://modules/haproxy/files/haproxy.init
    - mode: 755
    - user: root
    - group: root
    - require_in:
      - file: haproxy-install
  cmd.run:
    - name: chkconfig --add haproxy
    - unless: chkconfig --list|grep haproxy
net.ipv4.ip_nonlocal_bind:
  sysctl.present:
    - value: 1
/etc/haproxy:
  file.directory:
    - user: root
    - group: root
    - mode: 755




3)安装keepalived
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[iyunv@saltstack-node1 keepalived]# vim install.sls
{% set keepalived_tar = 'keeplived-1.2.17.tar.gz' %}
{% set keepalived_source = 'salt://modules/keepalived/files/keepalived-1.2.17.tar.gz' %}
keepalived-install:
  file.managed:
    - name: /usr/local/src/{{ keepalived_tar }}
    - source: {{ keepalived_source }}
    - mode: 755
    - user: root
    - group: root
  cmd.run:
    - name: cd /usr/local/src && tar zxf keepalived-1.2.17.tar.gz && cd keepalived-1.2.17 && ./configure --prefix=/usr/local/keepalived --disable-fwmark && make && make install
    - unless: test -d /usr/local/keepalived
    - require:
      - file: keepalived-install
/etc/sysconfig/keepalived:
  file.managed:
    - source: salt://modules/keepalived/files/keepalived.sysconfig
    - mode: 644
    - user: root
    - group: root
/etc/init.d/keepalived:
  file.managed:
    - source: salt://modules/keepalived/files/keepalived.init
    - mode: 755
    - user: root
    - group: root
keepalived-init:
  cmd.run:
    - name: chkconfig --add keepalived
    - unless: chkconfig --list | grep keepalived
    - require:
      - file: /etc/init.d/keepalived
/etc/keepalived:
  file.directory:
    - user: root
    - group: root




4)libevent安装
1
2
3
4
5
6
7
8
9
10
11
12
13
[iyunv@saltstack-node1 libevent]# vim install.sls
libevent-source-install:
  file.managed:
    - name: /usr/local/src/libevent-2.0.22-stable.tar.gz
    - source: salt://modules/libevent/files/libevent-2.0.22-stable.tar.gz
    - user: root
    - group: root
    - mode: 644
  cmd.run:
    - name: cd /usr/local/src && tar zxf libevent-2.0.22-stable.tar.gz && cd libevent-2.0.22-stable &&  ./configure --prefix=/usr/local/libevent && make && make install
    - unless: test -d /usr/local/libevent
    - require:
      - file: libevent-source-install




5)安装pcre
1
2
3
4
5
6
7
8
9
10
11
12
13
[iyunv@saltstack-node1 pcre]# vim install.sls
pcre-source-install:
  file.managed:
    - name: /usr/local/src/pcre-8.37.tar.gz
    - source: salt://modules/pcre/files/pcre-8.37.tar.gz
    - user: root
    - group: root
    - mode: 755
  cmd.run:
    - name: cd /usr/local/src && tar zxf pcre-8.37.tar.gz && cd pcre-8.37 && ./configure --prefix=/usr/local/pcre && make && make install
    - unless: test -d /usr/local/pcre
    - require:
      - file: pcre-source-install




6)Nginx安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[iyunv@saltstack-node1 nginx]# vim install.sls
include:
  - modules.pcre.install
  - modules.user.www
nginx-source-install:
  file.managed:
    - name: /usr/local/src/nginx-1.9.1.tar.gz
    - source: salt://modules/nginx/files/nginx-1.9.1.tar.gz
    - user: root
    - group: root
    - mode: 755
  cmd.run:
    - name: cd /usr/local/src && tar zxf nginx-1.9.1.tar.gz && cd nginx-1.9.1&& ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-file-aio --with-http_dav_module --with-pcre=/usr/local/src/pcre-8.37 && make && make install && chown -R www:www /usr/local/nginx
    - unless: test -d /usr/local/nginx
    - require:
      - user: www-user-group
      - file: nginx-source-install
      - pkg: make-pkg
      - cmd: pcre-source-install




Nginx服务配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[iyunv@saltstack-node1 nginx]# 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
nginx-service:
  file.directory:
    - name: /usr/local/nginx/conf/vhost_online
    - require:
      - cmd: nginx-source-install
  service.running:
    - name: nginx
    - enable: True
    - reload: True
    - require:
      - cmd: nginx-init
    - watch:
      - file: /usr/local/nginx/conf/nginx.conf




7)统一用户
1
2
3
4
5
6
7
8
9
10
11
[iyunv@saltstack-node1 user]# vim www.sls
www-user-group:
  group.present:
    - name: www
    - gid: 1000
  user.present:
    - name: www
    - fullname: www
    - shell: /sbin/nologin
    - uid: 1000
    - gid: 1000




8)安装memcache
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[iyunv@saltstack-node1 memcached]# vim install.sls
include:
  - modules.libevent.install
memcached-source-install:
  file.managed:
    - name: /usr/local/src/memcached-1.4.24.tar.gz
    - source: salt://modules/memcached/files/memcached-1.4.24.tar.gz
    - user: root
    - group: root
    - mode: 644
  cmd.run:
    - name: cd /usr/local/src && tar zxf memcached-1.4.24.tar.gz && cd memcached-1.4.24&& ./configure --prefix=/usr/local/memcached --enable-64bit --with-libevent=/usr/local/libevent && make && make install
    - unless: test -d /usr/local/memcached
    - require:
      - cmd: libevent-source-install
      - file: memcached-source-install






运维网声明 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-283763-1-1.html 上篇帖子: 自动化运维Saltstack系列(五)之中型Web网站架构设计 下篇帖子: 自动化运维Saltstack系列(七)之配置管理业务模块 管理系统
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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