配置管理

haproxy的安装部署

haproxy各版本安装包下载路径https://www.haproxy.org/download/1.6/src/,跳转地址为http,改为https即可

创建相关目录

  1. # 创建配置目录
  2. [root@linux-node1 ~]# mkdir /srv/salt/prod/pkg/
  3. [root@linux-node1 ~]# mkdir /srv/salt/prod/haproxy/
  4. # 启动脚本、配置文件放在这里
  5. [root@linux-node1 ~]# mkdir /srv/salt/prod/haproxy/files

编写pkg-init文件

  1. [root@linux-node1 ~]# cd /srv/salt/prod/pkg/
  2. [root@linux-node1 pkg]# vim pkg-init.sls
  3. pkg-init: # ID describe
  4. pkg.installed: # pkg模块 installed方法
  5. - names:
  6. - gcc
  7. - gcc-c++
  8. - glibc
  9. - make
  10. - autoconf
  11. - openssl
  12. - openssl-devel

编写方法:

首先自己先安装一遍,然后将步骤移植到sls文件中。

  1. [root@linux-node1 prod]# cd /srv/salt/prod/haproxy/files/
  2. [root@linux-node1 files]# ll
  3. -rw-r--r-- root root 11 : haproxy-1.6..tar.gz
  4. [root@linux-node1 files]# cp haproxy-1.6..tar.gz /usr/local/src/
  5. [root@linux-node1 files]# cd /usr/local/src/
  6. [root@linux-node1 src]# tar zxf haproxy-1.6..tar.gz
  7. [root@linux-node1 src]# cd haproxy-1.6.
  8. [root@linux-node1 haproxy-1.6.]# make TARGET=linux26 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy

修改启动文件

  1. [root@linux-node1 examples]# pwd
  2. /usr/local/src/haproxy-1.6./examples
  3. [root@linux-node1 examples]# vim haproxy.init
  4. BIN=/usr/local/haproxy/sbin/$BASENAME
  5. # 拷贝启动文件到salt目录
  6. [root@linux-node1 examples]# cp haproxy.init /srv/salt/prod/haproxy/files/

编写安装文件

  1. [root@linux-node1 examples]# cd /srv/salt/prod/haproxy/
  2. [root@linux-node1 haproxy]# vim install.sls
  3.  
  4. include: # 导入pkg目录下的pkg-init.sls文件
  5. - pkg.pkg-init
  6.  
  7. haproxy-install: # 定义声明一个ID,方便调用,如果不写,就必须在这儿写上下面name声明,表文件路径
  8. file.managed: # file模块下的managed方法
  9. - name: /usr/local/src/haproxy-1.6..tar.gz # name声明,文件路径。说明:minion端是没有这个路径和文件的,但是它会从下面source路径将文件拷贝到该路径,没有文件夹就创建
    - source: salt://haproxy/files/haproxy-1.6.2.tar.gz # 文件源,minion端从这里拷贝
  10. - user: root # 用户
  11. - group: root # 组
  12. - mode: # 权限
  13. cmd.run: # 执行命令
  14. - name: cd /usr/local/src/ && tar zxf haproxy-1.6..tar.gz && cd haproxy-1.6. && make TARGET=linux26 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy
  15. - unless: test -d /usr/local/haproxy # 判断是否存在,unless返回值是false时,才执行命令
  16. - require: # 依赖下面的内容
  17. - pkg: pkg-init # pkg是模块
  18. - file: haproxy-install # file也是模块 格式: - 模块: ID 依赖文件如果有ID声明就写ID声明,如果没有就写name声明
  19.  
  20. haproxy-init: # 定义声明一个ID
  21. file.managed:
  22. - name: /etc/init.d/haproxy
  23. - source: salt://haproxy/files/haproxy.init       #修改启动文件并将其放入该目录
  24. - user: root
  25. - group: root
  26. - mode:
  27. - require:
  28. - cmd: haproxy-install
  29. cmd.run:
  30. - name: chkconfig --add haproxy
  31. - unless: chkconfig --list |grep haproxy
  32. - require:
  33. - file: haproxy-init
  34.  
  35. net.ipv4.ip_nonlocal_bind: # 定义声明一个ID
  36. sysctl.present: # 修改系统的kernel值
  37. - value: # 改值为1
  38.  
  39. haproxy-config-dir:
  40. file.directory:
  41. - name: /etc/haproxy
  42. - user: root
  43. - group: root
  44. - mode:

