我正在尝试使用 cloud-init 和服务器实时映像配置虚拟机。(我没有使用云映像,因为出于基础设施原因,我必须从 ISO 安装)
但是,每当我尝试autoinstall
与例如结合时write_files
,该write_files
部分似乎都没有成功。
以下安装 Ubuntu:
#cloud-config
autoinstall:
version: 1
identity:
hostname: boxy-001
password: "$1$k46kl1..."
username: alice
storage:
layout:
name: lvm
ssh:
install-server: true
authorized-keys:
- "ecdsa-sha2-nistp256 AAAAE2...."
write_files:
- content: |
cloud_init_has_run
path: /cloud_init_flag
但该文件并未写入/cloud_init_flag
。
缺少模块吗?服务器实时 ISO 上的云配置不完整吗?
编辑文件是写的,但它是在安装环境中写的!相反,我应该使用密钥来为目标系统autoinstall.user-data
提供。user-data
答案1
如何让 cloud-init 与自动安装结合在已安装的系统上运行?
有一个user-data
配置自动安装的密钥文件。
例如,如果您希望您的配置write_files
被cloud-init
已安装系统则此代码片段可以作为自动安装文件的一部分包含在内。
#cloud-config
autoinstall:
version: 1
user-data:
write_files:
- content: |
cloud_init_has_run
path: /cloud_init_flag
...
怎么运行的
- 在安装过程中,下位性将为 创建配置
cloud-init
。/target/var/lib/cloud/seed/nocloud-net/user-data
- 在安装的系统首次启动时,
cloud-init
将使用此配置文件执行一些安装任务。值得注意的是,这是第一个用户的创建方式。 - 如果
user-data
自动安装文件中包含某个部分,则下位性将要合并用户数据部分进入生成的/target/var/lib/cloud/seed/nocloud-net/user-data
文件。
使用上述代码片段,合并的配置产生了此文件内容。
#cloud-config
growpart: {mode: 'off'}
locale: en_US.UTF-8
preserve_hostname: true
resize_rootfs: false
...
write_files:
- {content: 'cloud_init_has_run
', path: /cloud_init_flag}
在首次启动期间,cloud-init
确实创建了/cloud_init_flag
具有配置内容的文件。