我正在尝试使用 juju-deployer 部署一项服务(比如 keystone),并将“openstack-origin”设置为我们设置的私有 debian repo。我已将 openstack-origin 设置为如下形式:
"openstack-origin": "deb http://local-mirror.company.com/ubuntu-cloud trusty-updates/juno main"
当我部署服务时,它通过添加新文件成功地将 debian repo 添加到源列表中/etc/apt/sources.list.d/juju_deb.list
,其内容与我设置 openstack-origin 的内容相同:
deb http://local-mirror.company.com/ubuntu-cloud trusty-updates/juno mainu
到目前为止一切顺利。问题是,当系统从该存储库安装软件包时,我们会看到以下错误:
WARNING: The following packages cannot be authenticated!
python-dogpile.core python-netaddr python-six python-stevedore
python-oslo.config python-pbr python-keystoneclient
python-keystonemiddleware python-ldappool python-sqlalchemy python-migrate
python-alembic alembic python-oslo.i18n python-oslo.utils python-oslo.db
python-oslo.serialization python-posix-ipc python-eventlet python-amqp
python-oslo.messaging python-pycadf python-dogpile.cache
python-sqlalchemy-ext python-keystone keystone
E: There are problems and -y was used without --force-yes
如果我手动进入 juju 尝试安装该服务的系统,那么我可以通过执行以下命令重现该问题sudo apt-get -y install keystone
,并且我还可以看到,如果我尝试,我会收到以下错误sudo apt-get update
:
W: GPG error: http://local-mirror.company.com trusty-updates/juno Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5EDB1B62EC4926EA
所以...我的问题是,当 juju 将 debian repo 添加到源列表时,如何让 juju 向该系统添加适当的公钥,以便在尝试安装软件包时我们不会出现钩子错误?要清楚,我不是问如何使用 apt-key 手动添加密钥 - 我需要能够在部署新服务时从 juju-deployer 添加密钥。
答案1
对于 OpenStack charms,可以在 openstack-origin 配置设置中指定 deb url 源条目的密钥,并用竖线字符分隔。当密钥作为 openstack-origin 设置的一部分包含时,charm 将尝试从 keyserver.ubuntu.com 导入密钥。
例如 juju 设置 openstack-origin nova-compute openstack-origin="debhttp://ppa.launchpad.net/billy-olsen/testfix-kilo/ubuntu生动的主|FA0FD8E1”
需要注意的是,OpenStack charms 使用 openstack-origin 信息来确定要安装哪个 OpenStack 版本。因此,非常在 deb 镜像或 ppas 中包含 OpenStack 版本的代号非常重要。不这样做会导致部署 charms 时出现错误。
答案2
A新错误已经提出。
总结一下:
OpenStack charms 提供了一个配置选项来指定任意的 apt repo,但没有提供在 Launchpad 之外托管自定义 apt repo 的情况下添加相应公钥的机制。