查看安装文件并执行

  1. [root@linux-node1 haproxy]# pwd
  2. /srv/salt/prod/haproxy
  3. [root@linux-node1 haproxy]# tree
  4. .
  5. ├── files
  6. ├── haproxy-1.6..tar.gz
  7. └── haproxy.init
  8. └── install.sls
  9. # 单个执行,另外需要指定环境是prod,不指定默认为base
  10. [root@linux-node1 haproxy]# salt 'linux-node1.*' state.sls haproxy.install saltenv='prod'

注意上面的saltenv对应的master配置文件为

  1. file_roots:
  2. base:
  3. - /srv/salt/base
  4. test:
  5. - /srv/salt/test
  6. dev:
  7. - /srv/salt/dev/services
  8. - /srv/salt/dev/states
  9. prod:
  10. - /srv/salt/prod

编辑配置文件

  1. # 编辑top文件
  2. [root@linux-node1 cluster]# cd /srv/salt/base/
  3. [root@linux-node1 base]# vim top.sls
  4. base:
  5. '*':
  6. - init.env_init
  7. prod:
  8. 'linux-node1.example.com':
  9. - cluster.haproxy-outside
  10. 'linux-node2.example.com':
  11. - cluster.haproxy-outside

修改后端RS的端口

  1. [root@linux-node1 base]# vim /etc/httpd/conf/httpd.conf
  2. # 端口改成8080,与上面haproxy的配置一样

测试通过后,执行高级状态

  1. [root@linux-node1 base]# salt '*' state.highstate test=True
  2. [root@linux-node1 base]# salt '*' state.highstate

在RS上设置index.html

分别色设置,没有的话会报错403

  1. [root@linux-node2 ~]# vim /var/www/html/index.html

访问haproxy的状态

# 用户名密码在haproxy-outside.cfg中配置

keepalived的安装部署

首先自己安装一次

  1. [root@linux-node1 base]# cd /usr/local/src
  2. [root@linux-node1 src]# wget http://www.keepalived.org/software/keepalived-1.2.19.tar.gz
  3. [root@linux-node1 src]# tar zxf keepalived-1.2..tar.gz
  4. [root@linux-node1 src]# cd keepalived-1.2.
  5. [root@linux-node1 keepalived-1.2.]# ./configure --prefix=/usr/local/keepalived --disable-fwmark
  6. [root@linux-node1 keepalived-1.2.]# make && make install

建立文件放置目录

  1. [root@linux-node1 etc]# pwd
  2. /usr/local/src/keepalived-1.2./keepalived/etc
  3. [root@linux-node1 etc]# mkdir /srv/salt/prod/keepalived/
  4. [root@linux-node1 etc]# mkdir /srv/salt/prod/keepalived/files
  5. [root@linux-node1 etc]# cp init.d/keepalived.init /srv/salt/prod/keepalived/files/
  6. [root@linux-node1 etc]# cp keepalived/keepalived.conf /srv/salt/prod/keepalived/files/
  7. [root@linux-node1 etc]# cp /usr/local/src/keepalived-1.2..tar.gz /srv/salt/prod/keepalived/files/
  8. [root@linux-node1 init.d]# cp /usr/local/src/keepalived-1.2./keepalived/etc/init.d/keepalived.sysconfig /srv/salt/prod/keepalived/files/
  9. # files中的文件有
  10. [root@linux-node1 sysconfig]# cd /srv/salt/prod/keepalived/files/
  11. [root@linux-node1 files]# ll
  12. 总用量
  13. -rw-r--r-- root root 1 : keepalived-1.2..tar.gz
  14. -rw-r--r-- root root 1 : keepalived.conf
  15. -rwxr-xr-x root root 1 : keepalived.init
  16. -rw-r--r-- root root 1 : keepalived.sysconfig

修改启动脚本

  1. [root@linux-node1 files]# vim keepalived.init
  2. daemon /usr/local/keepalived/sbin/keepalived ${KEEPALIVED_OPTIONS}

