最新消息:走过的,离开的,已经错过,新开始2016

Windows安装SaltStack salt-master

技术随笔 果果 265浏览 0评论

SaltStack的主控端salt-master官方是没有提供Windows版的,只提供了salt-minion,但是我们有一台阿里云win2008服务器上面竟然有一个salt-master运行多年,一直正常,直到我一次手贱在阿里云对这台服务器进行规格升级后,salt-master
就起不来了。
发现python在遇到ssl模块就奔溃了,系统日志里面可以看到如下错误

错误应用程序名称: python.exe,版本: 0.0.0.0,时间戳: 0x57714567
错误模块名称: _ssl.pyd,版本: 0.0.0.0,时间戳: 0x577145af
异常代码: 0xc0000005
错误偏移量: 0x0000000000137aa3
错误进程 ID: 0x1198
错误应用程序启动时间: 0x01dbc47c51fd44b1
错误应用程序路径: C:\salt\bin\python.exe
错误模块路径: C:\salt\bin\DLLs\_ssl.pyd
报告 ID: 8fe88d0f-306f-11f0-88ef-f94db97d9ffb

在尝试升级了OpenSSL后没有解决。

于是一不做二不休,我打算把系统升级到Windows2019,重新部署所有的服务。
在研究后,发现之前的是可以通过python pip直接安装salt,里面就带了salt-master。

于是在新的win2019服务器安装最新的python3.13,一把pip install salt。
额,各种错误,尝试解决,但是感觉进入死胡同,不行。

又想着,官方不是提供salt-minion安装包吗,装上不是自带python环境,应该就好解决环境问题。
一路下一步安装上salt-minion,然后pip list 可以看到已经有salt,于是 pip uninstall salt,然后再pip install salt,一路正常,但是完成后没有salt-master啊。

回归正文,我们来讲怎么安装。
新版经过多方尝试没有安装成功,这里下面将安装老版本2019.2.0.
因为是老版本,我们相关环境也不能是最新版,要不然安装不成功。
Python 3.6,为了便于切换Python版本,我这里使用了Anaconda,版本没要求,安装后启用虚拟环境,切换到Python3.6.

OpenSSL 需要libeay32.dll和ssleay32.dll。

下载可以官方下载安装后拷贝文件或者去SaltStack 的源里面。
https://mirrors.nju.edu.cn/saltstack/windows/archive/dependencies/OpenSSL%201.0.2k/64/
可能还需要msvcr120.dll。

把libeay32.dll,ssleay32.dll和msvcr120.dll 拷贝到python.exe所在的目录。

下载安装Visual Studio Build Tools
https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/
安装使用C++的桌面开发

设置cl.exe为系统环境变量,需要cmd可以直接执行cl.exe

开始菜单找到Visual Studio 2022 => Developer Command Prompt for VS 2022,找到cl.exe的具体路径,加入系统环境变量。

可能还需要用到pycrypto‑2.6.1‑cp36‑cp36m‑win_amd64.whl,pip编译安装失败,我们可以下whl。
下载https://github.com/M-O-Z-G/Various-Stuff/blob/master/Python/Wheels/pycrypto-2.6.1-cp36-cp36m-win_amd64.whl

pip install pycrypto-2.6.1-cp36-cp36m-win_amd64.whl

建议设置pip源为国内源,我这里设置为阿里云。

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/

建议可以禁用https验证,低版本的内置证书可能不是最新的。
打开%APPDATA%\pip\pip.ini
在里面添加http.sslVerify = false,完整文件如下

[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
http.sslVerify = false

环境一切就绪后,我们就直接安装salt 了,

pip insatll salt==2019.2.0

如果不出意外就Successfully installed CherryPy-17.4.1 GitPython-2.1.10 Jinja2-2.10 Mako-1.0.7 backports-abc-0.5 backports.ssl-match-hostname-3.7.0.1 enum34-1.1.6 gitdb-0.6.4 ioloop-0.1a0 ipaddress-1.0.22 libnacl-1.6.1 lxml-4.3.0 msgpack-python-0.5.6 psutil-5.4.8 pyasn1-0.4.5 salt-2019.2.0

我们查看python 的Scripts 目录下面已经编译完成了

创建C:\salt目录

启动salt-master发现报错,并退出

[ERROR   ] An un-handled exception was caught by salt's global exception handler:
NameError: name 'RSA' is not defined

RSA 加密模块加载错误,pip list 发现pycrypto安装成功,但是不知道怎么还是报错。
查看lib\site-packages\salt\crypt.py文件,发现可以用三种加密模块

M2Crypto > PyCryptodome > PyCrypto
无奈在安装PyCryptodome

pip install PyCryptodome 

自此salt-master运行成功

由于是老版本的,难免有漏洞安全问题,建议内网运行,或者添加ACL运行特定机器连接。
上面的步骤由于我尝试了好几种版本的组合安装,本文是后面回忆总结出来,可能步骤有错误,或者不是必须的,请自行尝试验证。

转载请注明:果果.IT » Windows安装SaltStack salt-master

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址