我目前正在将 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 插件。
- 有关于编写插件的讨论在 Ubuntu 在线峰会上
- 你可以在Juju 插件 github 页面