使用saltstack编译安装haproxy:

由于编译安装haproxy,所以安装之前需要建立编译环境,将编译环境需要安装的包单独放置在一个目录中,当编译haproxy或其他时,直接include这个编译环境就行:
创建相应的目录,并在目录下创建相应的sls配置文件
mkdir /srv/salt/prod/pkg
mkdir /srv/salt/prod/haproxy
mkdir /srv/salt/prod/haproxy/files

在创建上述目录之前需要修改salt的master配置文件,打开prod环境:

[root@node1 base]# egrep -v "^$|^#" /etc/salt/master
publisher_acl:
wadeson:
- test.ping
- network.*
jsonhc:
- node1*:
- test.ping
file_roots:
base:
- /srv/salt/base
test:
- /srv/salt/test
prod:
- /srv/salt/prod
pillar_roots:
base:
- /srv/pillar/base

1、构建编译环境:

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

构建编译开发环境,如果上述不满足需求,可以更换为下面:

# cat pkg_group-init.sls
pkg_group-init:
cmd.run:
- name: yum groupinstall "Development tools" "Server Platform Development"
- unless: yum grouplist|grep "Development tools"

2、使用saltstack进行编译安装haproxy

2.1将下载好的haproxy源码包放置在haproxy目录下面的files目录中(files目录提供需要用的源码包,文件等)

[root@node1 prod]# ll haproxy/files/
总用量 1552
-rw-r--r-- 1 root root 1580214 6月 18 21:45 haproxy-1.6.13.tar.gz
-rwxr-xr-x 1 root root 2395 10月 9 22:25 haproxy.init

2.2haproxy的源码包和启动脚本准备好后,开始进行安装haproxy

[root@node1 haproxy]# pwd
/srv/salt/prod/haproxy
[root@node1 haproxy]# cat install.sls
include:
- pkg.pkg-init pkg.pkg-init前面的pkg是以目录prod为基准,也就是目录根 haproxy-install: haproxy的安装
file.managed:
- name: /usr/local/src/haproxy-1.6.13.tar.gz
- source: salt://haproxy/files/haproxy-1.6.13.tar.gz
- user: root
- group: root
- mode: 755
cmd.run:
- name: cd /usr/local/src/ && tar xf haproxy-1.6.13.tar.gz && cd haproxy-1.6.13 && make TARGET=linux26 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy
- unless: test -d /usr/local/haproxy 判断目录,如果存在即返回TRUE则不会执行name中的命令
- require:
- pkg: pkg-init haproxy的安装依赖编译环境的安装,如果编译环境安装失败,haproxy安装将不会进行
- file: haproxy-install haproxy的安装也依赖于/usr/local/src/haproxy-1.6.13.tar.gz 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: chkconfig --add haproxy
- unless: chkconfig --list|grep haproxy
- require:
- file: /etc/init.d/haproxy net.ipv4.ip_nonlocal_bind: 能够监听本机以外的ip(keepalived的vip漂移做准备)
sysctl.present:
- value: 1 haproxy-config-dir: 为haproxy创建配置目录
file.directory:
- name: /etc/haproxy
- user: root
- group: root
- mode: 755 

haproxy的安装sls写完后,验证是否成功,当前目录为:

[root@node1 haproxy]# ll
total 8
drwxr-xr-x 2 root root 4096 Oct 9 23:40 files
-rw-r--r-- 1 root root 1033 Oct 10 11:12 install.sls
[root@node1 haproxy]# pwd
/srv/salt/prod/haproxy

salt默认是从base环境下面进行查找sls文件(如果没有添加到top.sls文件中),于是需要如下操作来执行install这个sls文件:

  salt 'node1' state.sls haproxy.install env=prod 这种报错

查找文档:salt.modules.state.sls(mods, saltenv=None, test=None, exclude=None, queue=False, env=None, **kwargs)

于是解决办法为:salt 'node1' state.sls haproxy.install saltenv=prod

3、安装完haproxy后,并且haproxy已经有了启动脚本,接下来需要给haproxy提供配置文件,最后将haproxy服务开启,由于根据业务需求的不同,可能用到的haproxy的配置文件会有区别,

