使用 python-pip 自动安装 charmhelpers

使用 python-pip 自动安装 charmhelpers

我目前正在将 charms 签入代码存储库,而无需签入 lib/charmhelpers。签出 charm 后,我需要运行 scripts/charm_helpers_sync.py,然后才能将 charm 部署到机器上,以填充 lib/charm_helpers 目录。在 juju 捆绑并将文件推送到机器之前,我能否让其帮我完成此操作?

答案1

由于您希望charm_helpers_sync.py每次部署 charm 时都运行,我怀疑您希望始终拥有最新版本python-charmhelpers。有一种更简单的方法可以实现此目的:

使用 python-pip 自动安装 charmhelpers

以下函数使用存储库和 python-pip 安装 charmhelpers。

def install_charmhelpers():
    """
    Install the charmhelpers library, if not present.
    """
    try:
        import charmhelpers  # noqa
    except ImportError:
        import subprocess
        subprocess.check_call(['apt-get', 'install', '-y', 'python-pip'])
        subprocess.check_call(['pip', 'install', 'charmhelpers'])

在钩子脚本的顶部(在 charm-helper 导入上方)调用此函数。Juju 的 python charm 模板展示了一种简洁的实现方法。

编写 Juju 插件来下载 charmhelpers 源码

如果您确实希望 Juju 下载 charmhelpers 代码并将其包含在 charms 中,则必须编写一个 Juju 插件。

相关内容