사용하기 전에

Q. Packer는 무엇인가요?

  • PackerHashicorp사에서 제공하는 도구입니다. 이를 이용하여 사용자는 멀티 클라우드 플랫폼에서 머신 이미지(서버 이미지) 생성을 자동화할 수 있습니다.
  • 네이버 클라우드 플랫폼에서도 사용자가 Packer를 이용하여 내 서버 이미지 생성을 자동화할 수 있도록 Packer plugin Builder for 네이버 클라우드 플랫폼를 제공합니다.

Q. Packer를 사용하면 어떤 이점이 있나요?

  • 애플리케이션 배포, 버그 패치 등의 작업 이후 기존에는 수작업으로 서버 이미지를 생성하였다면, 이제는 Packer를 사용해서 쉽게 서버 이미지를 생성할 수 있습니다. 사용자는 다음과 같이 하나의 명령을 사용하여 자신의 서버 이미지를 생성할 수 있습니다.

    packer build template.json
    

Packer Plugin Builder for 네이버 클라우드 플랫폼 소개

Packer는 플러그인 형태로 Custom builder를 개발하여 사용할 수 있도록 지원하고 있습니다. 이에 네이버 클라우드 플랫폼에서도 사용할 수 있는 Packer Builder를 개발했습니다. 이제 네이버 클라우드 플랫폼 사용자도 Packer를 사용하여 네이버 클라우드 플랫폼에서 사용자 이미지를 손쉽게 만들 수 있습니다.

Packer를 사용하기 위해서는 packer 명령의 인자로 전달할 json 파일이 필요합니다. 다음은 네이버 클라우드 플랫폼에서 사용할 json 파일의 예입니다.

{
  "variables": {
    "ncloud_access_key": "FRxhOQRNjKVMqIz0sRLY",
    "ncloud_secret_key": "xd6kTO5iNcLookBx0D8TDKmpLj8ikxqEhc06MQD2"
  },
  "builders": [
    {
      "type": "ncloud",
      "access_key": "{{user `ncloud_access_key`}}",
      "secret_key": "{{user `ncloud_secret_key`}}",

      "server_image_product_code": "SPSW0LINUX000046",
      "server_product_code": "SPSVRSSD00000002",
      "server_image_name": "packertest",
      "server_image_description": "server image description",
      "region": "Korea"
    }
  ]
}

각 항목의 설명은 다음과 같습니다.

  • type(required): "ncloud"
  • ncloud_access_key(required): 사용자의 Access Key. 네이버 클라우드 플랫폼 계정 관리 > 인증키 관리 페이지에서 인증키 생성 및 조회 가능
  • ncloud_secret_key (required): 사용자 인증키와 대응하는 Secret Key. 네이버 클라우드 플랫폼 계정 관리 > 인증키 관리 페이지에서 인증키 생성 및 조회 가능
  • server_image_product_code: 생성할 이미지 상품 코드(명시하지 않을 경우 member_server_image_no 값이 필요)
  • server_product_code(required): 생성할 상품(스펙) 코드
  • member_server_image_no: 기존 생성한 사용자 이미지 코드. 기존 생성한 사용자의 이미지가 있을 경우, 이를 사용하여 이미지를 생성할 수 있음(명시하지 않을 경우 server_image_product_code 값이 필요).
  • server_image_name(optional): 생성할 이미지 이름
  • server_image_description(optional): 생성할 이미지 설명
  • block_storage_size(optional): 블록 스토리지를 추가할 경우 10(GB)~2000(GB)까지 10(GB) 단위로 추가 가능 .
  • access_control_group_configuration_no: Windows 서버 생성 시 winrm 접속 허용을 위해 설정 필요. 접근 소스("0.0.0.0/0"), 허용 포트(5985)가 명시된 ACG를 미리 만들어 두어야 함.
  • user_data(optional): 인스턴스 생성 시 수행할 init 스크립트
    • Linux 환경에서는 Python, Perl, Shell 등의 스크립트를 사용할 수 있음. 첫 줄에 #!/usr/bin/env python, #!/bin/perl, #!/bin/bash 등과 같은 형태로 실행하고자 하는 스크립트 경로를 지정.
    • Windows 환경에서는 Visual Basic 스크립트만 사용할 수 있음.
    • 스크립트의 내용은 영문으로만 작성해야 함.
  • region(optional): 이미지를 생성할 region 이름(기본값: Korea)
    • 입력 가능한 값: Korea/US-West/HongKong/Singapore/Japan/Germany

Windows 이미지 생성 요구 사항

Windows 서버 생성 시 Provision을 하기 위해서는 Packer 설정 파일에 아래 내용이 필요합니다.

  "builders": [
    {
      "type": "ncloud",
      "access_key": "{{user `ncloud_access_key`}}",
      "secret_key": "{{user `ncloud_secret_key`}}",

      "server_image_product_code": "SPSW0WINNTEN0016",
      "server_product_code": "SPSVRSSD00000002",
      "server_image_name": "packertest",
      "server_image_description": "server description",
      "user_data": "CreateObject(\"WScript.Shell\").run(\"cmd.exe /c powershell Set-ExecutionPolicy RemoteSigned & winrm quickconfig -q & sc config WinRM start= auto & winrm set winrm/config/service/auth @{Basic=\"\"true\"\"} & winrm set winrm/config/service @{AllowUnencrypted=\"\"true\"\"} & winrm get winrm/config/service\")",
      "region": "Korea",
      "communicator": "winrm",
      "winrm_username": "Administrator",
      "access_control_group_configuration_no" : 4964
    }
  ],
  "provisioners": [
    {
      "type": "powershell",
      "inline": [
        "$Env:SystemRoot\\System32\\Sysprep\\Sysprep.exe /oobe /generalize /shutdown /quiet \"/unattend:C:\\Program Files (x86)\\NBP\\nserver64.xml\" "
      ]
    }
  ]

주의 사항

  • 공인 IP 주소는 서버 인스턴스가 생성된 수 이상 생성할 수 없습니다. 그러므로 Packer 실행 전 기생성된 공인 IP 주소 수가 서버 인스턴스(서버 이미지 생성에 사용될 서버 인스턴스 포함) 개수보다 많지 않도록 해야 합니다.
  • Packer 프로세스 강제 종료 또는 Packer가 실행 중인 Terminal(Command) 창 종료 등의 경우 더 이상 Packer 프로세스가 진행되지 않아 리소스 정리가 안 되는 상황이 발생할 수 있으므로, 이런 경우가 발생하면 packer 실행 시 발생한 리소스를 사용자가 수동으로 정리해야 합니다.

Downloads

Packer Plugin Builder for 네이버 클라우드 플랫폼은 Packer에 내장되어 배포되고 있습니다. Packer 실행 파일은 Packer 다운로드 사이트에서 다운로드할 수 있습니다.

""에 대한 건이 검색되었습니다.

    ""에 대한 검색 결과가 없습니다.

    처리중...