7.saltstack配置管理-功能模块-haproxy


功能模块:

根据整个系统架构图,我们可以分为两大部分来完成。前端高可用和后端上线服务,前端高可用主要包括haproxy和keepalived安装及配置。后端线上服务包括nginx、php、memcache、mysql的安装及配置。以下是haproxy和keepalived安装和配置。


1.安装的每个服务目录要清晰;


创建Haproxy模块的文件目录:
[root@salt-master ~]# mkdir /srv/salt/prod/pkg
注:pkg目录用于存放软件安装包
[root@salt-master ~]# mkdir /srv/salt/prod/haproxy
[root@salt-master ~]# mkdir /srv/salt/prod/haproxy/files
注:haproxy目录用于存放haroxy的安装脚本和文件



注意:要先把启动文件cp到files目录下:
[root@salt-master ~]#cd /usr/local/src/
[root@salt-master ~]#tar -zxvf haproxy-1.7.11.tar.gz.tar
[root@salt-master ~]# vi /usr/local/src/haproxy-1.7.11/examples/haproxy.init   
BIN=/usr/local/haproxy/sbin/$BASENAME  #修改这行

cp到haproxy/files/目录下
[root@salt-master ~]# cp /usr/local/src/haproxy-1.7.11/examples/haproxy.init /srv/salt/prod/haproxy/files/




[root@salt-master ~]# cat /srv/salt/prod/pkg/pkg-init.sls  
pkg-init:
  pkg.installed:
    - names:
      - gcc
      - gcc-c++
      - glibc
      - make
      - autoconf
      - openssl
      - openssl-devel

注:pkg-init.sls用解决源码安装所需要的相关依赖,安装其他服务也是如此;


[root@salt-master ~]#vi /srv/salt/prod/haproxy/install.sls   编辑安装文件<==========================================
include:
  - pkg.pkg-init
haproxy-install:
  file.managed:
    - name: /usr/local/src/haproxy-1.7.11.tar.gz.tar
    - source: salt://haproxy/files/haproxy-1.7.11.tar.gz.tar
    - user: root
    - group: root
    - mode: 755
  cmd.run:
    - name: cd /usr/local/src/ && tar xf haproxy-1.7.11.tar.gz.tar && cd haproxy-1.7.11 && make TARGET=linux2628 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy
    - unless: test -d /usr/local/haproxy #判断haproxy目录是否存在,如果存在不在继续安装
    - require: #执行完cmd.run后,如果执行成功,则继续。否则,不执行以下。
      - pkg: pkg-init
      - file: haproxy-install      
net.ipv4.ip_nonlocal_bind:#监听本地ip
  sysctl.present:
    - value: 1
haproxy-init: #定义haproxy-init,包括:拷贝haproxy启动脚本到相关路径下、添加系统服务
  file.managed:
    - name: /etc/init.d/haproxy
    - source: salt://haproxy/files/haproxy.init
    - user: root
    - group: root
    - mode: 755
    - require:
      - cmd: haproxy-install
  cmd.run:
    - name: systemctl start haproxy
    - unless: systemctl enable haproxy
    - require:
      - file: /etc/init.d/haproxy
haproxy-config-dir:    #创建haproxy的目录
  file.directory:
    - name: /etc/haproxy
    - user: root
    - group: root
    - mode: 755

注意:编写的时候不能有多余的空格或者tab键;

功能名称:requisites
功      能:处理状态间关系
常用方法:
    require    #依赖某个状态
    require_in    #被某个状态依赖
    watch    #关注某个状态
    watch_in    #被某个状态关注
状态模块:状态间关系
功      能:条件判断,主要用于cmd状态模块
常用方法:
    -onlyif:检查的命令,仅当“onlyif”选项指向的命令返回true时才执行name定义的命令。
    -unless;用于检查的命令,仅当“unless”选项指向的命令返回false时才执行name指向的命令。














    
目录结构,如下:
[root@salt-master prod]# tree
.
├── haproxy
│   ├── files
│   │   └── haproxy-1.7.11.tar.gz.tar
│   └── install.sls
└── pkg
    └── pkg-init.sls

3 directories, 3 files








执行安装haproxy:
[root@salt-master ~]# salt '*' state.sls haproxy.install env=prod
salt-minion2.2018.com:
----------
          ID: pkg-init
    Function: pkg.installed
        Name: gcc
      Result: True
     Comment: Package gcc is already installed.
     Started: 14:19:20.602407
    Duration: 461.778 ms
     Changes:   
----------
          ID: pkg-init
    Function: pkg.installed
        Name: glibc
      Result: True
     Comment: Package glibc is already installed.
     Started: 14:19:21.064363
    Duration: 0.316 ms
     Changes:   
----------
          ID: pkg-init
    Function: pkg.installed
        Name: openssl
      Result: True
     Comment: Package openssl is already installed.
     Started: 14:19:21.064771
    Duration: 0.225 ms
     Changes:   
