Развёртывание Fedora/CentOS bootc в vSphere

Предварительные требования

  • Вам понадобится инструмент govc.

  • Хост Linux с ядром 6.x или новее

По умолчанию cloud-init или гипервизорно-специфичные инструменты метаданных не включены

Unlike Fedora Cloud or Fedora CoreOS (or in general many pre-generated disk images) the default base image does not include a tool such as cloud-init or afterburn to fetch SSH keys or execute scripts from the hypervisor.

For more on this, see Cloud Agents.

Создание контейнерного образа, включающего агентов

В этой примерной сборке контейнера внедряются как open-vm-tools, так и cloud-init, чтобы SSH-учётные данные можно было внедрять при создании каждой виртуальной машины.

FROM <base image>
RUN dnf install -y open-vm-tools cloud-init && dnf clean all && rm -rf /var/cache /var/log/dnf && \
    systemctl enable vmtoolsd.service

Также включите в свой образ дополнительное программное обеспечение или инструменты по желанию; см. Сборка контейнеров.

Создание VMDK с помощью bootc-image-builder

Для этого используется bootc-image-builder:

$ podman run --rm -it --privileged -v /var/lib/containers/storage:/var/lib/containers/storage -v .:/output --security-opt label=type:unconfined_t \
  --pull newer quay.io/centos-bootc/bootc-image-builder:latest --local --rootfs xfs --type vmdk <ваш контейнерный образ>

Созданный файл VMDK будет находиться в vmdk/disk.vmdk.

Загрузка VMDK

govc import.vmdk \
    -dc="${DATACENTER}" \
    -ds="${DATASTORE}" \
    -pool="${DATACENTER_POOL}" \
    vmdk/disk.vmdk \
    ${DESTINATION_FOLDER}

Создание новой виртуальной машины из VMDK

govc vm.create \
    -dc="${DATACENTER}" \
    -ds="${DATASTORE}" \
    -pool="{DATACENTER_POOL}" \
    -net="${NETWORK}" \
    -disk.controller=pvscsi \
    -on=false \
    -c=${CPUS} \
    -m=${MEMORY} \
    -g="rhel9_64Guest" \
    -firmware="${FIRMWARE}" \
    "${VM_NAME}"

Подключение VMDK к виртуальной машине

govc vm.disk.attach \
    -dc="${DATACENTER}" \
    -ds="${DATASTORE}" \
    -vm="${VM_NAME}" \
    -link=false \
    -disk="${DESTINATION_FOLDER}/disk.vmdk"