Windows VM에서 시작 스크립트 사용

시작 스크립트는 가상 머신(VM)의 시작 프로세스 중에 작업을 수행합니다. 이 페이지에서는 VM 인스턴스에서 시작 스크립트를 사용하는 데 필요한 단계를 제공합니다.

시작하기 전에

gdcloud 명령줄 인터페이스 (CLI) 명령어를 사용하려면 다운로드, 설치, 및 gdcloud CLI를 구성해야 합니다. GDC 에어 갭 어플라이언스의 모든 명령어는 gdcloud 또는 kubectl CLI를 사용하며 운영체제 (OS) 환경이 필요합니다.

kubeconfig 파일 경로 가져오기

Management API 서버에 대해 명령어를 실행하려면 다음 리소스가 있어야 합니다.

  1. Management API 서버 이름을 찾거나 플랫폼 관리자 (PA)에게 서버 이름을 문의합니다.

  2. 로그인하고 생성합니다. Management API 서버의 kubeconfig 파일이 없는 경우

  3. 경로를 사용하여 이 안내의 MANAGEMENT_API_SERVER{"</var>"}}를 바꿉니다.

IAM 역할 요청

VM에 시작 스크립트를 사용하려면 프로젝트 IAM 관리자에게 문의하여 프로젝트에 다음 역할을 요청하세요.

  • 프로젝트 VirtualMachine 관리자 (project-vm-admin): 프로젝트 네임스페이스에서 VM을 만들고, 수정하고, 나열하고, 삭제합니다.

  • 보안 비밀 관리자 (secret-admin): 프로젝트 네임스페이스에서 Kubernetes 보안 비밀을 가져오고, 나열하고, 만들고, 업데이트하고, 삭제하고, 패치하고, 감시합니다. 이 역할을 사용하여 시작 스크립트 보안 비밀을 지정합니다. 일반 텍스트 시작 스크립트를 지정하는 데 이 역할이 필요하지 않습니다.

모든 VM 역할은 VM이 있는 프로젝트의 네임스페이스에 바인딩되어야 합니다. 액세스 권한을 확인하는 단계를 따르세요.

Windows 시작 스크립트 이름 형식 지정

Windows VM의 시작 스크립트는 스크립트 이름과 파일 확장자가 대시로 구분되어 추가된 특정 이름 지정 형식을 따라야 합니다. 예를 들어, create-directory-ps1은 스크립트 이름이 create-directory이고 ps1 은 파일 확장자입니다. 잘못된 형식에는 대시 대신 마침표를 사용하고 파일 확장자를 생략하는 것이 포함됩니다(예: create-directory.ps1create-directory).

다음은 Windows 시작 스크립트에 사용할 파일 확장자를 보여줍니다.

  • ps1: PowerShell 명령어를 포함합니다.
  • cmd: 명령 프롬프트 인터프리터의 배치 명령어를 포함합니다.
  • bat: 배치 명령어를 포함합니다.

Windows 시작 스크립트를 순서대로 실행

여러 시작 스크립트를 사용할 수 있습니다. 스크립트가 포함된 파일 유형은 각 스크립트의 실행 순서에 영향을 미칩니다. 다음 표에서는 Windows 시작 스크립트의 실행 순서를 보여줍니다.

Windows 스크립트 실행 순서
Powershell 스크립트 모든 부팅에서 첫 번째
배치 스크립트 모든 부팅에서 두 번째
명령어 스크립트 모든 부팅에서 세 번째

두 시작 스크립트의 파일 확장자가 동일한 경우 스크립트는 파일 확장자와 이름을 기준으로 알파벳순으로 실행됩니다. 예를 들어 시작 스크립트 이름이 alpha-script-ps1beta-script-ps1인 경우 alpha-script-ps1beta-script-ps1보다 먼저 실행됩니다.

다음 VM 사양 예시에서는 startupScripts 필드의 Windows 시작 스크립트 순서와 구조를 보여줍니다.

...
  startupScripts:
  - name: create-directory-ps1
    script: |-
      New-Item -ItemType Directory -Path C:\ -Name NewDir
      Get-ChildItem -Path C:\
  - name: hello-world-bat
    script: |-
      ECHO "Hello World!"
  - name: list-directories-cmd
    script: |-
      dir C:\Windows  > files.txt
...

시작 스크립트 전달

GDC 에어 갭 어플라이언스는 각 시작 스크립트의 이름을 기준으로 시작 스크립트를 알파벳순으로 실행합니다.

다음 표에서는 스크립트 크기에 따라 사용할 스크립트 형식을 보여줍니다.

스크립트 크기 스크립트 형식
최대 2048바이트의 스크립트 일반 텍스트
2048바이트보다 큰 스크립트 Kubernetes 보안 비밀

시작 스크립트 정의

시작 스크립트를 사용하려면 VM spec 필드에 startupScripts 필드를 추가해야 합니다. 이 필드 내에서 여러 시작 스크립트를 일반 텍스트 또는 Kubernetes 보안 비밀로 지정할 수 있습니다.

다음 예시에서는 시작 스크립트를 일반 텍스트 및 Kubernetes 보안 비밀로 지정합니다.

apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachine
metadata:
  name: "vm-test"
spec:
  ...
  startupScripts:
  - name: create-directory-ps1
    script: |-
      New-Item -ItemType Directory -Path C:\ -Name NewDir
      Get-ChildItem -Path C:\
  - name: list-directories-cmd
    scriptSecretRef:
      name: list-directories
---

apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: list-directories
data: 
  script:
    ZGlyIEM6XFdpbmRvd3MgID4gZmlsZXMudHh0Cg==

다음 고려사항을 검토하세요.

  • 시작 스크립트는 모든 부팅 에서 실행됩니다.
  • 시작 스크립트에는 기본 루트 권한이 있습니다.
  • Kubernetes 보안 비밀에서 VM specscriptSecretRef 이름은 metadata.name 필드와 일치해야 합니다.
  • Kubernetes 보안 비밀에서 data 필드에 키 script를 추가하여 시작 스크립트 콘텐츠를 지정합니다.

Windows 시작 스크립트로 새 VM 만들기

Windows 시작 스크립트로 VM을 만들려면 시작 스크립트로 새 VM 만들기의 단계를 따르세요.