所以这里将配置文件与haproxy的安装分隔开进行状态管理配置,以后minion的haproxy可以根据配置文件的不同而提供安装

[root@node1 haproxy]# mkdir /srv/salt/prod/cluster
[root@node1 haproxy]# mkdir /srv/salt/prod/cluster/files
[root@node1 haproxy]# pwd
/srv/salt/prod/haproxy
[root@node1 files]# ll
总用量 4
-rw-r--r-- 1 root root 1252 10月 9 22:25 haproxy-outside.cfg
[root@node1 files]# pwd
/srv/salt/prod/cluster/files

开始编译状态配置文件,将haproxy的安装与配置文件结合起来,并且将haproxy的服务开启

[root@node1 cluster]# cat haproxy-outside.sls
include:
- haproxy.install include进来haproxy的安装 haproxy-service: 启动haproxy服务
file.managed: 复制配置文件
- name: /etc/haproxy/haproxy.cfg
- source: salt://cluster/files/haproxy-outside.cfg
- user: root
- group: root
- mode: 644
service.running: 开启haproxy服务,并添加到开机启动
- name: haproxy
- enable: True
- reload: True 当该服务有reload则,当配置文件发生变化时,会reload,而不是restart
- require:
- cmd: haproxy-init
- watch: 监控某状态,当配置文件发生变化,自动reload(没有reload则会restart)
- file: haproxy-service

上述sls文件中,第一步骤是haproxy的安装,接下来才是给安装好的haproxy提供配置文件,最后才是将haproxy服务开启(如果需要开机启动则添加enable)

将上述haproxy整个项目添加到base环境下面的top.sls中

[root@node1 base]# cat top.sls
base:
'*':
- init.env_init prod:
'node1':
- cluster.haproxy-outside 

于是haproxy的整个项目执行命令为salt '*' state.highstate

  当配置文件修改后,然后执行salt '*' state.highstate ,会根据watch的定义
  - watch: 监控某状态,当配置文件发生变化,自动reload(没有reload则会restart)
  - file: haproxy-service
  来reload服务haproxy:
下面是整个haproxy项目的框架构图
[root@node1 salt]# tree
.
├── base
│ ├── init
│ │ ├── audit.sls
│ │ ├── dns.sls
│ │ ├── env_init.sls
│ │ ├── files
│ │ │ ├── echo.sh
│ │ │ ├── resolv.conf
│ │ │ ├── test.txt
│ │ │ ├── zabbix-agent-3.0.10-1.el6.x86_64.rpm
│ │ │ └── zabbix-sender-3.0.10-1.el6.x86_64.rpm
│ │ ├── history.sls
│ │ ├── sysctl.sls
│ │ └── zabbix_agent.sls
│ ├── _modules
│ ├── test
│ │ ├── create_file.sls
│ │ ├── file-manage.sls
│ │ ├── file.text
│ │ ├── httpd-remove.sls
│ │ ├── if_unless.sls
│ │ └── test1.sls
│ └── top.sls
├── prod
│ ├── cluster
│ │ ├── files
│ │ │ └── haproxy-outside.cfg
│ │ └── haproxy-outside.sls
│ ├── haproxy
│ │ ├── files
│ │ │ ├── haproxy-1.6.13.tar.gz
│ │ │ └── haproxy.init
│ │ └── install.sls
│ └── pkg
│ └── pkg-init.sls
└── test

haproxy-outside.sls中包含haproxy的安装,配置文件的添加,haproxy服务的启动,而haproxy的安装包含编译环境的构建,haproxy编译安装的命令步骤,启动脚本的添加

