Saltstack功能模块(9)

一、创建相应目录:

[root@node1-saltstack ~]# mkdir /srv/salt/prod/pkg
[root@node1-saltstack ~]# mkdir /srv/salt/prod/haproxy
[root@node1-saltstack ~]# mkdir /srv/salt/prod/haproxy/files

二、安装依赖包

[root@node1-saltstack prod]# cat pkg-init.sls
pkg-init:
  pkg.installed:
    - names:
      - gcc
      - gcc-c++
      - glibc
      - make
      - autoconf
      - openssl
      - openssl-devel

解释:

  • pkg-init:定义的ID,自定义
  • pkg.installed:pkg模块,installed方法
  • names:使用names把下面依赖包装上

三、安装应用

1、haproxy:

/srv/salt/prod/haproxy/files
wget http://www.haproxy.org/download/1.7/src/haproxy-1.7.1.tar.gz

2、先装一遍(记录步骤):

cd /usr/local/src
tar xf haproxy-1.7.1.tar.gz
cd haproxy-1.7.1
make TARGET=linux3100 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy

3、修改脚本目录:

[root@node1-saltstack examples]# vim /usr/local/src/haproxy-1.7.1/examples/haproxy.init

#修改脚本的路径

BIN=/usr/local/haproxy/sbin/$BASENAME

4、拷贝脚本文件到salt目录里

cp /usr/local/src/haproxy-1.7.1/examples/haproxy.init /srv/salt/prod/haproxy/files/

参数说明:

  • TARGET=linux3100
  • 使用uname -r查看内核,如:2.6.18-371.el5,此时该参数就为linux26
  • kernel 大于2.6.28的用:TARGET=linux2628
  • CPU=x86_64 #使用uname -r查看系统信息,如x86_64 x86_64 x86_64 GNU/Linux,此时该参数就为x86_64
  • PREFIX=/usr/local/haprpxy #/usr/local/haprpxy为haprpxy安装路径

5、整合步骤命令:

cd /usr/local/src && tar xf haproxy-1.7.1.tar.gz && cd haproxy-1.7.1 && make TARGET=linux3100 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy

6、编写安装haproxy文件(弊端就是每次执行都要装一遍):

[root@node1-saltstack haproxy]# cat /srv/salt/prod/haproxy/install.sls

include:
  - pkg.pkg-init
haproxy-install:
  file.managed:
    - name: /usr/local/src/haproxy-1.7.1.tar.gz
    - source: salt://haproxy/files/haproxy-1.7.1.tar.gz
    - user: root
    - group: root
    - mode: 755
  cmd.run:
    - name: cd /usr/local/src && tar xf haproxy-1.7.1.tar.gz && cd haproxy-1.7.1 && make TARGET=linux3100 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy
    - unless: test -d /usr/local/haproxy
    - require:
      - pkg: pkg-init
      - file: haproxy-install

haproxy-init:
  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: chkconfig --add haproxy
    - unless: chkconfig --list | grep haproxy
    - require:
      - file: haproxy-init 
net.ipv4.ip_nonlocal_bind:
  sysctl.present:
    - value: 1
haproxy-config-dir:
  file.directory:
    - name: /etc/haproxy
    - user: root
    - group: root
    - mode: 755

条件判断(用于如果haproxy已经装过了就不需要在装):

状态模块:状态间的关系
功能:条件判断,主要用于cmd状态模块
常用方法:
onlyif:检查的命令,仅当"onlyif"选项指向的命令返回true时才执行name定义的命令
unless:用于检查的命令,仅当"unless"选项指向的命令返回falase时才执行name指定的命令
unless: test -d /usr/local/haproxy:表示如果目录不存在则执行cmd.run, name里的命令

requisites(用于如果依赖没有装上就不执行一下步骤)

功能名称:requisites
功能:处理状态间的关系
常用方法:
require#我依赖某个状态
require_in#我被某个状态依赖
watch#我关注某个状态
watch_in   #我被某个状态关注

7、修改机器ip监听

[root@node2-saltstack ~]# cat /proc/sys/net/ipv4/ip_nonlocal_bind 
0
默认是不是我机器的ip不监听(haproxy代理需要)

8、创建/etc/haproxy目录,存放配置文件使用

手动执行:

salt 'node1*' state.sls haproxy.install env=prod

如果不设定env=prod就会去默认的base环境下执行

9、目录:

[root@node1-saltstack prod]# tree
.
├── haproxy
│   ├── files
│   │   ├── haproxy-1.7.1.tar.gz
│   │   └── haproxy.init
│   └── install.sls
└── pkg
    └── pkg-init.sls
3 directories, 4 files

Search

    Table of Contents