SaltStack的非标准安装

SaltStack的非标准安装

先解释下题目吧,什么是"SaltStack的非标准安装"。

简单先介绍下环境,笔者所运维的环境基本上以CentOS为主,有少部分Ubuntu。CentOS系统的版本也从5.4到6.4都有包括,进尔导致salt所依赖的python语言环境的版本也从2.4.3到2.6.6都有。因为是线上的系统,系统版本的升级或者python版本的升级,都有可能带来一定的风险性。所以从本意上来说,这次做的salt安装,最好不要对线上环境有任何的影响。(做过运维的都知道,最好不要对稳定的环境做任何的变化。)


好了,基本的思路定了,再看下新版salt的安装需求:

  • Python 2.6 >= 2.6 <3.0

  • ZeroMQ >= 2.1.9

  • pyzmq >= 2.1.9 

  • PyCrypto 

  • msgpack-python 

  • YAML

  • Jinja2 

这个列表,给了我们提供了一个好消息,一个坏消息。

先说坏消息:因为我们的python版本不统一,有部分系统的python版本不在支持的范围内;如果强行安装,可能会导致稳定性的问题。

再说好消息:既然有了安装需求,我们可以自定义安装,这样可以做到完全不影响系统环境。


既然已经决定了我们要走"自定义安装"的道路,那么我们就"兵马未行,粮草先动"。(本文就当个教程写了,之前的探索过程就不写了)

  1. 准备所需要的程序包。

    Jinja2-2.7.1.tar.gz

    M2Crypto-0.21.1.tar.gz

    MarkupSafe-0.18.tar.gz

    PyYAML-3.10.tar.gz

    Python-2.7.5.tgz

    msgpack-python-0.1.12.tar.gz

    pycrypto-2.6.1.tar.gz

    pyzmq-13.1.0.zip

    salt-0.17.1.tar.gz

    setuptools-1.1.6.tar.gz

    yaml-0.1.4.tar.gz

    zeromq-4.0.1.tar.gz

  2. 安装前的准备。

    安装目录:/usr/local/SaltStack (我们的目标很明确)

  3. 开始安装,下面是我写的一个很简单的脚本。

    master和minion的安装部署是一样的,区别只是使用的配置文件不同。

    M2Crypto的安装,请根据系统的具体环境参考安装说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/bin/bash                                                                                                                                      
#
# Author : john.lee.cn.do@gmail.com
# Date    : 2013.10.25
# Desc    : Install Salt
# Usage  : bash install.sh
#
    
export  LANG=C
_IP=` ifconfig  | grep  'inet addr' | grep  - v  '127.0.0.1' | sed  's/[ ]*/ /' | awk  '{print $2}' | awk  -F:  '{print $NF}' | head  -n 1`
_MASTER=172.17.37.207
    
_PATH= /usr/local/src/SaltStack
# Install Python
cd  $_PATH
tar  zxvf Python-2.7.5.tgz
cd  Python-2.7.5
. /configure  --prefix= /usr/local/SaltStack/python-2 .7.5
make  &&  make  install
    
    
export  _PYTHON= /usr/local/SaltStack/python-2 .7.5 /bin/python
    
# Install setuptools
cd  $_PATH
tar  zxvf setuptools-1.1.6. tar .gz
cd  setuptools-1.1.6
$_PYTHON setup.py  install
    
# Install MarkupSafe
cd  $_PATH
tar  zxvf MarkupSafe-0.18. tar .gz
cd  MarkupSafe-0.18
$_PYTHON setup.py  install
    
# Install jinja2
cd  $_PATH
tar  zxvf Jinja2-2.7.1. tar .gz
cd  Jinja2-2.7.1
$_PYTHON setup.py  install
    
    
# Install  msgpack-python
cd  $_PATH
tar  zxvf msgpack-python-0.1.12. tar .gz
cd  msgpack-python-0.1.12
$_PYTHON setup.py  install
    
# Install  pycrypto
cd  $_PATH
tar  zxvf pycrypto-2.6.1. tar .gz
cd  pycrypto-2.6.1
$_PYTHON setup.py  install
    
# Install PyYAML
cd  $_PATH
tar  zxvf PyYAML-3.10. tar .gz
cd  PyYAML-3.10
$_PYTHON setup.py  install
    
