Provisioning di Fedora CoreOS su Oracle Cloud Infrastructure (OCI)
Questa guida mostra come effettuare il provisioning di nuovi nodi Fedora CoreOS (FCOS) su Oracle Cloud Infrastructure. Attualmente, le immagini di Fedora CoreOS non sono pubblicate direttamente su Oracle Cloud Infrastructure. Pertanto, è necessario prima scaricare l’immagine di Fedora CoreOS per Oracle Cloud Infrastructure, quindi caricarla nel proprio account come https://docs.oracle.com/en-us/iaas/Content/Compute/Tasks/importingcustomimagelinux.htm[immagine personalizzata.
Prerequisiti
Prima di effettuare il provisioning di una macchina FCOS, è necessario disporre di un file di configurazione Ignition contenente le proprie personalizzazioni. Se non ne hai uno, consulta la guida Creazione di un file Ignition.
Fedora CoreOS dispone di un utente predefinito chiamato core che può essere utilizzato per esplorare il sistema operativo.
Se desideri utilizzarlo, completa la sua configurazione fornendo, ad esempio, una chiave SSH.
|
Se non desideri utilizzare Ignition per iniziare, puoi sfruttare il supporto offerto da Afterburn.
Devi inoltre avere accesso a un account Oracle Cloud Infrastructure. Gli esempi riportati di seguito utilizzano lo strumento da riga di comando oci e jq come processore JSON da riga di comando.
Questa guida attualmente copre solo le forme Virtual Machine e non quelle Bare Metal. Consulta il problema #414 per maggiori dettagli |
Download di un’immagine per Oracle Cloud Infrastructure
Fedora CoreOS è progettato per aggiornarsi automaticamente, con programmi differenti a seconda dello stream. Una volta scelto lo stream rilevante, scarica, verifica e decomprimi l’ultima immagine per Oracle Cloud Infrastructure:
ARCH="x86_64" # or "aarch64"
STREAM="stable" # or "testing", "next"
podman run --security-opt label=disable --pull=always --rm -v .:/data -w /data \
quay.io/coreos/coreos-installer:release download -s $STREAM -p oraclecloud -f qcow2.xz -a $ARCH --decompress
Sia le architetture x86\_64 che aarch64 sono supportate su Oracle Cloud Infrastructure. |
In alternativa, puoi scaricare manualmente un’immagine per Oracle Cloud Infrastructure dalla pagina di download.
Caricamento dell’immagine su Oracle Cloud Infrastructure
-
Individua il tuo Compartment. Per elencare i compartment nella tua tenancy:
oci iam compartment list
-
Crea un compartment se necessario:
compartment_ocid="$(oci iam compartment create \ --name fedora-coreos-test \ --compartment-id <root_compartment_ocid> \ --description "Fedora CoreOS test compartment" \ | jq -r '.data.id')"
L’OCID del compartment root è lo stesso della tua tenancy OCID Puoi trovare queste informazioni nella configurazione della CLI in ~/.oci/config
oppure nella Cloud Console. -
Crea un bucket:
compartment_ocid="ocid1.compartment.oc1..." bucket_name="fedora-coreos" oci os bucket create --compartment-id "${compartment_ocid}" --name "${bucket_name}"
-
Carica immagine in un bucktet:
oci os object put --bucket-name "${bucket_name}" --file "${image_name}"
-
Importa l’immagine come immagine personalizzata e annota il suo ID:
namespace="$(oci os ns get | jq -r '.data')" image_id="$(oci compute image import from-object \ --compartment-id "${compartment_ocid}" \ --namespace "${namespace}" \ --bucket-name "${bucket_name}" \ --name "${image_name}" \ --display-name "Fedora CoreOS" \ --launch-mode PARAVIRTUALIZED \ --source-image-type QCOW2 \ --operating-system "Linux" \ | jq -r '.data.id')"
-
Attendi che l’importazione sia completata. Per elencare tutte le immagini FCOS importate, usa il comando:
oci compute image list --compartment-id "${compartment_ocid}" --display-name "Fedora CoreOS"
-
Configura le funzionalità dell’immagine
global_cap_id="$(oci compute global-image-capability-schema list | jq -r '.data[0].id')" global_cap_version_name="$(oci compute global-image-capability-schema-version list \ --global-image-capability-schema-id ${global_cap_id} \ --display-name 1.2 \ | jq -r '.data[0].name')" oci compute image-capability-schema create \ --compartment-id "${compartment_ocid}" \ --image-id "${image_id}" \ --global-image-capability-schema-version-name "${global_cap_version_name}" \ --schema-data '{ "Compute.AMD_SecureEncryptedVirtualization": { "default-value": true, "descriptor-type": "boolean", "source": "IMAGE" }, "Compute.Firmware": { "default-value": "UEFI_64", "descriptor-type": "enumstring", "source": "IMAGE", "values": [ "BIOS", "UEFI_64" ] }, "Compute.SecureBoot": { "default-value": true, "descriptor-type": "boolean", "source": "IMAGE" }, "Storage.Iscsi.MultipathDeviceSupported": { "default-value": true, "descriptor-type": "boolean", "source": "IMAGE" } }'
-
Segna l’immagine come compatibile con tutte le shape.
Rimuovi le shape compatibili predefinitefor shape in $(oci compute image-shape-compatibility-entry list --image-id "${image_id}" | jq -r '.data[].shape' | grep -v '.Generic'); do echo "Removing ${shape}" oci compute image-shape-compatibility-entry remove --force --image-id "${image_id}" --shape-name "${shape}" done
Segna come compatibile con le shape VM x86\_64readarray -t shapes_amd64 < <(oci compute shape list \ --compartment-id "${compartment_ocid}" \ | jq -r '.data[] | select(."processor-description" | contains("AMD", "Intel")) | .shape | select(startswith("VM"))') for shape in "${shapes_amd64[@]}"; do oci compute image-shape-compatibility-entry add --image-id "${image_id}" --shape-name "${shape}" done
Segna come compatibile con le shape VM aarch64readarray -t shapes_aarch64 < <(oci compute shape list \ --compartment-id "${compartment_ocid}" \ | jq -r '.data[] | select(."processor-description" | contains("Ampere")) | .shape | select(startswith("VM"))') for shape in "${shapes_aarch64[@]}"; do oci compute image-shape-compatibility-entry add --image-id "${image_id}" --shape-name "${shape}" done
-
Per elencare tutte le shape compatibili con un’immagine:
oci compute image-shape-compatibility-entry list --image-id "${image_id}"
Avvio di un’istanza
-
Crea una Virtual Cloud Network (VCN):
vcn_id="$(oci network vcn create \ --compartment-id "${compartment_ocid}" \ --cidr-blocks '["10.0.0.0/16"]' \ --display-name "fedora-coreos-vcn" \ --dns-label "fcos.example.com" \ --wait-for-state AVAILABLE \ | jq -r '.data.id')"
-
Aggiungi una subnet:
subnet_id="$(oci network subnet create \ --cidr-block "10.0.0.0/24" \ --compartment-id "${compartment_ocid}" \ --vcn-id "${vcn_id}" \ --display-name "fedora-coreos-subnet" \ --dns-label "main" \ --wait-for-state AVAILABLE \ | jq -r '.data.id')"
-
Crea un Internet Gateway:
gateway_id="$(oci network internet-gateway create \ --compartment-id "${compartment_ocid}" \ --vcn-id "${vcn_id}" \ --is-enabled true \ --display-name "fedora-coreos-gateway" \ | jq -r '.data.id')"
-
Aggiungi una regola alla Route Table:
route_table="$(oci network route-table list \ --compartment-id "${compartment_ocid}" \ --vcn-id "${vcn_id}" \ | jq -r '.data[0].id')" oci network route-table update \ --rt-id "${route_table}" \ --route-rules '[{"cidrBlock":"0.0.0.0/0","networkEntityId":"'"${gateway_id}"'"}]' \ --force
-
Seleziona un dominio di disponibilità:
availability_domain="$(oci iam availability-domain list | jq -r '.data[0].name')"
-
Avvia un’istanza. La tua configurazione Ignition deve essere fornita alla VM come user data, oppure puoi scegliere di non passare alcun user data se desideri semplicemente accedere via SSH. Questa opzione consente di testare facilmente Fedora CoreOS senza dover creare prima un file di configurazione Ignition.
Esempio di avvio con solo le chiavi SSH configurateNAME=fedora-coreos SHAPE=VM.Standard.E2.1.Micro SSHKEYS="/path/to/authorized_keys" # path to authorized_keys file oci compute instance launch \ --compartment-id "${compartment_ocid}" \ --availability-domain "${availability_domain}" \ --display-name "${NAME}" \ --image-id "${image_id}" \ --shape "${SHAPE}" \ --subnet-id "${subnet_id}" \ --assign-public-ip true \ --ssh-authorized-keys-file "${SSHKEYS}"
Esempio di avvio di un’istanza Ampere personalizzataNAME=fedora-coreos SHAPE=VM.Standard.A1.Flex DISK=50 # size of boot volume in GBs OCPUS=2 # number of allocated OCPUs MEMORY=4 # size of memory in GBs INSTHOSTNAME=mycoreos # hostname for the instance SSHKEYS="/path/to/authorized_keys" # path to authorized_keys file USERDATA="/path/to/config.ign" # path to your Ignition config oci compute instance launch \ --compartment-id "${compartment_ocid}" \ --availability-domain "${availability_domain}" \ --display-name "${NAME}" \ --hostname-label "${INSTHOSTNAME}" \ --image-id "${image_id}" \ --shape "${SHAPE}" \ --shape-config '{"ocpus": '${OCPUS}', "memoryInGBs": '${MEMORY}'}' \ --boot-volume-size-in-gbs "${DISK}" \ --subnet-id "${subnet_id}" \ --assign-public-ip true \ --ssh-authorized-keys-file "${SSHKEYS}" \ --user-data-file "${USERDATA}"
Sebbene la documentazione di Oracle Cloud Infrastructure menzioni cloud-init, Fedora CoreOS (FCOS) non supporta cloud-init
Accetta solo file di configurazione Ignition. Quando si utilizza la Cloud Console, una configurazione Ignition può essere inserita nel campo "Cloud-init script". -
Ottieni l’indirizzo IP pubblico della tua istanza:
oci compute instance list-vnics --instance-id <instance_id>
-
Ora dovresti poter effettuare l’accesso SSH all’istanza utilizzando l’indirizzo IP associato.
Esempio di connessionessh core@<indirizzo ip>
Want to help? Learn how to contribute to Fedora Docs ›