saltstack之haproxy的安装配置的更多相关文章

  1. CentOS6下Haproxy的安装配置

    Haproxy 是一个开源的负载均衡和反向代理软件,其提供了高可用的网络服务.其一般是应用于web服务,但同时也能为SMTP和终端服务等提供可靠的支持. 1.下载安装haproxy wget ftp: ...

  2. saltstack之keepalived的安装配置

    使用saltstack编译安装keepalived: 创建相应的目录,并在目录下创建相应的sls配置文件 [root@node1 ~]# mkdir /srv/salt/prod/keepalived ...

  3. Saltstack系列1:安装配置

    安装 安装EPEL作为安装Ansible的yum源(CentOS6.4) rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release ...

  4. HAproxy的安装配置及动静分离

    /////////////////////////////目录//////////////////////////////////////////一.安装HAproxy二.编写HAproxy启动脚本三 ...

  5. haproxy笔记之一:Haproxy基本安装配置(反向代理,类似Nginx,可以代理tcp的连接,不只是http)(注意iptables和selinux的问题)

    1.安装haproxy yum -y install haproxy 2.配置文件 # this config needs haproxy- or haproxy- global log 127.0. ...

  6. saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy的Keepalived

    saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy的Keepalived 安装配置Keepalived 1.编写功能模块 #创建keepalived目录# mkdir -p ...

  7. saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy

    saltstack自动化运维系列⑥SaltStack实践安装配置HAproxy 下载haproxy1.6.2.tar.gz下载地址:http://www.haproxy.org/download/1. ...

  8. SaltStack自动化安装配置haproxy的Keepalived

    keepalived配置安装 什么是vrrp,阿里云不支持组播,所以阿里云上不能配置keepalived,但是它有自己的slb.运维的大忌,在命令行复制粘贴,一般是先复制到文本中查看确认以后salt编 ...

  9. SaltStack自动化安装配置haproxy

    准备环境node1:192.168.217.149 (saltstack master)node2:192.168.217.150(saltstack minion)下载haproxy1.6.2.ta ...

随机推荐

  1. MySQL的system命令在渗透测试中的使用以及UDF提权

    声明:下面引用关于SYSTEM的东西是自己之前的内容,是自己没有研究透导致的错误结论:有了错就要改,做技术的不能弄虚作假,时时刻刻要求自己要谨慎,虽然我的博客没人看,但是也要向所有已经看到的人道歉,错 ...

  2. FluentNhibernate 不支持存储过程

    一直以为没有使用FN进行存储过程的操作,这次因为后台首页想统计下数据,就利用了存储过程,但在使用中却发现FN目前还不支持存储过程(点击查看官方),没有办法,只能利用Fluent Configurati ...

  3. 【BZOJ1005/1211】[HNOI2008]明明的烦恼/[HNOI2004]树的计数 Prufer序列+高精度

    [BZOJ1005][HNOI2008]明明的烦恼 Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可 ...

  4. 电力项目十三--js添加浮动框

    修改page/menu/loading.jsp页面 首先,页面中引入浮动窗样式css <!-- 浮动窗口样式css begin --> <style type="text/ ...

  5. Python--进阶处理6

    # =================第六章:数据编码和处理====================== # 读CSV文件# 数据读取为一个元组的序列import csv# with open('E: ...

  6. HDU 5877 2016大连网络赛 Weak Pair(树状数组,线段树,动态开点,启发式合并,可持久化线段树)

    Weak Pair Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Tota ...

  7. 【转载】Java并发编程:volatile关键字解析

    http://www.cnblogs.com/dolphin0520/p/3920373.html

  8. c#自定义控件窗体Click无法点击Lable的处理解决方案

    自定义控件做按钮,不继承Button,用Lable来做按钮文字时,点击空白处有效,但是点击lable不起作用的处理方案. 很简单,就是在Lable添加Click事件,事件中添加代码:OnClick(e ...

  9. 【转】Keepalived无法绑定VIP故障排查经历

    一 故障描述 我在台湾合作方给定的两台虚拟机上部署HAProxy+Keepalived负载均衡高可用方案.在配置完Keepalived后,重新启动Keepalived,Keepalived没有绑定VI ...

  10. Yii框架2.0的安装过程

    Yii框架是个不错的php开发框架,大型项目上都可以使用.和大多框架一样他也是开源,而且采用了mvc结构的. Yii1.*,直接下载然后用脚步可以创建自己的项目了,最近看了下Yii2.0版本的,他推荐 ...