编辑安装文件

  1. [root@linux-node1 keepalived]# pwd
  2. /srv/salt/prod/keepalived
  3. [root@linux-node1 keepalived]# cat install.sls
  4. include:
  5. - pkg.pkg-init
  6.  
  7. keepalived-install:
  8. file.managed:
  9. - name: /usr/local/src/keepalived-1.2..tar.gz
  10. - source: salt://keepalived/files/keepalived-1.2.19.tar.gz
  11. - user: root
  12. - group: root
  13. - mode:
  14. cmd.run:
  15. - name: cd /usr/local/src && tar zxf keepalived-1.2..tar.gz && cd keepalived-1.2. && ./configure --prefix=/usr/local/keepalived --disable-fwmark && make && make install && ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin
  16. - unless: test -d /usr/local/keepalived
  17. - require:
  18. - pkg: pkg-init
  19. - file: keepalived-install
  20.  
  21. keepalived-init:
  22. file.managed:
  23. - name: /etc/init.d/keepalived
  24. - source: salt://keepalived/files/keepalived.init
  25. - user: root
  26. - group: root
  27. - mode:
  28. cmd.run:
  29. - name: chkconfig --add keepalived
  30. - unless: chkconfig --list | grep keepalived
  31. - require:
  32. - file: keepalived-init
  33.  
  34. /etc/sysconfig/keepalived:
  35. file.managed:
  36. - source: salt://keepalived/files/keepalived.sysconfig
  37. - user: root
  38. - group: root
  39. - mode:
  40.  
  41. keepalived-config: //配置文件这块在这儿只是举个例子,实际是在下面单独配置修改(因为在实际应用中,每个keepalived的配置文件都不相同,这里就需要用到jinja对应传参)
  42. file.managed:
  43. - name: /etc/keepalived/keepalived.conf
  44. - source: salt://keepalived/files/keepalived.conf
  45. - user: root
  46. - group: root
  47. - mode:
  48.  
  49. /etc/keepalived:
  50. file.directory:
  51. - user: root
  52. - group: root
  53. - mode:

执行安装

  1. [root@linux-node1 keepalived]# salt '*' state.sls keepalived.install env=prod

业务模块

keepalived的配置文件

  1. [root@linux-node1 ~]# cd /srv/salt/prod/cluster/files/
  2. [root@linux-node1 files]# vim haproxy-outside-keepalived.conf
  3.  
  4. ! Configuration File for keepalived
  5. global_defs {
  6. notification_email {
  7. saltstack@example.com
  8. }
  9. notification_email_from keepalived@example.com
  10. smtp_server 127.0.0.1
  11. smtp_connect_timeout
  12. router_id {{ROUTEID}}
  13. }
  14.  
  15. vrrp_instance haproxy_ha {
  16. state {{STATEID}}
  17. interface eth0
  18. virtual_router_id
  19. priority {{PRIORITYID}}
  20. advert_int
  21. authentication {
  22. auth_type PASS
  23. auth_pass
  24. }
  25. virtual_ipaddress {
  26. 10.0.0.11 # 这个VIP在haproxy的配置文件中也有
  27. }
  28. }

keepalived的启动文件

其中定义了上面需要的变量,用到了jinja模版

  1. [root@linux-node1 cluster]# cd /srv/salt/prod/cluster/
  2. [root@linux-node1 cluster]# vim haproxy-outside-keepalived.sls
  3. include:
  4. - keepalived.install
  5.  
  6. keepalived-service:
  7. file.managed:
  8. - name: /etc/keepalived/keepalived.conf
  9. - source: salt://cluster/files/haproxy-outside-keepalived.conf
  10. - user: root
  11. - group: root
  12. - mode:
  13. - template: jinja
  14. {% if grains['fqdn'] == 'linux-node1.example.com' %}
  15. - ROUTEID: haproxy_ha //格式 变量: 值
  16. - STATEID: MASTER
  17. - PRIORITYID:
  18. {% elif grains['fqdn'] == 'linux-node2.example.com' %}
  19. - ROUTEID: haproxy_ha
  20. - STATEID: BACKUP
  21. - PRIORITYID:
  22. {% endif %}
  23.  
  24. service.running:
  25. - name: keepalived
  26. - enable: True
  27. - watch:
  28. - file: keepalived-service

注:require依赖监听软件包是否安装(没有安装就安装),watch是监听文件是否发生改变(发生改变就执行相应功能,如上例则为:监听文件改变,如果改变就重启服务)

