需求产生场景:
1、python的virtualenv虚拟环境非常的好用。
2、saltstack作为运维自动化的一个重要组件也挺好用的。
但是:
1、saltsatck最简便的是使用yum安装,结合的是linux-centos自带的python2.6版本。
2、即便使用编译安装,也是在编译安装的python环境下
so,需求产生了:
我想要在virtualenv环境下使用saltstack的api,发现非常蛋疼。两者无法整合到一起。
为了解决这个痛点,用了半个下午的时间,参考saltstack的官方文档,整理了一个解决方案
废话不多说,直接上干货:
实现过程:
1、前置条件:
操作系统:centos6.4 预备安装saltmaster
已经安装完毕的salt-minion服务器
编译python:2.7.8 (安装了pip以及virtualenv)
为了操作简便,默认在root用户下。
ps:如果编译的python没有搞定的话,先整好环境。这里不多说,默认ok
2、操作步骤:
2.1:创建python虚拟环境:
virtualenv /path/to/your/virtualenv
source /path/to/your/virtualenv/bin/activate
2.2:安装salt
#编译时将salt配置加入
pip install --global-option='--salt-root-dir=/path/to/your/virtualenv/salt/' salt
mkdir -p /path/to/your/virtualenv/salt/etc/salt
#将原有配置文件cp过来
cp ./salt/conf/master ./salt/conf/minion /path/to/your/virtualenv/salt/etc/salt/
修改master配置文件的"publish_port","ret_port",区别与现网运行的端口。
publish_port: 5505
ret_port: 5506
2.3:修改salt-minion客户端端口配置
“master_port: 5506”
2.4:补充说明:
如果你的salt-minion是之前存在的客户端,那么为了避免与之前的缓存冲突,需要删除之前的
缓存文件:/etc/salt/pki 备份删除。
如果master报错,也是这么策略,删除pki,重启即可。
2.5:启动-测试:
salt-key -L
salt-key -A
salt '*' test.ping
2.6:api测试demo:
import salt.client
client = salt.client.LocalClient()
ret = client.cmd('*','test.ping')
print ret
以上。
ps:基本上看着官方文档就能搞定。稍微麻烦点的是与之前的环境配合,不过跟着log也能随便解决。