----------
          ID: pkg-init
    Function: pkg.installed
        Name: openssl-devel
      Result: True
     Comment: Package openssl-devel is already installed.
     Started: 14:19:21.065048
    Duration: 0.262 ms
     Changes:   
----------
          ID: pkg-init
    Function: pkg.installed
        Name: autoconf
      Result: True
     Comment: Package autoconf is already installed.
     Started: 14:19:21.065364
    Duration: 0.208 ms
     Changes:   
----------
          ID: pkg-init
    Function: pkg.installed
        Name: gcc-c++
      Result: True
     Comment: Package gcc-c++ is already installed.
     Started: 14:19:21.065620
    Duration: 0.246 ms
     Changes:   
----------
          ID: pkg-init
    Function: pkg.installed
        Name: make
      Result: True
     Comment: Package make is already installed.
     Started: 14:19:21.065916
    Duration: 0.207 ms
     Changes:   
----------
          ID: haproxy-install
    Function: file.managed
        Name: /usr/local/src/haproxy-1.7.11.tar.gz.tar
      Result: True
     Comment: File /usr/local/src/haproxy-1.7.11.tar.gz.tar is in the correct state
     Started: 14:19:21.067640
    Duration: 19.354 ms
     Changes:   
----------
          ID: haproxy-install
    Function: cmd.run
        Name: cd /usr/local/src/ && tar zxf haproxy-1.7.11.tar.gz.tar && cd haproxy-1.7.11 && make TARGET=linux26 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy
      Result: True
     Comment: unless execution succeeded
     Started: 14:19:21.087977
    Duration: 5.653 ms
     Changes:   
----------
          ID: net.ipv4.ip_nonlocal_bind
    Function: sysctl.present
      Result: True
     Comment: Sysctl value net.ipv4.ip_nonlocal_bind = 1 is already set
     Started: 14:19:21.094111
    Duration: 22.274 ms
     Changes:   
----------
          ID: haproxy-init
    Function: file.managed
        Name: /etc/init.d/haproxy
      Result: True
     Comment: File /etc/init.d/haproxy updated
     Started: 14:19:21.116629
    Duration: 29.865 ms
     Changes:   
              ----------
              diff:
                  New file
              mode:
                  0755
----------
          ID: haproxy-init
    Function: cmd.run
        Name: systemctl start haproxy
      Result: True
     Comment: unless execution succeeded
     Started: 14:19:21.146939
    Duration: 286.851 ms
     Changes:   
----------
          ID: haproxy-config-dir
    Function: file.directory
        Name: /etc/haproxy
      Result: True
     Comment: Directory /etc/haproxy is in the correct state
     Started: 14:19:21.434024
    Duration: 0.668 ms
     Changes:   

Summary
-------------
Succeeded: 13 (changed=1)
Failed:     0
-------------
Total states run:     13
salt-minion1.2018.com:
----------
          ID: pkg-init
    Function: pkg.installed
        Name: gcc
      Result: True
     Comment: Package gcc is already installed.
     Started: 14:19:20.362396
    Duration: 464.007 ms
     Changes:   
----------
          ID: pkg-init
    Function: pkg.installed
        Name: glibc
      Result: True
     Comment: Package glibc is already installed.
     Started: 14:19:20.826524
    Duration: 0.376 ms
     Changes:   
----------
          ID: pkg-init
    Function: pkg.installed
        Name: openssl
      Result: True
     Comment: Package openssl is already installed.
     Started: 14:19:20.826952
    Duration: 0.266 ms
     Changes:   
----------
          ID: pkg-init
    Function: pkg.installed
        Name: openssl-devel
      Result: True
     Comment: Package openssl-devel is already installed.
     Started: 14:19:20.827274
    Duration: 0.207 ms
     Changes:   
----------
          ID: pkg-init
    Function: pkg.installed
        Name: autoconf
      Result: True
     Comment: Package autoconf is already installed.
     Started: 14:19:20.827531
    Duration: 0.279 ms
     Changes:   
----------
          ID: pkg-init
    Function: pkg.installed
        Name: gcc-c++
      Result: True
     Comment: Package gcc-c++ is already installed.
     Started: 14:19:20.827859
    Duration: 0.201 ms
     Changes:   
----------
          ID: pkg-init
    Function: pkg.installed
        Name: make
      Result: True
     Comment: Package make is already installed.
     Started: 14:19:20.828109
    Duration: 0.265 ms
     Changes:   
----------
          ID: haproxy-install
    Function: file.managed
        Name: /usr/local/src/haproxy-1.7.11.tar.gz.tar
      Result: True
     Comment: File /usr/local/src/haproxy-1.7.11.tar.gz.tar is in the correct state
     Started: 14:19:20.830427
    Duration: 12.208 ms
     Changes:   
----------
          ID: haproxy-install
    Function: cmd.run
        Name: cd /usr/local/src/ && tar zxf haproxy-1.7.11.tar.gz.tar && cd haproxy-1.7.11 && make TARGET=linux26 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy
      Result: True
     Comment: unless execution succeeded
     Started: 14:19:20.843770
    Duration: 5.678 ms
     Changes:   
