使用Ansible部署建筑

时间:2019-06-09 21:37:51

标签: ansible buildout

我有一个简单的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']
)

1 个答案:

答案 0 :(得分:0)

显然,构建不是那样的,获得隔离的构建环境的唯一方法是在目标计算机上运行构建。

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