![容器实例化期间 LXC 配置文件自定义更改被忽略](https://linux22.com/image/1185901/%E5%AE%B9%E5%99%A8%E5%AE%9E%E4%BE%8B%E5%8C%96%E6%9C%9F%E9%97%B4%20LXC%20%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E8%87%AA%E5%AE%9A%E4%B9%89%E6%9B%B4%E6%94%B9%E8%A2%AB%E5%BF%BD%E7%95%A5.png)
我需要所有容器自动升级软件包、安装 build-essential 并加载 ssh 密钥,以便在启动后立即使用该密钥在容器内进行 ssh 操作。但是,即使在自定义更改配置文件并使用所述升级的配置文件启动新容器后,所有功能均未正确加载。没有 ssh 密钥可以进行 ssh 操作,也没有软件包升级。我做错了什么?
我的个人资料如下:
config:
user.user-data: |
#cloud-config
ssh_authorized_keys:
- <key>
package_update: true
packages:
- build-essential
description: Default LXD profile
devices:
eth0:
name: eth0
network: lxdbr0
type: nic
root:
path: /
pool: default
type: disk
name: production
used_by:
- /1.0/instances/server
容器启动命令:
lxc launch --profile production images:ubuntu/focal server
我正在使用 Ubuntu 20.04 和 lxc 4.23
答案1
几年前,当我使用 cloud-init 自动执行安装时,我也遇到过同样的问题。
问题是图像“ubuntu/focal”不包含 cloud-init 包,这意味着您的用户数据被忽略。
解决方法是使用图像的“云”变体,例如 ubuntu/focal/cloud。
例如
lxc launch --profile production images:ubuntu/focal/cloud server
我确信您知道您可以使用它检查新实例中 cloud-init 的进度cloud-init status
,日志将位于带有 cloud-init 前缀的 /var/log 中。