----------
          ID: net.ipv4.ip_nonlocal_bind
    Function: sysctl.present
      Result: True
     Comment: Sysctl value net.ipv4.ip_nonlocal_bind = 1 is already set
     Started: 14:19:20.849940
    Duration: 21.455 ms
     Changes:   
----------
          ID: haproxy-init
    Function: file.managed
        Name: /etc/init.d/haproxy
      Result: True
     Comment: File /etc/init.d/haproxy updated
     Started: 14:19:20.871694
    Duration: 38.909 ms
     Changes:   
              ----------
              diff:
                  New file
              mode:
                  0755
----------
          ID: haproxy-init
    Function: cmd.run
        Name: systemctl start haproxy
      Result: True
     Comment: unless execution succeeded
     Started: 14:19:20.911008
    Duration: 316.499 ms
     Changes:   
----------
          ID: haproxy-config-dir
    Function: file.directory
        Name: /etc/haproxy
      Result: True
     Comment: Directory /etc/haproxy is in the correct state
     Started: 14:19:21.227778
    Duration: 0.729 ms
     Changes:   

Summary
-------------
Succeeded: 13 (changed=1)
Failed:     0
-------------
Total states run:     13
salt-master.2018.com:
----------
          ID: pkg-init
    Function: pkg.installed
        Name: gcc
      Result: True
     Comment: Package gcc is already installed.
     Started: 14:19:19.403811
    Duration: 510.289 ms
     Changes:   
----------
          ID: pkg-init
    Function: pkg.installed
        Name: glibc
      Result: True
     Comment: Package glibc is already installed.
     Started: 14:19:19.914223
    Duration: 0.354 ms
     Changes:   
----------
          ID: pkg-init
    Function: pkg.installed
        Name: openssl
      Result: True
     Comment: Package openssl is already installed.
     Started: 14:19:19.914633
    Duration: 0.207 ms
     Changes:   
----------
          ID: pkg-init
    Function: pkg.installed
        Name: openssl-devel
      Result: True
     Comment: Package openssl-devel is already installed.
     Started: 14:19:19.914891
    Duration: 0.272 ms
     Changes:   
----------
          ID: pkg-init
    Function: pkg.installed
        Name: autoconf
      Result: True
     Comment: Package autoconf is already installed.
     Started: 14:19:19.915213
    Duration: 0.201 ms
     Changes:   
----------
          ID: pkg-init
    Function: pkg.installed
        Name: gcc-c++
      Result: True
     Comment: Package gcc-c++ is already installed.
     Started: 14:19:19.915464
    Duration: 0.263 ms
     Changes:   
----------
          ID: pkg-init
    Function: pkg.installed
        Name: make
      Result: True
     Comment: Package make is already installed.
     Started: 14:19:19.915778
    Duration: 0.196 ms
     Changes:   
----------
          ID: haproxy-install
    Function: file.managed
        Name: /usr/local/src/haproxy-1.7.11.tar.gz.tar
      Result: True
     Comment: File /usr/local/src/haproxy-1.7.11.tar.gz.tar is in the correct state
     Started: 14:19:19.917674
    Duration: 9.958 ms
     Changes:   
----------
          ID: haproxy-install
    Function: cmd.run
        Name: cd /usr/local/src/ && tar zxf haproxy-1.7.11.tar.gz.tar && cd haproxy-1.7.11 && make TARGET=linux26 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy
      Result: True
     Comment: unless execution succeeded
     Started: 14:19:19.928663
    Duration: 8.278 ms
     Changes:   
----------
          ID: net.ipv4.ip_nonlocal_bind
    Function: sysctl.present
      Result: True
     Comment: Sysctl value net.ipv4.ip_nonlocal_bind = 1 is already set
     Started: 14:19:19.937498
    Duration: 27.672 ms
     Changes:   
----------
          ID: haproxy-init
    Function: file.managed
        Name: /etc/init.d/haproxy
      Result: True
     Comment: File /etc/init.d/haproxy updated
     Started: 14:19:19.965425
    Duration: 7.191 ms
     Changes:   
              ----------
              diff:
                  New file
              mode:
                  0755
----------
          ID: haproxy-init
    Function: cmd.run
        Name: systemctl start haproxy
      Result: True
     Comment: unless execution succeeded
     Started: 14:19:19.972960
    Duration: 574.228 ms
     Changes:   
----------
          ID: haproxy-config-dir
    Function: file.directory
        Name: /etc/haproxy
      Result: True
     Comment: Directory /etc/haproxy is in the correct state
     Started: 14:19:20.547340
    Duration: 0.857 ms
     Changes:   

Summary
-------------
Succeeded: 13 (changed=1)
Failed:     0
-------------
Total states run:     13

注:env=prod 指定prod目录下执行,如果不加此参数会默认从base环境下执行sls文件

可以看到执行haproxy安装成功了。










  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值