使用Ansible部署构建

使用Ansible部署构建,ansible,buildout,Ansible,Buildout,我有一个简单的Python程序,它实现了一个prometheus导出器,它通过buildout使用zdaemon。如何使用Ansible部署它,同时保留buildout生成的隔离环境 我已经看过Ansible的pip模块,但是如果我使用buildout设置制作了一个包…,那么我只需要将myscript打包,而不使用buildout添加的zdaemon内容 我考虑这样做的方式是在服务器上安装buildout生成的“bin/server”,并从cron的@reboot运行它,但当然这不会直接起作用,

我有一个简单的Python程序,它实现了一个prometheus导出器,它通过buildout使用zdaemon。如何使用Ansible部署它,同时保留buildout生成的隔离环境

我已经看过Ansible的pip模块,但是如果我使用
buildout设置制作了一个包…
,那么我只需要将myscript打包,而不使用buildout添加的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']
)

显然buildout不是这样工作的,获得隔离的buildout环境的唯一方法是在目标机器上运行buildout

如果不需要,则另一种方法是创建一个setuptools包(使用
buildout setup path/to/setup.py[sdist | bdist]
),该包可以通过pip安装。这将是一个普通的Python包,没有Buildout的隔离。在这种情况下,zdaemon必须手动配置,其配置文件包含在包中。该包将是一个.tar.gz文件,然后可以复制到目标并使用pip安装,这可以使用Ansible完成