Este documento descreve como adaptar imagens do sistema operacional (SO) em Cloud de Confiance by S3NS para usar as imagens do SO corporativo que você tem licenças.
OCloud de Confiance by S3NS fornece imagens de SO para Debian, Ubuntu LTS, Rocky Linux e Container-Optimized OS. Se quiser usar alguma dessas imagens fornecidas, crie uma instância e selecione a imagem que você quer usar durante a criação da instância.
Se você tiver uma licença para um SO empresarial que Cloud de Confiance by S3NS não forneça uma imagem de SO, como Windows, Red Hat Enterprise Linux (RHEL) ou SUSE Linux Enterprise Server (SLES), use o script fornecido neste documento para adaptar uma imagem para uso com sua licença. O script instala os drivers necessários para usar sua imagem e criar instâncias no Cloud de Confiance by S3NS.
Antes de começar
- Instale o
processador de linha de comando
jq. - Se ainda não tiver feito isso, faça upload de um disco que contenha a imagem do SO que você quer usar para um bucket do Cloud Storage.
- Confirme se você tem as permissões necessárias para criar imagens personalizadas.
-
Configure a autenticação, caso ainda não tenha feito isso.
Com isso, você confirma sua identidade para acesso a serviços e APIs do Cloud de Confiance by S3NS . Para executar
códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine selecionando uma das seguintes opções:
Selecione a guia para como planeja usar as amostras nesta página:
gcloud
-
Instale a CLI do Google Cloud e faça login na gcloud CLI com sua identidade federada. Depois de fazer login, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud init
-
- Defina uma região e uma zona padrão.
REST
Para usar as amostras da API REST desta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
Instale a CLI do Google Cloud e faça login na gcloud CLI com sua identidade federada.
Saiba mais em Autenticar para usar REST na documentação de autenticação do Cloud de Confiance .
Sistemas operacionais compatíveis
O processo de script de adaptação do SO, que usa a ferramenta v2v-tpc, é apenas para
adaptar os seguintes sistemas operacionais de BYOL (Bring Your Own License):
- Windows Server 2016, 2019, 2022, 2025
- Red Hat Enterprise Linux (RHEL) 8.x, 9.x, 10.x
- SUSE Linux Enterprise Server (SLES) 12.x, 15.x
Para executar outros sistemas operacionais, como AlmaLinux ou Fedora Cloud, use uma das imagens de SO disponíveis publicamente.
Script de adaptação do SO
Para ajudar você a adaptar imagens para Cloud de Confiance by S3NS, Cloud de Confiance by S3NS fornece um script que conclui as seguintes etapas:
- Cria uma instância com o disco do Cloud Storage e executa a ferramenta de adaptação do SO no disco da instância. Esse processo instala os drivers necessários para que a imagem do SO funcione no Cloud de Confiance by S3NS.
- Extrai o relatório de adaptação do SO e copia os arquivos de saída para sua máquina local. Esse relatório fornece informações sobre os resultados do processo de adaptação, além de detalhes sobre o SO detectado. Se o script não for executado com êxito, o relatório vai fornecer erros, avisos e itens de ação para corrigir problemas de adaptação.
- Cria uma imagem do disco da instância. Em seguida, use essa imagem para criar instâncias no Cloud de Confiance by S3NS.
- Exclui a instância e o disco criados durante esse processo. Esta etapa limpa os recursos desnecessários do projeto.
O script a seguir adapta imagens para uso no Cloud de Confiance by S3NS:
Script completo de adaptação do SO
#!/usr/bin/env bash # Sets variables set -e set -x set -o pipefail UNIQUE_ID='' 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 " -iOR -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}" ;; 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 "${PROJECT}" ]]; then echo "Project must be specified" usage exit 1 fi # Creates disk OS_ADAPTATION_IMAGE="projects/s3ns-system: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/s3ns-system:${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}"
Executar o script de adaptação do SO
Para adaptar a imagem do SO para o Cloud de Confiance by S3NS, faça o seguinte:
- Crie um script de shell.
- Copie o script de adaptação do SO e cole no arquivo de script do shell.
Execute o script de shell com as seguintes flags:
SCRIPT_NAME \ -g 'INPUT_GCS_OBJECT' \ -o 'IMAGE_NAME' \ -z 'ZONE' \ -p 'PROJECT'
Substitua:
SCRIPT_NAME: o nome do arquivo de script de adaptação do SOINPUT_GCS_OBJECT: o caminho para o disco no bucket do Cloud StorageIMAGE_NAME: o nome da imagem adaptadaZONE: a zona da imagem adaptadaPROJECT: o ID do projeto do Cloud de Confiance by S3NS
Depois que o script for executado com sucesso, ele vai imprimir a seguinte mensagem:
Adapted image: IMAGE_NAME