我正在尝试使用 cloud-init 和服务器实时映像配置虚拟机。(我没有使用云映像,由于基础设施原因,我必须从 ISO 安装)
然而,每当我尝试autoinstall与 eg结合时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
Run Code Online (Sandbox Code Playgroud)
但该文件未写入/cloud_init_flag。
是否缺少模块?服务器实时 ISO 上的云配置是否不完整?
编辑文件是写的,但是是在安装环境下写的!相反,我可能应该使用密钥为目标系统autoinstall.user-data提供密钥。user-data
如何让 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
...
Run Code Online (Sandbox Code Playgroud)
怎么运行的
cloud-init将为at创建配置/target/var/lib/cloud/seed/nocloud-net/user-data。cloud-init将使用此配置文件来执行一些安装任务。值得注意的是,这就是创建第一个用户的方式。user-data自动安装文件中包含某个部分,则subiquity会将用户数据部分合并到生成的/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}
Run Code Online (Sandbox Code Playgroud)
在第一次启动期间,cloud-init确实创建了/cloud_init_flag包含配置内容的文件。