9.3. cloud-init를 사용하여 VMDK 이미지에 대한 사용자 생성

VM에 로그인하려면 사용자 계정을 생성해야 합니다. 이를 위해 CLI의 단계를 수행합니다.

참고

GUI 마법사는 cloud-init 를 지원하지 않습니다.

사전 요구 사항

  • govc VMware CLI 도구 클라이언트를 구성하셨습니다.

    • govc VMware CLI 도구 클라이언트를 사용하려면 환경에서 다음 값을 설정해야 합니다.

      GOVC_URL
      GOVC_DATACENTER
      GOVC_FOLDER
      GOVC_DATASTORE
      GOVC_RESOURCE_POOL
      GOVC_NETWORK

절차

  1. .vmdk 이미지를 다운로드한 디렉터리에 액세스합니다.
  2. metadata.yaml 이라는 파일을 생성합니다. 이 파일에 다음 정보를 추가합니다.

    instance-id: cloud-vm
    local-hostname: vmname
  3. userdata.yaml 이라는 파일을 생성합니다. 파일에 다음 정보를 추가합니다.

    #cloud-config
    users
    - name: admin
      sudo: "ALL=(ALL) NOPASSWD:ALL"
      ssh_authorized_keys:
      - ssh-rsa AAA...fhHQ== your.email@example.com
    • ssh_authorized_keys 는 SSH 공개 키입니다. SSH 공개 키는 ~/.ssh/id_rsa.pub 에서 찾을 수 있습니다.
  4. metadata.yamluserdata.yaml 파일을 다음과 같이 base64 로 인코딩된 gzip 으로 압축한 환경으로 내보냅니다. 다음 단계에서 사용됩니다.

    export METADATA=$(gzip -c9 <metadata.yaml | { base64 -w0 2>/dev/null || base64; }) \
    USERDATA=$(gzip -c9 <userdata.yaml | { base64 -w0 2>/dev/null || base64; })
  5. metadata.yamluserdata.yaml 파일을 사용하여 vSphere에서 이미지를 시작합니다.

    1. .vmdk 이미지를 vSphere로 가져옵니다.

      $ govc import.vmdk ./composer-api.vmdk foldername
    2. VSphere에 전원을 끄지 않고 VM을 생성합니다.

      govc vm.create \
      -net.adapter=vmxnet3 \
      -m=4096 -c=2 -g=rhel8_64Guest \
      -firmware=bios -disk=”foldername/composer-api.vmdk” \
      -disk.controller=ide -on=false \
       vmname
    3. VM을 변경하여 ExtraConfig 변수인 cloud-init 구성을 추가합니다.

      govc vm.change -vm vmname \
      -e guestinfo.metadata="${METADATA}" \
      -e guestinfo.metadata.encoding="gzip+base64" \
      -e guestinfo.userdata="${USERDATA}" \
      -e guestinfo.userdata.encoding="gzip+base64"
    4. VM의 전원을 켭니다.

      govc vm.power -on vmname
    5. VM IP 주소를 검색합니다.

      HOST=$(govc vm.ip vmname)
    6. cloud-init 파일 구성에 지정된 user-data를 사용하여 VM에 SSH를 사용하여 로그인합니다.

      $ ssh admin@HOST