将 cloud-init autoinstall 与其他 cloud-init 模块相结合

将 cloud-init autoinstall 与其他 cloud-init 模块相结合

我正在尝试使用 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_filescloud-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具有配置内容的文件。

相关内容