编辑top文件

  1. [root@linux-node1 base]# cd /srv/salt/base/
  2. [root@linux-node1 base]# cat top.sls
  3. base:
  4. '*':
  5. - init.env_init
  6. prod:
  7. 'linux-node1.example.com':
  8. - cluster.haproxy-outside
  9. - cluster.haproxy-outside-keepalived //配置sls文件,其中include有keepalived.install,即执行该配置sls文件即可执行keepalived安装sls
  10. 'linux-node2.example.com':
  11. - cluster.haproxy-outside
  12. - cluster.haproxy-outside-keepalived

执行高级状态

先单独执行下,看有没有错误在执行高级状态

  1. [root@linux-node1 cluster]# salt '*' state.sls cluster.haproxy-outside-keepalived env=prod
  2. [root@linux-node1 cluster]# salt '*' state.highstate

查看结果

  1. [root@linux-node1 base]# ip a |grep eth0
  2. : eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP qlen
  3. inet 10.0.0.7/ brd 10.0.0.255 scope global eth0
  4. inet 10.0.0.11/ scope global eth0
  5.  
  6. masterkeepaliveddown掉后,VIP会飘到backup

haproxy的调度设置

  1. [root@linux-node1 base]# grep "balance" /srv/salt/prod/cluster/files/haproxy-outside.cfg
  2. balance roundrobin #轮询;source:固定不变
  3.  
  4. 可以在haproxy-status页面上查看到变化

如图

  zabbix-agent的安装部署

开启pillar

  1. [root@linux-node1 init]# vim /etc/salt/master
  2. pillar_roots:
  3. base:
  4. - /srv/pillar/base
  5.  
  6. [root@linux-node1 init]# mkdir /srv/pillar/base
  7. [root@linux-node1 init]# /etc/init.d/salt-master restart
  8. Stopping salt-master daemon: [确定]
  9. Starting salt-master daemon: [确定]

编写zabbix-agent安装文件

  1. [root@linux-node1 base]# cd /srv/salt/base/init/
  2. [root@linux-node1 init]# vim zabbix_agent.sls
  3. zabbix-agent-install:
  4. pkg.installed:
  5. - name: zabbix-agent
  6. file.managed:
  7. - name: /etc/zabbix/zabbix_agentd.conf
  8. - source: salt://init/files/zabbix_agentd.conf
  9. - template: jinja
  10. - defaults:
  11. Server: {{ pillar['zabbix-agent']['Zabbix_Server'] }}
  12. - require:
  13. - pkg: zabbix-agent-install
  14. service.running:
  15. - name: zabbix-agent
  16. - enable: True
  17. - watch:
  18. - pkg: zabbix-agent-install
  19. - file: zabbix-agent-install

编写top文件

  1. [root@linux-node1 base]# cd /srv/pillar/base/
  2. [root@linux-node1 base]# vim top.sls
  3. base:
  4. '*':
  5. - zabbix

编写zabbix.sls

  1. [root@linux-node1 base]# vim zabbix.sls
  2. zabbix-agent:
  3. Zabbix_Server: 10.0.0.7
  4. 这里对应上面Server: {{ pillar['zabbix-agent']['Zabbix_Server'] }}

配置文件拷贝修改

  1. [root@linux-node1 base]# cd /srv/salt/base/init/files
  2. [root@linux-node1 init]# cp /etc/zabbix/zabbix_agentd.conf .
  3.  
  4. [root@linux-node1 init]# grep 'Server' zabbix_agentd.conf
  5. Server={{ Server }} # 对应上面zabbix_agent.sls中的server

编辑env_init文件

  1. [root@linux-node1 init]# vim env_init.sls
  2. include:
  3. - init.dns
  4. - init.history
  5. - init.audit
  6. - init.sysctl
  7. - init.zabbix_agent
  8. [root@linux-node1 init]# tree /srv/salt/base/init/
  9. /srv/salt/base/init/
  10. ├── audit.sls
  11. ├── dns.sls
  12. ├── env_init.sls
  13. ├── files
  14. ├── resolv.conf
  15. └── zabbix_agentd.conf
  16. ├── history.sls
  17. ├── sysctl.sls
  18. └── zabbix_agent.sls

