如何使用 cloud-config 在我的启动盘上设置分区?

Jan*_*Jan 2 partitioning mount cloud-init

我尝试通过 cloud-init 初始化 ubuntu 16.04 服务器。第一次启动服务器时,我想创建以下分区:

  • root-fs(ext4 文件系统 ubuntu)
  • 数据磁盘(xfs 格式化分区)
  • 交换磁盘 (4GB)

当我定期启动机器时(没有任何 cloud-init),我有一个 sda 和 sda1(我认为 sda1 是交换)。

  • 有人可以通过“有效”或“工作”示例帮助我解决问题或帮助我纠正我的方法吗?

  • 或者这不可能在我所在的磁盘上进行分区?

顺便提一句。我的主人是 Hetzner

这是我目前的方法:

#cloud-config
device_aliases: {'root-disk': '/dev/sda'}
resize_rootfs: true

disk_setup:
  root-disk:
    table_type: 'gpt'
    layout:
      - 75
      - [25, 82]
    overwrite: true

fs_setup:
  - label: root-fs
    device: 'root-disk'
    filesystem: 'ext4'
  - label: data-disk
    device: root-disk
    filesystem: 'xfs'
Run Code Online (Sandbox Code Playgroud)

Jan*_*Jan 5

为了结束这个任务,我在这里发布了我的答案:重要的是要知道,这resize_rootfs必须是false 我最终也使用mbr而不是gpt仅仅因为我无法弄清楚如何使用 gpt 发展。也许有人也可以发布该示例。

#cloud-config
resize_rootfs: false

disk_setup:
  /dev/sda:
    table_type: 'mbr'
    layout:
      - 25
      - 75
    overwrite: true

fs_setup:
  - label: root_fs
    filesystem: 'ext4'
    device: /dev/sda
    partition: sda1
    overwrite: true
  - label: data_disk
    filesystem: 'xfs'
    device: /dev/sda
    partition: sda2
    overwrite: true

# now we attach the settings
runcmd:
  - [ partx, --update, /dev/sda ]
  - [ mkfs.xfs, /dev/sda2 ]
  - [ partprobe ]
  - parted /dev/sda set 1 boot on p

mounts:
  - ["/dev/sda1", "/"]
  - ["/dev/sda2", "/data-disk"]
Run Code Online (Sandbox Code Playgroud)