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 目录下面已经编译完成了
启动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
由于是老版本的,难免有漏洞安全问题,建议内网运行,或者添加ACL运行特定机器连接。
上面的步骤由于我尝试了好几种版本的组合安装,本文是后面回忆总结出来,可能步骤有错误,或者不是必须的,请自行尝试验证。
转载请注明:果果.IT » Windows安装SaltStack salt-master