另外epel的sls文件

  1. [root@linux-node1 init]# vim epel.sls
  2.  
  3. yum_repo_release:
  4. pkg.installed:
  5. - sources:
  6. - epel-release: http://mirrors.aliyun.com/epel/6/x86_64/epel-release-6-8.noarch.rpm
  7. - unless: rpm -qa | grep epel-release--

安装libevent

  1. [root@linux-node1 ~]# cd /srv/salt/prod/
  2. [root@linux-node1 prod]# mkdir -pv libevent/files
  3. [root@linux-node1 prod]# cd /srv/salt/prod/libevent
  4. [root@linux-node1 libevent]# vim install.sls
  5. libevent-source-install:
  6. file.managed:
  7. - name: /usr/local/src/libevent-2.0.-stable.tar.gz
  8. - source: salt://libevent/files/libevent-2.0.22-stable.tar.gz
  9. - user: root
  10. - group: root
  11. - mode:
  12. cmd.run:
  13. - name: cd /usr/local/src && tar zxf libevent-2.0.-stable.tar.gz && cd libevent-2.0.-stable && ./configure --prefix=/usr/local/libevent && make && make install
  14. - unless: test -d /usr/local/libevent
  15. - require:
  16. - file: libevent-source-install
  17.  
  18. [root@linux-node1 libevent]# pwd
  19. /srv/salt/prod/libevent
  20. [root@linux-node1 libevent]# tree
  21. .
  22. ├── files
  23. └── libevent-2.0.-stable.tar.gz
  24. └── install.sls
  25.  
  26. [root@linux-node1 files]# salt '*' state.sls libevent.install env=prod
  27. [root@linux-node1 files]# salt '*' state.highstate

新建用户,且不允许登录

  1. [root@linux-node1 prod]# mkdir user
  2. [root@linux-node1 prod]# cd user/
  3. [root@linux-node1 user]# vim www.sls
  4. www-user-group:
  5. group.present:
  6. - name: www
  7. - gid:
  8. user.present:
  9. - name: www
  10. - fullname: www
  11. - shell: /sbin/nologin
  12. - uid:
  13. - gid:

安装memcahe

  1. [root@linux-node1 prod]# cd /srv/salt/prod/
  2. [root@linux-node1 prod]# mkdir -p memcache/files
  3. [root@linux-node1 prod]# cd memcache/files/
  4. [root@linux-node1 files]# cp memcached-1.4..tar.gz /usr/local/src/
  5.  
  6. [root@linux-node1 memcache]# vim install.sls
  7. include:
  8. - libevent.install # 将libevent文件包含进来
  9.  
  10. memcached-source-install:
  11. file.managed:
  12. - name: /usr/local/src/memcached-1.4..tar.gz
  13. - source: salt://memcached/files/memcached-1.4.24.tar.gz
  14. - user: root
  15. - group: root
  16. - mode:
  17. cmd.run:
  18. - name: cd /usr/local/src && tar zxf memcached-1.4..tar.gz && cd memcached-1.4.&& ./configure --prefix=/usr/local/memcached --enable-64bit --with-libevent=/usr/local/libevent && make && make install
  19. - unless: test -d /usr/local/memcached
  20. - require:
  21. - cmd: libevent-source-install # libevent的ID
  22. - file: memcached-source-install

安装pcre

  1. [root@linux-node1 prod]# mkdir /srv/salt/prod/pcre/files -p
  2. [root@linux-node1 prod]# cd /srv/salt/prod/pcre/files/
  3. [root@linux-node1 files]# cp pcre-8.37.tar.gz /usr/local/src/
  4. [root@linux-node1 prod]# cd /srv/salt/prod/pcre
  5. [root@linux-node1 pcre]# cat install.sls
  6. pcre-source-install:
  7. file.managed:
  8. - name: /usr/local/src/pcre-8.37.tar.gz
  9. - source: salt://pcre/files/pcre-8.37.tar.gz
  10. - user: root
  11. - group: root
  12. - mode:
  13. cmd.run:
  14. - name: cd /usr/local/src && tar zxf pcre-8.37.tar.gz && cd pcre-8.37 && ./configure --prefix=/usr/local/pcre && make && make install
  15. - unless: test -d /usr/local/pcre
  16. - require:
  17. - file: pcre-source-install

