SaltStack的非标准安装

原创 2013年12月05日 18:56:48

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机器,存在单点危险,而且没有做负载均衡。目前还没有想到很好的解决方案。



欢迎大家一起讨论。





                    

相关文章推荐

DICOM3.0国人中文版(非标准直译)

  • 2017年01月09日 10:19
  • 4.51MB
  • 下载

SimpowerSystems非标准教程(很经典)

  • 2011年12月15日 11:08
  • 3.95MB
  • 下载

非标准maven工程的resource资源提交

标准的Maven工程,目录结构如下,资源都是放在"src/main/resources"下的,所以在打包成jar的时候无须特别处理。 src/main/java Application...
  • Anlegor
  • Anlegor
  • 2015年01月13日 18:31
  • 2056

LabVIEW非标准bmp转png格式

  • 2017年05月16日 00:06
  • 26KB
  • 下载

为什么非标准任务单完工可用数量与起始数量不一致?

非标准任务单的工艺路线不是标准BOM清单自动产生的,不会随着任务单起始数的改变而改变...

非标准分析基础: 超实数讲义

  • 2010年09月03日 11:16
  • 6.93MB
  • 下载

非标准武术擂台机器人的设计思想——机械结构的设计思想

机械结构的设计思想 文章架构上准备分机械设计、灰度传感器的使用、策略设计几方面讲解。 写在前面     了解擂台赛的同学都知道,非标机器人对于结构的设计和选材方面是没有太多要求的,只对机器人的...

Android平台非标准硬件设备驱动程序设计

Android系统是Google推出的基于Linux内核和Java架构的操作系统,在很短的时间内已成为主流的手机操作系统,并已逐步扩展应用到嵌入式系统、平板电脑和上网本上。它既有Linux系统所具有的...
  • zhgn2
  • zhgn2
  • 2012年04月02日 18:41
  • 1508

长度为0的数组——C语言的非标准用法之一

在标准C和C++中,长度为0的数组是被禁止使用的。不过在GNU C中,存在一个非常奇怪的用法,那就是长度为0的数组,比如Array[0];很多人可能觉得不可思议,长度为0的数组是没有什么意义的,不过在...
  • yuyin86
  • yuyin86
  • 2012年03月12日 10:26
  • 640
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SaltStack的非标准安装
举报原因:
原因补充:

(最多只允许输入30个字)