이 문서에서는 라이선스가 있는 엔터프라이즈 OS 이미지를 사용하도록Trusted Cloud by S3NS 의 운영체제(OS) 이미지를 조정하는 방법을 설명합니다.
Trusted Cloud by S3NS 는 Debian, Ubuntu LTS, Rocky Linux, Container-Optimized OS용 OS 이미지를 제공합니다. 제공된 이미지 중 하나를 사용하려면 인스턴스 만들기로 이동하여 인스턴스 생성 중에 사용할 이미지를 선택합니다.
Windows, Red Hat Enterprise Linux(RHEL), SUSE Linux Enterprise Server(SLES)와 같이 Trusted Cloud by S3NS 에서 OS 이미지를 제공하지 않는 엔터프라이즈 OS 라이선스가 있는 경우 이 문서에 제공된 스크립트를 사용하여 라이선스와 함께 사용할 이미지를 조정합니다. 이 스크립트는 이미지를 사용하여 Trusted Cloud by S3NS에서 인스턴스를 만드는 데 필요한 드라이버를 설치합니다.
시작하기 전에
jq
명령줄 프로세서를 설치합니다.- 아직 업로드하지 않았다면 사용할 OS 이미지가 포함된 디스크를 Cloud Storage 버킷에 업로드합니다.
- 커스텀 이미지를 만드는 데 필요한 권한이 있는지 확인합니다.
-
아직 인증을 설정하지 않았다면 설정합니다.
인증은 Trusted Cloud by S3NS 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다.
로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음 옵션 중 하나를 선택하여 Compute Engine에 인증하면 됩니다.
Select the tab for how you plan to use the samples on this page:
gcloud
-
After installing the Google Cloud CLI, sign in to the gcloud CLI with your federated identity and then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Cloud Storage의 디스크로 인스턴스를 만들고 인스턴스의 디스크에서 OS 조정 도구를 실행합니다. 이 프로세스는 OS 이미지가 Trusted Cloud by S3NS에서 작동하는 데 필요한 드라이버를 설치합니다.
- OS 조정 보고서를 추출하고 출력 파일을 로컬 머신에 복사합니다. 이 보고서에는 감지된 OS에 관한 세부정보와 함께 조정 프로세스의 결과에 관한 정보가 제공됩니다. 스크립트가 실행되지 않으면 보고서에 조정 문제를 해결하기 위한 오류, 경고, 작업 항목이 제공됩니다.
- 인스턴스의 디스크에서 이미지를 만듭니다. 그런 다음 이 이미지를 사용하여 Trusted Cloud by S3NS에서 인스턴스를 만들 수 있습니다.
- 이 과정에서 생성된 인스턴스와 디스크를 삭제합니다. 이 단계에서는 프로젝트에서 불필요한 리소스를 정리합니다.
- 셸 스크립트를 만듭니다.
- OS 조정 스크립트를 복사하여 셸 스크립트 파일에 붙여넣습니다.
다음 플래그를 사용하여 셸 스크립트를 실행합니다.
SCRIPT_NAME \ -g 'INPUT_GCS_OBJECT' \ -o 'IMAGE_NAME' \ -z 'ZONE' \ -p 'PROJECT' \ -t 'TPC_PREFIX'
다음을 바꿉니다.
SCRIPT_NAME
: OS 조정 스크립트 파일의 이름INPUT_GCS_OBJECT
: Cloud Storage 버킷의 디스크 경로IMAGE_NAME
: 조정된 이미지의 이름ZONE
: 조정된 이미지의 영역PROJECT
: Trusted Cloud by S3NS 프로젝트 IDTPC_PREFIX
: 리소스 이름에 사용되는 프리픽스
REST
로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.
After installing the Google Cloud CLI, sign in to the gcloud CLI with your federated identity and then initialize it by running the following command:
gcloud init
자세한 내용은 Trusted Cloud 인증 문서의 REST 사용을 위한 인증을 참조하세요.
OS 조정 스크립트
Trusted Cloud by S3NS에 맞게 이미지를 조정하는 데 도움이 되도록 Trusted Cloud by S3NS 에서는 다음 단계를 완료하는 스크립트를 제공합니다.
다음 스크립트는 Trusted Cloud by S3NS에서 사용할 수 있도록 이미지를 조정합니다.
전체 OS 조정 스크립트
#!/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}"OS 조정 스크립트 실행
Trusted Cloud by S3NS에 맞게 OS 이미지를 조정하려면 다음 단계를 따르세요.
스크립트가 성공적으로 실행되면 다음 메시지가 출력됩니다.
Adapted image: IMAGE_NAME
다음 단계
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2025-07-30(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-30(UTC)"],[],[]] -