安装nginx

  1. [root@linux-node1 nginx]# mkdir -p /srv/salt/prod/nginx/files
  2. [root@linux-node1 nginx]# cd /srv/salt/prod/nginx/files/
  3. [root@linux-node1 files]# cp nginx-1.9..tar.gz /usr/local/src/
  4. [root@linux-node1 nginx]# cat install.sls
  5. include:
  6. - pcre.install
  7. - user.www
  8. - pkg.pkg-init
  9. nginx-source-install:
  10. file.managed:
  11. - name: /usr/local/src/nginx-1.9..tar.gz
  12. - source: salt://nginx/files/nginx-1.9.1.tar.gz
  13. - user: root
  14. - group: root
  15. - mode:
  16. cmd.run:
  17. - name: cd /usr/local/src && tar zxf nginx-1.9..tar.gz && cd nginx-1.9.&& ./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
  18. - unless: test -d /usr/local/nginx
  19. - require:
  20. - user: www-user-group
  21. - file: nginx-source-install
  22. - pkg: pkg-init
  23. - cmd: pcre-source-install
  24.  
  25. [root@linux-node1 nginx]# cat service.sls
  26. include:
  27. - nginx.install
  28.  
  29. nginx-init:
  30. file.managed:
  31. - name: /etc/init.d/nginx
  32. - source: salt://nginx/files/nginx-init
  33. - mode:
  34. - user: root
  35. - group: root
  36. cmd.run:
  37. - name: chkconfig --add nginx
  38. - unless: chkconfig --list | grep nginx
  39. - require:
  40. - file: nginx-init
  41.  
  42. /usr/local/nginx/conf/nginx.conf:
  43. file.managed:
  44. - source: salt://nginx/files/nginx.conf
  45. - user: www
  46. - group: www
  47. - mode:
  48.  
  49. nginx-service:
  50. file.directory:
  51. - name: /usr/local/nginx/conf/vhost
  52. - require:
  53. - cmd: nginx-source-install
  54. service.running:
  55. - name: nginx
  56. - enable: True
  57. - reload: True
  58. - require:
  59. - cmd: nginx-init
  60. - watch:
  61. - file: /usr/local/nginx/conf/nginx.conf
  62.  
  63. [root@linux-node1 nginx]# tree
  64. .
  65. ├── files
  66. ├── nginx-1.9..tar.gz
  67. ├── nginx.conf
  68. └── nginx-init
  69. ├── install.sls
  70. └── service.sls

PHP+memcahce/redis的安装

基础环境

  1. [root@linux-node1 ~]# mkdir /srv/salt/prod/php/files -p
  2. [root@linux-node1 ~]# cd /srv/salt/prod/php/files/
  3. [root@linux-node1 files]# ll
  4. 总用量
  5. -rw-r--r-- root root 11 : init.d.php-fpm
  6. -rw-r--r-- root root 11 : memcache-2.2..tgz
  7. -rw-r--r-- root root 11 : php-5.6..tar.gz
  8. -rw-r--r-- root root 11 : php-fpm.conf.default
  9. -rw-r--r-- root root 11 : php.ini-production
  10. -rw-r--r-- root root 11 : redis-2.2..tgz

