一、创建相应目录:
[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