我有一个简单的Python程序,该程序实现了一个prometheus导出程序,该程序通过buildout使用zdaemon。我如何使用Ansible进行部署,同时保留构建所带来的隔离环境?
我已经看过Ansible的pip模块,但是如果我使用buildout setup ...
制作软件包,那么我的myscript打包后就不会包含zdaemon所添加的东西。
我正在考虑的方法是在服务器上安装buildout生成的'bin / server'并从cron的@reboot运行它,但是当然不能直接工作,因为buildout使用路径在生成机上使用生成的脚本。
buildout.cfg:
develop = .
parts = server
[server]
recipe = zc.zdaemonrecipe
program = ${buildout:bin-directory}/myscript.py
eggs =
myscript
zdaemon
setup.py:
from setuptools import setup, find_packages
setup(
name="myscript",
version="0.1",
packages=find_packages(),
scripts=['myscript.py'],
install_requires=['prometheus_client']
)
答案 0 :(得分:0)
显然,构建不是那样的,获得隔离的构建环境的唯一方法是在目标计算机上运行构建。
如果不希望这样做,则可以选择创建一个setuptools软件包(使用buildout setup path/to/setup.py [sdist|bdist]
),该软件包可以通过pip安装。这将是一个普通的Python包,并且没有Buildout的隔离。在这种情况下,必须手动配置zdaemon并将其配置文件包含在软件包中。该软件包将是一个.tar.gz文件,然后可以将其复制到目标并使用pip安装,这可以使用Ansible完成。