安装文件

  1. [root@linux-node1 files]# cd ..
  2. [root@linux-node1 php]# vim install.sls
  3. pkg-php:
  4. pkg.installed:
  5. - names:
  6. - mysql-devel
  7. - openssl-devel
  8. - swig
  9. - libjpeg-turbo
  10. - libjpeg-turbo-devel
  11. - libpng
  12. - libpng-devel
  13. - freetype
  14. - freetype-devel
  15. - libxml2
  16. - libxml2-devel
  17. - zlib
  18. - zlib-devel
  19. - libcurl
  20. - libcurl-devel
  21.  
  22. php-source-install:
  23. file.managed:
  24. - name: /usr/local/src/php-5.6..tar.gz
  25. - source: salt://php/files/php-5.6.9.tar.gz
  26. - user: root
  27. - group: root
  28. - mode:
  29.  
  30. cmd.run:
  31. - name: cd /usr/local/src && tar zxf php-5.6..tar.gz && cd php-5.6.&& ./configure --prefix=/usr/local/php-fastcgi --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd --with-jpeg-dir --with-png-dir --with-zlib --enable-xml --with-libxml-dir --with-curl --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --with-openssl --enable-mbstring --with-gd --enable-gd-native-ttf --with-freetype-dir=/usr/lib64 --with-gettext=/usr/lib64 --enable-sockets --with-xmlrpc --enable-zip --enable-soap --disable-debug --enable-opcache --enable-zip --with-config-file-path=/usr/local/php-fastcgi/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www && make && make install
  32. - require:
  33. - file: php-source-install
  34. - user: www-user-group
  35. - unless: test -d /usr/local/php-fastcgi
  36.  
  37. pdo-plugin:
  38. cmd.run:
  39. - name: cd /usr/local/src/php-5.6./ext/pdo_mysql/ && /usr/local/php-fastcgi/bin/phpize && ./configure --with-php-config=/usr/local/php-fastcgi/bin/php-config && make&& make install
  40. - unless: test -f /usr/local/php-fastcgi/lib/php/extensions/*/pdo_mysql.so
  41. - require:
  42. - cmd: php-source-install
  43.  
  44. php-ini:
  45. file.managed:
  46. - name: /usr/local/php-fastcgi/etc/php.ini
  47. - source: salt://php/files/php.ini-production
  48. - user: root
  49. - group: root
  50. - mode: 644
  51.  
  52. php-fpm:
  53. file.managed:
  54. - name: /usr/local/php-fastcgi/etc/php-fpm.conf
  55. - source: salt://php/files/php-fpm.conf.default
  56. - user: root
  57. - group: root
  58. - mode: 644
  59.  
  60. php-fastcgi-service:
  61. file.managed:
  62. - name: /etc/init.d/php-fpm
  63. - source: salt://php/files/init.d.php-fpm
  64. - user: root
  65. - group: root
  66. - mode: 755
  67. cmd.run:
  68. - name: chkconfig --add php-fpm
  69. - unless: chkconfig --list | grep php-fpm
  70. - require:
  71. - file: php-fastcgi-service
  72. service.running:
  73. - name: php-fpm
  74. - enable: True
  75. - require:
  76. - cmd: php-fastcgi-service
  77. - watch:
  78. - file: php-ini
  79. - file: php-fpm

memcache

  1. [root@linux-node1 php]# cat php-memcache.sls
  2. memcache-plugin:
  3. file.managed:
  4. - name: /usr/local/src/memcache-2.2..tgz
  5. - source: salt://php/files/memcache-2.2.7.tgz
  6. - user: root
  7. - group: root
  8. - mode:
  9.  
  10. cmd.run:
  11. - name: cd /usr/local/src && tar zxf memcache-2.2..tgz && cd memcache-2.2.&& /usr/local/php-fastcgi/bin/phpize && ./configure --enable-memcache --with-php-config=/usr/local/php-fastcgi/bin/php-config && make&& make install
  12. - unless: test -f /usr/local/php-fastcgi/lib/php/extensions/*/memcache.so
  13. require:
  14. - file: memcache-plugin
  15. - cmd: php-install
  16.  
  17. /usr/local/php-fastcgi/etc/php.ini:
  18. file.append:
  19. - text:
  20. - extension=memcache.so

