Menyediakan Fedora CoreOS di Oracle Cloud Infrastructure (OCI)
Panduan ini menunjukkan cara menyediakan node Fedora CoreOS (FCOS) baru di Oracle Cloud Infrastructure. Citra Fedora CoreOS saat ini belum dipublikasikan secara langsung di Oracle Cloud Infrastructure. Oleh karena itu, Anda harus terlebih dahulu mengunduh citra Fedora CoreOS untuk Oracle Cloud Infrastructure, kemudian mengunggahnya ke akun Anda sebagai [custom image](https://docs.oracle.com/en-us/iaas/Content/Compute/Tasks/importingcustomimagelinux.htm).
Persyaratan
Sebelum menyediakan mesin FCOS, Anda harus memiliki file konfigurasi Ignition yang berisi kustomisasi Anda. Jika belum memilikinya, lihat [Producing an Ignition File](xref:producing-ign.adoc).
Fedora CoreOS memiliki pengguna bawaan bernama core yang dapat digunakan untuk menjelajahi sistem operasi.
Jika Anda ingin menggunakannya, selesaikan [konfigurasinya](xref:authentication.adoc) dengan menyediakan, misalnya, kunci SSH.
|
Jika Anda tidak ingin menggunakan Ignition untuk memulai, Anda dapat memanfaatkan [dukungan Afterburn](https://coreos.github.io/afterburn/platforms/).
Anda juga perlu memiliki akses ke akun Oracle Cloud Infrastructure. Contoh di bawah ini menggunakan alat baris perintah [oci](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/cliconcepts.htm) dan [jq](https://stedolan.github.io/jq/) sebagai pemroses JSON berbasis baris perintah.
| Panduan ini saat ini hanya mencakup bentuk Virtual Machine dan tidak mencakup Bare Metal. Lihat [issue #414](https://github.com/coreos/fedora-coreos-tracker/issues/414#issuecomment-1795808614) untuk detailnya. |
Mengunduh citra Oracle Cloud Infrastructure
Fedora CoreOS dirancang agar diperbarui secara otomatis, dengan jadwal berbeda untuk setiap stream. Setelah Anda memilih stream yang relevan, unduh, verifikasi, dan dekompres citra terbaru untuk Oracle Cloud Infrastructure:
ARCH="x86_64" # atau "aarch64"
STREAM="stable" # atau "testing", "next"
coreos-installer download -s $STREAM -a $ARCH -p oraclecloud -f qcow2.xz --decompress
| Arsitektur x86_64 dan aarch64 keduanya didukung di Oracle Cloud Infrastructure. |
Sebagai alternatif, Anda dapat mengunduh citra Oracle Cloud Infrastructure secara manual dari [halaman unduhan](https://fedoraproject.org/coreos/download/?stream=stable#cloud_images).
Mengunggah citra ke Oracle Cloud Infrastructure
Identifikasi ID dari root compartment Anda.
oci iam compartment list
ROOT_COMPARTMENT_ID=<root_compartment_id>
OCID compartment root sama dengan OCID tenancy Anda. Anda dapat menemukan informasi ini di konfigurasi CLI Anda di ~/.oci/config atau di [Cloud Console](https://cloud.oracle.com/tenancy).
|
Jika Anda hanya memiliki satu tenant/root compartment, Anda dapat menggunakan perintah berikut untuk mendapatkan informasi tersebut dengan lebih mudah.
ROOT_COMPARTMENT_ID=$(oci iam compartment list |
jq --raw-output '.data."compartment-id"')
COMPARTMENT_ID=$(oci iam compartment create \
--name fedora-coreos-test \
--compartment-id $ROOT_COMPARTMENT_ID \
--description "Fedora CoreOS compartment" \
| jq -r '.data.id')
BUCKET_NAME="fedora-coreos"
oci os bucket create --compartment-id $COMPARTMENT_ID --name $BUCKET_NAME
FCOS_VERSION='...'
IMAGE_NAME="fedora-coreos-${FCOS_VERSION}-oraclecloud.${ARCH}.qcow2"
FILE_PATH="./${IMAGE_NAME}"
oci os object put --bucket-name $BUCKET_NAME --file $FILE_PATH
oci os object list -bn $BUCKET_NAME
NAMESPACE=$(oci os ns get | jq -r '.data')
IMAGE_ID=$(oci compute image import from-object \
--compartment-id $COMPARTMENT_ID \
--namespace $NAMESPACE \
--bucket-name $BUCKET_NAME \
--name $IMAGE_NAME \
--display-name "Fedora CoreOS $FCOS_VERSION $ARCH" \
--launch-mode PARAVIRTUALIZED \
--source-image-type QCOW2 \
--operating-system "Linux" \
| jq -r '.data.id')
Tunggu hingga proses impor selesai.
while true; do
state=$(oci compute image get --image-id $IMAGE_ID |
jq -r '.data."lifecycle-state"')
echo "$(date): $state"
[ "$state" == "AVAILABLE" ] && break || sleep 30
done
Citra perlu dikonfigurasi agar platform mengetahui kemampuan yang dimilikinya. Di sini kita akan mengambil set kemampuan versi default 1.2 dan mengatur beberapa kemampuan tambahan. Perlu dicatat bahwa beberapa di antaranya bersifat spesifik untuk arsitektur tertentu, tetapi tidak menjadi masalah karena tetap harus diaktifkan saat runtime.
GLOBAL_CAP_ID=$(
oci compute global-image-capability-schema list --all | jq -r '.data.id')
GLOBAL_CAP_VERSION_NAME=$(
oci compute global-image-capability-schema-version list --all \
--global-image-capability-schema-id $GLOBAL_CAP_ID \
--display-name 1.2 | jq -r '.data.name')
oci compute image-capability-schema create \
--global-image-capability-schema-version-name $GLOBAL_CAP_VERSION_NAME \
--compartment-id $COMPARTMENT_ID --image-id $IMAGE_ID --schema-data '{
"Compute.AMD_SecureEncryptedVirtualization": {
"default-value": true,
"descriptor-type": "boolean",
"source": "IMAGE"
},
"Compute.SecureBoot": {
"default-value": true,
"descriptor-type": "boolean",
"source": "IMAGE"
},
"Storage.Iscsi.MultipathDeviceSupported": {
"default-value": true,
"descriptor-type": "boolean",
"source": "IMAGE"
}
}'
Sekarang kita dapat menandai citra agar kompatibel dengan [shapes](https://docs.oracle.com/en-us/iaas/Content/Compute/References/computeshapes.htm) VM yang sesuai.
oci compute image-shape-compatibility-entry \
list --image-id $IMAGE_ID | jq -r '.data[].shape' |
while read shape; do
[[ "$shape" =~ Generic ]] && continue # Tidak dapat menghapus shape Generic
echo "Menghapus $shape dari $IMAGE_ID"
oci compute image-shape-compatibility-entry remove \
--force --image-id $IMAGE_ID --shape-name "${shape}"
done
shapes_info=$(oci compute shape list --compartment-id $COMPARTMENT_ID | jq -r '.data[]')
# Batasi hanya untuk shapes VM
# [https://github.com/coreos/fedora-coreos-tracker/issues/414#issuecomment-1795808614](https://github.com/coreos/fedora-coreos-tracker/issues/414#issuecomment-1795808614)
vm_shapes_info=$(jq -r 'select(.shape | select(startswith("VM")))' <<< "$shapes_info")
# Tentukan shapes untuk x86_64 dan aarch64
amd64_shape_ids=$(jq -r 'select(."processor-description" |
contains("AMD", "Intel")) |
.shape' <<< "$vm_shapes_info")
arm64_shape_ids=$(jq -r 'select(."processor-description" |
contains("Ampere")) |
.shape' <<< "$vm_shapes_info")
# Terapkan shapes yang sesuai ke IMAGE
[ "$ARCH" == "x86_64" ] && shape_ids="$amd64_shape_ids"
[ "$ARCH" == "aarch64" ] && shape_ids="$arm64_shape_ids"
for shape in $shape_ids; do
oci compute image-shape-compatibility-entry add \
--image-id $IMAGE_ID --shape-name "${shape}"
done
oci compute image-shape-compatibility-entry list --image-id $IMAGE_ID | jq -r '.data[].shape'
Meluncurkan instance
NETWORK_ID=$(oci network vcn create \
--compartment-id $COMPARTMENT_ID \
--display-name "fedora-coreos-network" \
--cidr-blocks '["10.0.0.0/16"]' \
--dns-label "myfcos" \
--wait-for-state AVAILABLE | jq -r '.data.id')
SUBNET_ID=$(oci network subnet create \
--compartment-id $COMPARTMENT_ID \
--display-name "fedora-coreos-subnet" \
--cidr-block "10.0.0.0/24" \
--vcn-id $NETWORK_ID \
--dns-label "subnet1" \
--wait-for-state AVAILABLE | jq -r '.data.id')
GATEWAY_ID=$(oci network internet-gateway create \
--compartment-id $COMPARTMENT_ID \
--display-name "fedora-coreos-gateway" \
--vcn-id $NETWORK_ID \
--is-enabled true | jq -r '.data.id')
ROUTE_TABLE_ID=$(oci network route-table list \
--compartment-id $COMPARTMENT_ID \
--vcn-id $NETWORK_ID | jq -r '.data.id')
oci network route-table update \
--rt-id $ROUTE_TABLE_ID \
--force --route-rules \
'[{"cidrBlock":"0.0.0.0/0","networkEntityId":"'"${GATEWAY_ID}"'"}]'
Sekarang Anda dapat memilih availability domain atau cukup mengaturnya menjadi domain pertama di region tersebut.
AVAILABILITY_DOMAIN=$(oci iam availability-domain list | jq -r '.data.name')
Lihat semua domain yang memungkinkan dengan oci iam availability-domain list.
|
Sekarang kita dapat meluncurkan instance. Jika Anda hanya menginginkan akses SSH, Anda dapat melewatkan pemberian konfigurasi Ignition ke instance.
NAME=fedora-coreos
SHAPE=VM.Standard.E5.Flex # atau VM.Standard.A1.Flex untuk aarch64
SSHKEYS="/path/to/authorized_keys" # path ke file authorized_keys
INSTANCE_ID=$(oci compute instance launch \
--compartment-id $COMPARTMENT_ID \
--availability-domain $AVAILABILITY_DOMAIN \
--display-name $NAME \
--image-id $IMAGE_ID \
--shape $SHAPE \
--shape-config '{"ocpus": '2', "memoryInGBs": '4'}' \
--subnet-id $SUBNET_ID \
--assign-public-ip true \
--ssh-authorized-keys-file $SSHKEYS \
--wait-for-state TERMINATED \
--wait-for-state RUNNING | jq -r '.data.id')
Shape VM.Standard.E2.1.Micro yang memenuhi syarat free tier memiliki
memori yang kurang dari jumlah yang direkomendasikan untuk menjalankan Fedora CoreOS.
Untuk instance yang memenuhi syarat free tier, direkomendasikan untuk menggunakan shape
berbasis ARM VM.Standard.A1.Flex.
|
NAME=fedora-coreos
SHAPE=VM.Standard.E5.Flex # atau VM.Standard.A1.Flex untuk aarch64
DISK=50 # ukuran boot volume dalam GB
OCPUS=2 # jumlah OCPU yang dialokasikan
MEMORY=4 # ukuran memori dalam GB
INSTANCE_HOSTNAME=mycoreos # hostname untuk instance
USERDATA="/path/to/config.ign" # path ke konfigurasi Ignition Anda
# yang mengatur kunci SSH
INSTANCE_ID=$(oci compute instance launch \
--compartment-id $COMPARTMENT_ID \
--availability-domain $AVAILABILITY_DOMAIN \
--display-name $NAME \
--image-id $IMAGE_ID \
--shape $SHAPE \
--shape-config \
'{"ocpus": '${OCPUS}', "memoryInGBs": '${MEMORY}'}' \
--subnet-id $SUBNET_ID \
--assign-public-ip true \
--hostname-label $INSTANCE_HOSTNAME \
--boot-volume-size-in-gbs $DISK \
--user-data-file $USERDATA \
--wait-for-state TERMINATED \
--wait-for-state RUNNING | jq -r '.data.id')
Meskipun dokumentasi Oracle Cloud Infrastructure menyebutkan cloud-init,
Fedora CoreOS tidak mendukung cloud-init. Fedora CoreOS hanya menerima
file konfigurasi Ignition. Saat menggunakan Cloud Console,
konfigurasi Ignition dapat diletakkan pada kolom "Cloud-init script".
|
Untuk mengaktifkan SecureBoot, Anda dapat menambahkan konfigurasi tambahan melalui
--platform-config '{"type": "AMD_VM", "isSecureBootEnabled": true}' atau
--platform-config '{"type": "INTEL_VM", "isSecureBootEnabled": true}'
tergantung pada jenis prosesor instance Anda. Mengaktifkan SecureBoot saat ini tidak dimungkinkan untuk instance ARM.
|
PUBLIC_IP=$(oci compute instance list-vnics --instance-id $INSTANCE_ID |
jq -r '.data."public-ip"')
echo "Alamat publik IPv4 instance adalah: $PUBLIC_IP"
Sekarang Anda seharusnya dapat melakukan SSH ke dalam instance menggunakan alamat IP yang terkait.
ssh "core@${PUBLIC_IP}"
Want to help? Learn how to contribute to Fedora Docs ›