CentOS 5系统安装saltstack

    最近公司有一些新需求,需要部署一些saltstack来管理部分服务器。所以最近研究了一下saltstack的安装和部署。

    说实话,如果你用的是CentOS 6以上的系统的话那就不用看我这篇文章了,因为6的系统上可以直接使用epel软件源,用yum的方式来安装,只要在服务端装个salt-master,在被管理节点装个salt-minion就OK了,安装简直不能再方便了。

     但是,如果要是这么简单就处理了这个问题的话我也就不用写这篇文章了,毕竟理想总是不切实际的嘛,所以,一定有奇葩的问题被我遇到了啊。

     公司服务器环境全部是一水儿的CentOS 5.11,这就给部署带来了一点扯淡的地方,因为装完epel源之后,我search了一下salt,发现结果是这样的:

[root@S17 ~]# yum search salt
Loaded plugins: downloadonly, fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: mirrors.btte.net
 * epel: mirrors.neusoft.edu.cn
 * extras: mirrors.btte.net
 * rpmforge: ftp.neowiz.com
 * updates: mirrors.yun-idc.com
============================== Matched: salt ==============================
apbs.i386 : Adaptive Poisson Boltzmann Solver
apbs.x86_64 : Adaptive Poisson Boltzmann Solver
eurephia-utils.x86_64 : Misc. eurephia utilities
perl-Crypt-SaltedHash.noarch : Assists in working with salted hashes
python-halite.noarch : SaltStack Web UI
salt-api.noarch : A web api for to access salt the parallel remote
                : execution system

搜索结果发现根本没有salt-master、salt-minion啥的,这应该是CentOS 5这个系统的yum源的问题,既然yum的方式不能用了,那就换一种安装方式吧,也是本文想记录的方式。


使用pip安装saltstack

    第一步,升级python到python2.6

    我的服务器上的python都是2.4的版本,所以,使用yum来安装python2.6,这里也是一个巨大的槽点,在CentOS 5上的pythong2.6包的版本名字叫python26,这种命名规则还出现在php53等等上面,让人很蛋疼啊(当初安装gangglia-web的时候由于默认的php-5.1版本对一个函数的不支持,让我好一顿折腾,最后自己编译了ganglia打成rpm包,再忽略依赖安装),呵呵,题外话,不提了,继续装python2.6.

    第二步,安装pip命令

    pip命令需要用python来运行安装脚本来安装,首先要下载安装脚本:

    wget https://bootstrap.pypa.io/get-pip.py

    下载完成后使用如下命令安装pip:

    python2.6 get-pip.py

    安装完成后使用pip安装salt

    pip install salt

    完成后,你以为这就安装完了?简直图样图森破!事实完全不是你想的那样!

    首先,我们需要找个配置文件,并且mkdir /etc/salt目录,把配置文件放到这个目录下,master就放master的配置文件,minion就放minion的配置文件,这些文件可以从CentOS 6的机器上用yum装的salt中copy过来(我就是这么搞得)。

    对了,还有启动脚本别忘了也一起搞过来放到/etc/init.d/。完成这一切以后,还需要在两台机器上分别装一些依赖包才可以,否则启动minion时会秒死。直接用yum方式装上如下软件包:python26-crypto、python26-m2crypto、python26-zmq

    装完以后,就可以正常的启动了,修改minion的配置文件中,master: [master IP],然后在master机器上就可以看到minion的key了。