将 cloud-init 自动安装与其他 cloud-init 模块结合起来

Tom*_*Tom 4 server cloud-init

我正在尝试使用 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

And*_*her 7

如何让 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)

怎么运行的

  • 在安装过程中,subiquitycloud-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包含配置内容的文件。