Ce document explique comment adapter les images de système d'exploitation (OS) dansTrusted Cloud by S3NS pour utiliser les images d'OS Enterprise pour lesquelles vous disposez d'une licence.
Trusted Cloud by S3NS fournit des images d'OS pour Debian, Ubuntu LTS, Rocky Linux et Container-Optimized OS. Si vous souhaitez utiliser l'une de ces images fournies, passez à la section Créer une instance et sélectionnez l'image que vous souhaitez utiliser lors de la création de l'instance.
Si vous disposez d'une licence pour un OS d'entreprise pour lequel Trusted Cloud by S3NS aucune image d'OS n'est fournie (par exemple, Windows, Red Hat Enterprise Linux (RHEL) ou SUSE Linux Enterprise Server (SLES)), utilisez le script fourni dans ce document pour adapter une image à votre licence. Le script installe les pilotes nécessaires pour que vous puissiez utiliser votre image afin de créer des instances dans Trusted Cloud by S3NS.
Avant de commencer
- Installez le processeur de ligne de commande
jq
. - Si vous ne l'avez pas déjà fait, importez un disque contenant l'image d'OS que vous souhaitez utiliser dans un bucket Cloud Storage.
- Vérifiez que vous disposez des autorisations requises pour créer des images personnalisées.
-
Si ce n'est pas déjà fait, configurez l'authentification.
L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Trusted Cloud by S3NS .
Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes :
Select the tab for how you plan to use the samples on this page:
gcloud
-
Installez la Google Cloud CLI, puis connectez-vous à la gcloud CLI avec votre identité fédérée. Après vous être connecté, initialisez Google Cloud CLI en exécutant la commande suivante :
gcloud init
- Set a default region and zone.
REST
Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.
Installez la Google Cloud CLI, puis connectez-vous à la gcloud CLI avec votre identité fédérée. Après vous être connecté, initialisez Google Cloud CLI en exécutant la commande suivante :
gcloud init
Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Trusted Cloud .
Script d'adaptation de l'OS
Pour vous aider à adapter les images pour Trusted Cloud by S3NS, Trusted Cloud by S3NS fournit un script qui effectue les étapes suivantes :
- Crée une instance avec le disque provenant de Cloud Storage et exécute l'outil d'adaptation de l'OS sur le disque de l'instance. Ce processus installe les pilotes nécessaires au fonctionnement de votre image d'OS sur Trusted Cloud by S3NS.
- Extrait le rapport d'adaptation de l'OS et copie les fichiers de sortie sur votre ordinateur local. Ce rapport fournit des informations sur les résultats du processus d'adaptation, ainsi que des détails sur l'OS détecté. Si le script ne s'exécute pas correctement, le rapport fournit des erreurs, des avertissements et des éléments d'action pour résoudre les problèmes d'adaptation.
- Crée une image à partir du disque de l'instance. Vous pouvez ensuite utiliser cette image pour créer des instances sur Trusted Cloud by S3NS.
- Supprime l'instance et le disque créés lors de ce processus. Cette étape permet de supprimer les ressources inutiles de votre projet.
Le script suivant adapte les images pour les utiliser dans Trusted Cloud by S3NS :
Script d'adaptation de l'OS complet
#!/usr/bin/env bash # Sets variables set -e set -x set -o pipefail UNIQUE_ID='' TPC_PREFIX='' ZONE='' PROJECT='' INPUT_IMAGE='' INPUT_DISK='' IMAGE_NAME='' ADAPTATION_INSTANCE_TYPE='c3-highcpu-4' # needs to support nested virtualization usage() { echo "" echo "Usage:" echo " $0 -g -o -z -t -p " echo "" echo "" echo "Parameters:" echo " -i
OR -d echo " -oOR -g " " echo " -z" echo " -t" echo " -p" echo " -h (help)" echo "" } while getopts ":i:d:g:o:z:t:p:h" opt; do case "${opt}" in i) INPUT_IMAGE="${OPTARG}" ;; d) INPUT_DISK="${OPTARG}" ;; g) INPUT_GCS_OBJECT="${OPTARG}" ;; o) IMAGE_NAME="${OPTARG}" ;; z) ZONE="${OPTARG}" ;; t) TPC_PREFIX="${OPTARG}" ;; p) PROJECT="${OPTARG}" ;; h) echo "$0 help:" usage exit 0 ;; *) echo "Unknown arg -${opt} ${OPTARG}" usage exit 1 ;; esac done shift $((OPTIND-1)) # Defines errors if [[ -n "${INPUT_IMAGE}" && -n "${INPUT_DISK}" ]] || [[ -n "${INPUT_IMAGE}" && -n "${INPUT_GCS_OBJECT}" ]] || [[ -n "${INPUT_DISK}" && -n "${INPUT_GCS_OBJECT}" ]]; then echo "Only one of -i, -d, or -g must be specified" usage exit 1 fi if [[ -z "${IMAGE_NAME}" ]]; then echo "The name of the image must be specified" usage exit 1 fi if [[ -z "${ZONE}" ]]; then echo "Zone must be specified" usage exit 1 fi if [[ -z "${TPC_PREFIX}" ]]; then echo "TPC prefix must be specified" usage exit 1 fi if [[ -z "${PROJECT}" ]]; then echo "Project must be specified" usage exit 1 fi # Creates disk OS_ADAPTATION_IMAGE="projects/${TPC_PREFIX}:v2v-community/global/images/family/v2v-tpc-stable" if [[ -z "${UNIQUE_ID}" ]]; then UNIQUE_ID=$(head /dev/urandom | tr -dc a-z0-9 | head -c4) fi if [[ -n "${INPUT_IMAGE}" ]]; then DISK_ID="${IMAGE_NAME}-disk-${UNIQUE_ID}" echo "Creating disk ${DISK_ID} from image ${INPUT_IMAGE}..." gcloud compute disks create "${DISK_ID}" --zone="${ZONE}" --image "${INPUT_IMAGE}" elif [[ -n "${INPUT_GCS_OBJECT}" ]]; then DISK_ID="${IMAGE_NAME}-disk-${UNIQUE_ID}" echo "Creating disk ${DISK_ID} from GCS object ${INPUT_GCS_OBJECT}..." CURL_OUTPUT=$(curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H 'Content-Type: application/json' \ -X POST \ "https://compute.s3nsapis.fr/compute/v1/projects/${TPC_PREFIX}:${PROJECT}/zones/${ZONE}/disks" \ -d '{"name":"'"${DISK_ID}"'", "sourceStorageObject":"'"${INPUT_GCS_OBJECT}"'"}') OPERATION_ID=$(jq -r '.name' <<< "${CURL_OUTPUT}") while ! gcloud compute operations describe --zone "${ZONE}" --format=json \ "${OPERATION_ID}" | jq -e '.status == "DONE"' >/dev/null; do sleep 5 done elif [[ -n "${INPUT_DISK}" ]]; then DISK_ID="${INPUT_DISK}" fi QUERY_PATH='v2v/report' DEVICE_NAME="dev-${UNIQUE_ID}" OUTPUT_DIR='/var/v2v' STARTUP_SCRIPT="docker run --privileged -v /dev:/dev -v ${OUTPUT_DIR}:${OUTPUT_DIR} v2v-tpc -vv --log file=${OUTPUT_DIR}/output.log,level=trace --report file=${OUTPUT_DIR}/report.json --report file=http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/${QUERY_PATH},headers=Metadata-Flavor=Google --license=byol --in-place --drive file=/dev/disk/by-id/google-${DEVICE_NAME},format=raw" # Creates instance and runs adaptation tool on disk echo "Adapting disk ${DISK_ID}" INSTANCE="os-adaptation-instance-${UNIQUE_ID}" gcloud compute instances create "${INSTANCE}" \ --zone="${ZONE}" \ --machine-type="${ADAPTATION_INSTANCE_TYPE}" \ --enable-nested-virtualization \ --metadata="^@@@^enable-guest-attributes=TRUE@@@startup-script=${STARTUP_SCRIPT}" \ --create-disk="auto-delete=yes,boot=yes,image=${OS_ADAPTATION_IMAGE}" \ --disk="name=${DISK_ID},auto-delete=no,device-name=${DEVICE_NAME}" # Retrieves report while [[ -z "${REPORT}" ]]; do sleep 5 set +e REPORT=$(gcloud compute instances get-guest-attributes "${INSTANCE}" \ --zone="${ZONE}" \ --query-path="${QUERY_PATH}" \ --format='value(value)') 2>/dev/null echo -n '.' set -e done echo "Operating System adaptation report:" jq . <<< "${REPORT}" gcloud compute scp --recurse "${INSTANCE}:${OUTPUT_DIR}" "$(pwd)" echo "Output file: $(pwd)/v2v/output.log, Report file: $(pwd)/v2v/report.json" echo "Deleting ${INSTANCE}..." gcloud compute instances delete "${INSTANCE}" --zone="${ZONE}" --quiet if jq --exit-status '.status != "SUCCESS"' <<< "${REPORT}" >/dev/null; then echo "Operating System adaptation failed" exit 1 fi # Creates image echo "Operating System adaptation successful, creating image..." IMAGE="image-${UNIQUE_ID}" gcloud compute images create "${IMAGE}" \ --source-disk-zone="${ZONE}" \ --guest-os-features="$(jq --raw-output '.guest_os_features | join(",")' <<< "${REPORT}")" \ --source-disk="${DISK_ID}" if [[ -z "${INPUT_DISK}" ]]; then gcloud compute disks delete "${DISK_ID}" --zone="${ZONE}" --quiet fi echo "Adapted image: ${IMAGE}"Exécuter le script d'adaptation de l'OS
Pour adapter votre image d'OS à Trusted Cloud by S3NS, procédez comme suit :
- Créez un script shell.
- Copiez le script d'adaptation de l'OS et collez-le dans votre fichier de script shell.
Exécutez votre script shell avec les indicateurs suivants :
SCRIPT_NAME \ -g 'INPUT_GCS_OBJECT' \ -o 'IMAGE_NAME' \ -z 'ZONE' \ -p 'PROJECT' \ -t 'TPC_PREFIX'
Remplacez les éléments suivants :
SCRIPT_NAME
: nom du fichier de script d'adaptation de l'OSINPUT_GCS_OBJECT
: chemin d'accès au disque dans votre bucket Cloud StorageIMAGE_NAME
: nom de l'image adaptée.ZONE
: zone de l'image adaptéePROJECT
: ID de votre projet Trusted Cloud by S3NSTPC_PREFIX
: préfixe utilisé pour les noms de vos ressources
Une fois le script exécuté correctement, le message suivant s'affiche :
Adapted image: IMAGE_NAME
Étapes suivantes
Créez une instance à partir de votre image.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/08/19 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/08/19 (UTC)."],[],[]] -