# Install zeromq
cd  $_PATH
tar  zxvf zeromq-4.0.1. tar .gz
cd  zeromq-4.0.1
. /configure  --prefix= /usr/local/SaltStack/zeromq-4 .0.1
make  &&  make  install
    
    
# Install pyzmq
cd  $_PATH
unzip pyzmq-13.1.0.zip
cd  pyzmq-13.1.0
$_PYTHON setup.py  install  --zmq= /usr/local/SaltStack/zeromq-4 .0.1
    
# Install  M2Crypto
# Need yum install swig
cd  $_PATH
tar  zxvf M2Crypto-0.21.1. tar .gz
cd  M2Crypto-0.21.1
# Modify python path in fedora_setup.sh
bash  fedora_setup.sh   install
    
    
# Install Salt
cd  $_PATH
tar  zxvf salt-0.17.1. tar .gz
cd  salt-0.17.1
$_PYTHON setup.py  install


4.  因为master和minion的区别,只是配置文件的不同,在请参考官方文档(salt的配置文件模板在salt-0.17.1/conf)

5.  启动脚本。

    既然我们把路径都已经修改了,那么我们的启动脚本也要修改一下了。

    salt-minion(此例中,将配置文件也放在了/etc/salt中,如果进行了修改,可以修改脚本即可。)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#!/bin/sh
#                                                                                                                                                 
# Salt minion
###################################
    
# LSB header
    
### BEGIN INIT INFO
# Provides:           salt-minion
# Required-Start:     $local_fs $remote_fs $network $named $time
# Should-Start:         $time ypbind smtp
# Required-Stop:        $local_fs $remote_fs $network $named $time
# Should-Stop:          ypbind smtp
# Default-Start:      3 5
# Default-Stop:       0 1 2 6
# Short-Description:  Salt minion daemon
# Description:        This is the Salt minion daemon that can be controlled by the Salt master.
### END INIT INFO
    
    
# chkconfig header
    
# chkconfig: 345 97 04
# description:  This is the Salt minion daemon that can be controlled by the Salt master.
#
# processname: /usr/bin/salt-minion
    
    
SALTMINION= /usr/local/SaltStack/python-2 .7.5 /bin/salt-minion
PYTHON= /usr/local/SaltStack/python-2 .7.5 /bin
    
# Sanity checks.
[ -x $SALTMINION ] ||  exit  0
    
# Source function library.
/etc/rc .d /init .d /functions
    
SERVICE=salt-minion
PROCESS=salt-minion
CONFIG_ARGS= " -c /etc/salt"
RETVAL=0
    
start() {
         if  [ $(pidofproc $PROCESS) ];  then
               RETVAL=$?
               echo  -n  "already running"
         else
               echo  -n $ "Starting salt-minion daemon: "
               daemon --check $SERVICE $SALTMINION -d $CONFIG_ARGS
               RETVAL=$?
         fi
     echo
     return  $RETVAL
}
    
stop() {
     echo  -n $ "Stopping salt-minion daemon: "
     killproc $PROCESS
     RETVAL=$?
     echo
}
    
restart() {
    stop
    start
}
    
# See how we were called.
case  "$1"  in
     start|stop|restart)
         $1
         ;;
     status)
         if  [ -f $SUSE_RELEASE ];  then
             echo  -n  "Checking for service salt-minion "
             checkproc $SALTMINION
             rc_status - v
         elif  [ -f $DEBIAN_VERSION ];  then
             if  [ -f $LOCKFILE ];  then                                                                                                             
                 RETVAL=0
                 echo  "salt-minion is running."
             else
                 RETVAL=1
                 echo  "salt-minion is stopped."
             fi
         else
             status $PROCESS
             RETVAL=$?
         fi
         ;;
     condrestart)
         [ -f $LOCKFILE ] && restart || :
         ;;
     reload)
         echo  "can't reload configuration, you have to restart it"
         if  [ -f $SUSE_RELEASE ];  then
             rc_status - v
         else
             RETVAL=$?
         fi
         ;;
     *)
         echo  $ "Usage: $0 {start|stop|status|restart|condrestart|reload}"
         exit  1
         ;;
esac
exit  $RETVAL


因为master就只有一台机器,所以就没有写脚本,手工操作也没太多的工作量,而且会更加的灵活。

其它说明:

  1. 我们是把python环境单独安装在了/usr/local/SaltStack/python-2.7.5中,所以每次手工执行命令时,需要使用绝对路径。

  2. 目前上前做的环境中,只有一台master机器,存在单点危险,而且没有做负载均衡。目前还没有想到很好的解决方案。



欢迎大家一起讨论。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值