【问题标题】:Deploy a buildout using Ansible使用 Ansible 部署构建
【发布时间】:2019-06-09 21:37:51
【问题描述】:

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

我查看了 Ansible 的 pip 模块,但如果我使用 buildout setup ... 制作一个包,那么我只需将 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']
)

【问题讨论】:

    标签: ansible buildout


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-20
      • 2021-06-04
      • 2016-03-29
      • 1970-01-01
      • 1970-01-01
      • 2022-06-23
      相关资源
      最近更新 更多