redis

  1. [root@linux-node1 php]# cat php-redis.sls
  2. redis-plugin:
  3. file.managed:
  4. - name: /usr/local/src/phpredis-2.2..tgz
  5. - source: salt://php/files/phpredis-2.2.7.tgz
  6. - user: root
  7. - group: root
  8. - mode:
  9. cmd.run:
  10. - name: cd /usr/local/src && tar zxf phpredis-2.2..tgz && cd phpredis-2.2.&& /usr/local/php-fastcgi/bin/phpize && ./configure --with-php-config=/usr/local/php-fastcgi/bin/php-config && make&& make install
  11. - unless: test -f /usr/local/php-fastcgi/lib/php/extensions/*/redis.so
  12. require:
  13. - file: redis-plugin
  14. - cmd: php-install
  15.  
  16. /usr/local/php-fastcgi/etc/php.ini:
  17. file.append:
  18. - text:
  19. - extension=redis.so

出处:http://www.cnblogs.com/caoxiaojian/

saltstack二的更多相关文章

  1. saltstack自动化运维系列⑩SaltStack二次开发初探

    saltstack自动化运维系列⑩SaltStack二次开发初探 1.当salt运行在公网或者网络环境较差的条件下,需要配置timeout时间vim /etc/salt/master timeout: ...

  2. saltstack二次开发(一)

    Saltstack简介 Salt是一个配置管理系统,能够维护预定义状态的远程节点(比如,确保指定的包被安装,指定的服务在运行),一个分布式远程执行系统,用来在远程节点(可以是单个节点,也可以是任意规则 ...

  3. python之saltstack二次开发

    一.salt的概念 salt是一个配置管理系统,能够维护预定义状态的远程节点(比如,确保指定的报被安装,指定的服务在运行).一个分布式远程执行系统,用来在远程节点(可以是单个节点,也可以是任意规则挑选 ...

  4. saltstack二次开发(三)

    以下代码实现的功能: 通过saltstack的httpapi在minion上安装软件. vim saltapi.py #!/usr/bin/env python # -*- coding: utf-8 ...

  5. saltstack二次开发(二)

    Saltstack的api Salt-api有两种方式,一种是函数的形式,有人家定义好的函数,我们可以直接调用,直接写python代码调用函数或者类就可以了.第二种形式是salt-api有封装好的ht ...

  6. saltstack(二) master、minion常用配置选项

    master常用配置选项: interface: 指定bind的地址(默认0.) publish_port:指定发布端口(默认4505) ret_port: 指定结果返回端口,与minion配置文件的 ...

  7. saltstack系列~第二篇

    一 简介:今天咱们来继续学习saltstack 二 命名和分组 1 命名规则 1 ID构成 机房-DB类型-角色(主/从)-IP地址 2 分组构成  分为master slave两组即可 2 分组规则 ...

  8. saltstack系列~第一篇

    一 简介:从今天开始学习saltstack 二 salt的认证系列操作 1 原理 saltstack通过/etc/salt/pki/目录下面的配置文件的密钥进行通信,master端接受minion端后 ...

  9. saltstack集合

    saltstack集合 saltstack(一):   saltstack简介 saltstack(二):   saltstack安装及配置 saltstack(三):   saltstack远程执行 ...

随机推荐

  1. ECO开放平台对接文档说明

    应用集成: http://open.teewon.net:1000/static/index.html#/docs/flow/integrate统一认证集成文档: http://open.teewon ...

  2. 【转】如何修改 video 样式

    我们这里说的“修改 video 样式”并不是要自己实现一套 controls,而是尝试修改 video 的默认样式 隐藏全屏按钮 这个很容易查到 video::-webkit-media-contro ...

  3. Python:Day42 Position

    1 static static 默认值,无定位,不能当作绝对定位的参照物,并且设置标签对象的left.top等值是不起作用的的. 2  position: relative/absolute      ...

  4. Bean named '*' must be of type [*], but was actually of type []

    本地Service 名字和调用别的maven项目Service重名

  5. 在linux中查看进程占用的端口号

    在Linux 上的 /etc/services 文件可以查看到更多关于保留端口的信息. 可以使用以下六种方法查看端口信息. ss:可以用于转储套接字统计信息. netstat:可以显示打开的套接字列表 ...

  6. a,b为2个整型变量,在不引入第三个变量的前提下写一个算法实现 a与b的值互换

    package com.Summer_0424.cn; /** * @author Summer * a,b为2个整型变量,在不引入第三个变量的前提下写一个算法实现 a与b的值互换? */ publi ...

  7. redis学习(六)——Sorted Set数据类型

    一.概述: Sorted Set(有序集合)和Set类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中.它们之间的主要差别是Sorted Set中的每一个成员都会有一个分数(sc ...

  8. Ionic1 环境破坏后程序重新恢复过程

    ionic platform remove android ionic platform add android cordova plugin add cordova-plugin-network-i ...

  9. 使用Windows Live Writer撰写的第一篇博文

    一直没有时间,在自己的电脑上配置起来Windows Live Writer. 今天抽时间搞起来后,感觉果然比在Web版写作不知道爽多少倍哦. 还安装了代码插件,上传代码和图片也方便了很多,霸气. 先上 ...

  10. 【原创】JAVA8之妙用Optional解决NPE问题

    引言 在文章的开头,先说下NPE问题,NPE问题就是,我们在开发中经常碰到的NullPointerException.假设我们有两个类,他们的UML类图如下图所示 在这种情况下,有如下代码 user. ...