我正在尝试使用 cloud-init 添加 InfluxDB(时间序列数据库)存储库。官方文档wget指出,要手动安装,必须首先使用(或)下载公钥curl:
wget -qO- https://repos.influxdata.com/influxdb.key | gpg --dearmor > /etc/apt/trusted.gpg.d/influxdb.gpg
echo "deb [signed-by=/etc/apt/trusted.gpg.d/influxdb.gpg] https://repos.influxdata.com/ubuntu bionic stable" > /etc/apt/sources.list.d/influxdb.list
Run Code Online (Sandbox Code Playgroud)
效果很好,现在我想使用 cloud-init 自动执行此操作。
我的问题是我不知道如何在使用之前从提供的 URL 获取密钥。我试过这个:
apt:
sources:
influxdb:
source: 'deb https://repos.influxdata.com/ubuntu $RELEASE stable'
Run Code Online (Sandbox Code Playgroud)
但随后我收到 GPG 错误,指出存储库未签名。
我尝试了以下keyserver和keyid键的组合但没有成功:
keyserver: https://repos.influxdata.com/influxdb.keykeyserver: https://repos.influxdata.com和keyid: influxdb.keykeyserver: https://repos.influxdata.com和keyid: 05CE15085FC09D18E99EFB22684A14CF2582E0C5 如何获取 GPG 密钥?我可以使用Runcmd,但如果有替代方案,我宁愿不使用。
有两种可能:
检查您要导入的密钥是否是 Ubuntu 密钥服务器的一部分:
wget -qO- https://repos.influxdata.com/influxdb.key | gpg --with-fingerprint --with-colons | awk -F: '/^fpr/ { print $10 }'
Run Code Online (Sandbox Code Playgroud)
gpg --keyserver=keyserver.ubuntu.com --recv-keys 05CE15085FC09D18E99EFB22684A14CF2582E0C5
Run Code Online (Sandbox Code Playgroud)
密钥存在于 Ubuntu 密钥服务器上
如果存在,那么您只需将密钥 ID 添加到 cloud-init 文件中,并将存储库标记为由该密钥签名:
apt:
sources:
influxdb:
keyid: 05CE15085FC09D18E99EFB22684A14CF2582E0C5
source: 'deb [signed-by=$KEY_FILE] https://repos.influxdata.com/ubuntu $RELEASE stable'
Run Code Online (Sandbox Code Playgroud)
手动导入公钥
如果 Ubuntu 密钥服务器上不存在该密钥,可以使用以下runcmd命令手动导入它:
# fetch Influx GPG public key, and store it in the keyring
runcmd:
- wget -qO- https://repos.influxdata.com/influxdb.key | sudo gpg --dearmor -o /usr/share/keyrings/influxdb.gpg
# add Influx apt source by marking it as signed with the added key
# (note the [signed-by] option)
apt:
sources:
influxdb:
source: 'deb [signed-by=/usr/share/keyrings/influxdb.gpg] https://repos.influxdata.com/ubuntu $RELEASE stable'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2927 次 |
| 最近记录: |