CLI 및 API를 사용하여 VPC 자원 작성

VPC를 작성하는 것 이외에 인스턴스, 서브넷 및 블록 스토리지 볼륨과 같은 VPC 자원을 작성할 수도 있습니다.

IBM Cloud 콘솔을 사용하여 VPC 리소스를 만드는 방법에 대한 자세한 내용은 IBM Cloud 콘솔을 사용하여 VPC 리소스 만들기 을 참조하세요.

VPC 리소스를 작성하기 위해 CLI 사용

IBM Cloud® CLI를 사용하여 IBM Cloud® Virtual Private Cloud 를 생성하고 구성할 수 있습니다.

Virtual Private Cloud(VPC) 및 여기에 연결되는 기타 리소스를 작성하고 구성하려면 다음 절의 단계를 다음 순서에 따라 수행하십시오.

  1. VPC 및 서브넷을 작성하여 네트워크를 정의하십시오.
  2. 서브넷의 모든 리소스가 공용 인터넷과 통신하도록 허용하려면 퍼블릭 게이트웨이를 연결하십시오.
  3. 가상 서버 인스턴스를 작성하십시오. 기본적으로 인스턴스에는 부팅 볼륨이 연결되어 있습니다. 대부분의 가상 서버 인스턴스의 경우 기본 부트 볼륨 크기는 100GB입니다. z/OS 가상 서버 인스턴스의 기본 부트 볼륨 크기는 250GB입니다.
  4. 스토리지를 추가하려는 경우 블록 스토리지 볼륨을 작성하여 인스턴스에 연결하십시오.
  5. 인스턴스에 허용될 인바운드 및 아웃바운드 트래픽을 정의하려면 해당 인스턴스의 보안 그룹을 구성하십시오.
  6. 인터넷에서 인스턴스에 연결할 수 있도록 하려면 유동 IP 주소를 예약하고 연관시키십시오.

시작하기 전에

CLI 환경을 설정했는지 확인하십시오.

IBM Cloud에 로그인

ibmcloud login --sso -a cloud.ibm.com

이 명령은 URL을 리턴하고 비밀번호를 입력하라는 프롬프트를 표시합니다. 브라우저의 해당 URL로 이동하여 로그인하십시오. 성공하면 일회성 비밀번호를 얻게 됩니다. 이 비밀번호를 복사하여 메시지에 응답으로 붙여넣습니다. 인증 단계가 끝나면 계정을 선택하라는 메시지가 표시됩니다. 여러 사용자에 대한 액세스 권한이 있는 경우 로그인할 사용자를 선택하십시오.

지역을 선택하라는 메시지가 표시되면 us-south를 선택하십시오.

나머지 프롬프트에 응답하여 로그인을 완료하십시오.

VPC 작성

다음 명령을 사용하여 _my-vpc_로 이름 지정된 VPC를 작성하십시오.

ibmcloud is vpc-create my-vpc

반환된 출력 결과에서 ID를 변수에 저장해 두면 나중에 사용할 수 있습니다. 예를 들어:

vpc="0738-59de4046-3434-4d87-bb29-0c99c428c96e"

이전 예제에서는 클래식 액세스 권한이 있는 VPC를 작성하지 않습니다. VPC에 클래식 리소스에 대한 액세스 권한이 필요한 경우 클래식 인프라에 대한 액세스 권한 설정 을 참조하십시오. VPC는 생성하는 동안에만 클래식 액세스 모드로 설정할 수 있습니다. 또한 언제든지 계정에는 하나의 클래식 액세스 VPC만 있을 수 있습니다.

개인용 카탈로그 작성

이 단계는 선택사항입니다. 개인용 카탈로그의 이미지를 공유하려면 먼저 개인용 카탈로그를 작성해야 합니다. 다른 계정에 속하는 카탈로그 이미지를 선택하는 경우 검토할 추가 고려사항 및 제한사항이 있습니다. 사설 카탈로그에서 교차 계정 이미지 참조 사용 을 참조하십시오. 개인용 카탈로그를 작성하려면 CLI를 사용하여 카탈로그에 소프트웨어 온보딩 튜토리얼을 참조하십시오.

서브넷 작성

서브넷을 작성하기 전에 서브넷을 작성할 구역 및 주소 접두부를 선택하십시오. VPC의 각 구역에 대한 주소 접두부를 나열하려면 다음 명령을 실행합니다.

ibmcloud is vpc-address-prefixes $vpc

이제 us-south-3 구역의 기본 주소 접두부를 선택해야 합니다. 명령 출력에서 주소 접두부의 CIDR 블록을 기록하십시오. 서브넷을 작성할 때는 선택한 구역의 주소 접두부 중 하나에 해당하는 IP 범위를 지정해야 합니다.

서브넷을 작성한 후에는 크기를 조정할 수 없습니다.

ibmcloud is subnet-create my-subnet $vpc us-south-3 --ipv4-cidr-block "10.0.1.0/24"

반환된 출력 결과에서 ID를 변수에 저장해 두면 나중에 사용할 수 있습니다. 예를 들어:

subnet="0738-658756a4-1106-4914-969a-3b43b338524a"

서브넷을 처음 생성할 때 그 상태는 ‘ pending ’입니다. 서브넷에서 리소스를 작성하려면 먼저 서브넷이 available상태로 변해야 하며, 여기에는 몇 초가 소요됩니다. 서브넷의 상태를 확인하려면 다음 명령을 실행하십시오.

ibmcloud is subnet $subnet

퍼블릭 게이트웨이 연결

퍼블릭 게이트웨이를 서브넷에 연결하여 모든 연결된 리소스가 공용 인터넷과 통신할 수 있도록 하십시오.

퍼블릭 게이트웨이를 작성하려면 다음 명령을 실행하십시오.

ibmcloud is public-gateway-create my-gateway $vpc us-south-3

반환된 출력 결과에서 ID를 변수에 저장해 두면 나중에 사용할 수 있습니다. 예를 들어:

gateway="0738-446c0c63-f0b1-4043-b30d-644f55fde391"

퍼블릭 게이트웨이를 서브넷에 연결하려면 다음 명령을 실행하십시오.

ibmcloud is subnet-update $subnet --pgw $gateway

VPC에서는 구역당 하나의 퍼블릭 게이트웨이만 허용되지만, 해당 퍼블릭 게이트웨이를 구역의 여러 서브넷에 연결할 수 있습니다. 구역의 퍼블릭 게이트웨이를 찾으려면 ibmcloud is public-gateways 명령을 실행하여 특정 VPC 및 구역 값을 찾으십시오.

SSH 키 추가

공개 SSH 키를 사용자의 IBM Cloud 계정에 추가하십시오. 이 키는 인스턴스를 생성할 때 지정하며, 나중에 인스턴스에 로그인할 때 필요합니다. 하나의 키를 사용하여 여러 인스턴스를 프로비저닝할 수 있습니다.

IBM Cloud 계정에서 사용 가능한 키를 보려면 다음 명령을 실행하십시오.

ibmcloud is keys

키를 추가하려면 다음 명령을 실행하십시오. SSH 키 파일의 경로를 해당 경로로 대체하십시오. RSA SSH키의 경우 id_rsa.pub 파일에 대한 경로를 사용할 수 있습니다. Ed25519 SSH키의 경우, id_ed25519.pub 파일에 대한 경로를 사용할 수 있습니다.

ibmcloud is key-create my-key @$HOME/.ssh/id_rsa.pub

반환된 출력 결과에서 ID를 변수에 저장해 두면 나중에 사용할 수 있습니다. 예를 들어:

key="0738-859b4e97-7540-4337-9c64-384792b85653"

인스턴스의 프로파일 선택

사용 가능한 인스턴스 프로파일을 모두 나열하려면 다음 명령을 실행하십시오.

ibmcloud is instance-profiles

변수로 사용하려는 프로파일을 저장하십시오. 이는 나중에 인스턴스를 프로비저닝하는 데 사용됩니다.

인스턴스를 만들려는 영역에서 사용하려는 프로필을 사용할 수 있는지 확인합니다.

다음 이유 중 하나로 인해 일부 프로필을 사용하지 못할 수 있습니다:

  • 가상 서버의 네트워크 인터페이스 수가 프로필 제한을 초과합니다. 네트워크 인터페이스를 제거하여 더 많은 프로필에서 선택할 수 있습니다. 자세한 내용은 ‘가상 서버 크기 조정’을 참조하십시오.
  • 선택한 이미지에 프로필과 호환되지 않는 허용된 사용 표현식이 포함되어 있습니다. 이러한 경우 원하는 프로필과 호환되는 허용된 사용 표현식이 있는 이미지를 선택합니다. 자세한 내용은 사용자 지정 이미지에 허용된 사용 표현식 추가하기를 참조하세요.

인스턴스의 이미지 선택

재고 이미지, 계정의 사용자 정의 이미지 또는 개인용 카탈로그의 계정과 공유된 이미지를 사용하여 인스턴스를 작성할 수 있습니다. 사용하려는 이미지에 따라 다음 명령 중 하나를 실행하십시오.

  • 인스턴스의 계정에서 재고 이미지 또는 사용자 정의 이미지를 선택하십시오.

    1. 사용 가능한 모든 이미지를 나열하려면 ibmcloud is images 명령을 실행하십시오. 목록이 너무 긴 경우에는 다음 예제에서와 같이 필터링하는 것을 고려하십시오.

      $ ibmcloud is images | grep -i "debian.*available.*amd64.*public"
      r006-17cc6c08-f628-46f4-8bf4-a8edab749722   ibm-debian-10-13-minimal-amd64-4                    available    amd64   debian-10-amd64                      10.x Buster/Stable - Minimal Install                     1               public       provider     none           Default          -
      r006-b721bf3b-393b-4386-a618-d1ea8c004e1c   ibm-debian-11-7-minimal-amd64-2                     available    amd64   debian-11-amd64                      11.x Bullseye/Stable - Minimal Install                   1               public       provider     none           Default          -
      r006-e66ebfcd-4aac-44e2-b504-1f6f4c003518   ibm-debian-12-0-minimal-amd64-1                     available    amd64   debian-12-amd64                      12.x Bookworm/Stable - Minimal Install                   1               public       provider     none           Default          -
      

      더 이상 사용되지 않는 이미지에는 최신 지원이 포함되어 있지 않습니다.

    2. ibm-debian-12-0-minimal-amd64-1 와 같은 이미지를 선택하고 나중에 인스턴스를 프로비저닝하는 데 사용할 변수로 이미지 ID를 저장하십시오.

      image=$(ibmcloud is images | grep -i "ibm-debian-12-0-minimal-amd64-1" | cut -d" " -f1)
      
  • 인스턴스의 개인용 카탈로그에서 공유되는 이미지를 선택하십시오.

    다른 계정에 속하는 카탈로그 이미지를 선택하는 경우 검토할 추가 고려사항 및 제한사항이 있습니다. CLI의 사설 카탈로그에서 교차 계정 이미지 참조 사용 을 참조하십시오.

    • 사용 가능한 모든 개인용 카탈로그 이미지 오퍼링을 나열하려면 다음 명령을 실행하십시오.

      ibmcloud is catalog-image-offerings
      

      이 명령은 각 이미지 오퍼링의 ID및 이미지가 있는 개인용 카탈로그의 ID를 리턴합니다. offering_idcatalog_id 를 나중에 인스턴스를 프로비저닝하는 데 사용되는 변수에 저장하십시오.

      offering_id=6bf79f7b-de48-4ce8-8cae-866b376f2889
      catalog_id=71306253-8444-4cae-a45d-64d35e5393ec
      
    • 오퍼링의 offering_crn 및 오퍼링의 각 버전에 대한 offering_version_crn 를 가져오려면 다음 명령을 실행하십시오.

      ibmcloud is catalog-image-offering $catalog_id $offering_id
      

      인스턴스를 프로비저닝할 때 offering_crn 값을 사용하여 카탈로그 제품 오퍼링의 최신 버전에 있는 개인용 카탈로그 관리 이미지에서 인스턴스를 프로비저닝하거나 offering_version_crn 값을 사용하여 카탈로그 제품 오퍼링의 특정 버전에서 인스턴스를 프로비저닝할 수 있습니다.

      offering_crnoffering_version_crn 를 나중에 인스턴스를 프로비저닝하는 데 사용되는 변수에 저장하십시오.

      offering_crn="crn:v1:bluemix:public:globalcatalog-collection:global:a/a1234567:offering:136559f6-4588-4af2-8585-f3c625eee09d"
      offering_version_crn="crn:v1:bluemix:public:globalcatalog-collection:global:a/a1234567:version:136559f6-4588-4af2-8585-f3c625eee09d/8ae92879-e253-4a7c-b09f-8d30af12e518"
      

인스턴스 작성

새로 생성된 서브넷에 인스턴스를 생성합니다. 인스턴스가 프로비저닝된 후 로그인할 수 있도록 공개 SSH 키를 전달하십시오.

사용하려는 이미지를 기반으로 다음 CLI 명령 중 하나를 실행하십시오.

  • 인스턴스의 계정에서 재고 이미지 또는 사용자 정의 이미지를 사용하여 인스턴스를 작성하십시오.

    ibmcloud is instance-create my-instance $vpc us-south-3 bx2-2x8 $subnet --image-id $image --keys $key
    
  • 최신 이미지 버전에서 개인용 카탈로그 관리 이미지를 사용하여 인스턴스를 작성하십시오.

    ibmcloud is instance-create my-instance $vpc us-south-3 bx2-2x8 $subnet --catalog-offering $offering_crn --keys $key
    
  • 특정 버전의 이미지에서 개인용 카탈로그 관리 이미지를 사용하여 인스턴스를 작성하십시오.

    ibmcloud is instance-create my-instance $vpc us-south-3 bx2-2x8 $subnet --catalog-offering-version $offering_version_crn --keys $key
    

인스턴스가 작성된 후 새 인스턴스에 대해 작성된 네트워크 인터페이스에 대한 정보는 리턴되지 않습니다.

반환된 출력 결과에서 인스턴스의 ID를 변수에 저장해 두면 나중에 사용할 수 있습니다. 예를 들어:

instance="0738-21179496-964e-4c00-8210-cf23d75750b3"

인스턴스를 처음 생성할 때 인스턴스의 상태는 ‘ pending ’입니다. 진행하려면 먼저 인스턴스가 running 상태로 변해야 하며, 여기에는 몇 분이 소요됩니다. 인스턴스의 상태를 확인하려면 다음 명령을 실행하십시오.

ibmcloud is instance $instance

반환된 출력에서 VNI(가상 네트워크 인터페이스)의 ID를 변수에 저장하여 나중에 사용할 수 있도록 합니다:

vni="0717-0b45c763-fada-4d44-8f46-e71154ec11e0"

Block Storage 데이터 볼륨 생성

블록 스토리지 볼륨을 작성하여 추가 스토리지가 필요할 때 가상 서버 인스턴스에 연결할 수 있습니다. 블록 스토리지 볼륨을 작성할 때 컴퓨팅 워크로드 성능을 최적화하기 위해 프로파일을 선택합니다. 선택한 볼륨 프로파일을 기반으로 하는 볼륨 용량 및 IOPS 범위에 대한 자세한 정보는 프로파일 을 참조하십시오.

볼륨 프로파일의 목록을 보려면 다음을 실행하십시오.

ibmcloud is volume-profiles

이 명령을 실행하여 블록 스토리지 데이터 볼륨을 작성하십시오. 볼륨의 이름, 볼륨 프로파일 및 볼륨을 작성 중인 구역을 지정하십시오. 블록 스토리지 데이터 볼륨을 인스턴스에 연결하려면 인스턴스와 블록 스토리지 데이터 볼륨이 동일한 구역에 작성되어야 합니다.

ibmcloud is volume-create my-volume custom us-south-3 --iops 1000 --capacity 500

반환된 출력 결과에서 볼륨의 ID를 변수에 저장하여 나중에 사용할 수 있도록 하세요:

vol=0738-933c8781-f7f5-4a8f-8a2d-3bfc711788ee

이 볼륨은 처음 생성될 때 상태가 ‘ pending ’입니다. 진행하려면 먼저 볼륨이 available 상태로 변환되어야 하며, 여기에는 몇 초가 걸립니다.

볼륨의 상태를 확인하려면 다음 명령을 실행하십시오.

ibmcloud is volume $vol

Block Storage 데이터 볼륨을 인스턴스에 연결하기

앞서 생성한 변수를 사용하여 볼륨을 가상 서버 인스턴스에 연결하려면 다음 명령을 실행하십시오:

ibmcloud is instance-volume-attachment-add my-volume-attachment $instance $vol --auto-delete true

기본 보안 그룹에 규칙 추가하기

보안 그룹을 구성하여 인스턴스에 허용되는 인바운드 및 아웃바운드 트래픽을 정의할 수 있습니다. 예를 들어 SSH 트래픽을 허용하기 위한 규칙을 추가할 수 있습니다.

VPC의 보안 그룹을 찾으십시오.

ibmcloud is vpc-sg $vpc

반환된 출력 결과에서 ID를 변수에 저장하여 나중에 사용할 수 있도록 하세요:

sg=0738-2d364f0a-a870-42c3-a554-000000981149

이제 SSH 트래픽을 허용하는 규칙을 작성하십시오.

ibmcloud is sg-rulec $sg inbound tcp --port-min=22 --port-max=22

선택적으로 ping 트래픽을 허용하기 위한 규칙을 추가할 수 있습니다:

ibmcloud is sg-rulec $sg inbound icmp --icmp-type 8 --icmp-code 0

Windows 이미지의 경우 인스턴스와 연관된 보안 그룹에서 인바운드 및 아웃바운드 원격 데스크탑 프로토콜 트래픽(TCP 포트 3389)을 허용하는지 확인하십시오.

인스턴스에 플로팅 IP 주소 생성하기

인터넷에서 인스턴스에 접근할 수 있게 하려면 유동 IP 주소를 작성하십시오.

ibmcloud is floating-ip-reserve my-fip --vni $vni

예를 들어, 다음과 같습니다.

ibmcloud is floating-ip-reserve my-fip --vni $vni
Creating floating IP my-fip under account rnos's Account as user bob@ibm.com...

ID               r006-a398f234-7785-4e28-8861-02a96c928fa3
Address          52.118.151.163
Name             my-fip
CRN              crn:v1:bluemix:public:is:us-south-1:a/b21af5a9874242b7851e780943d795a9::floating-ip:r006-a398f234-7785-4e28-8861-02a96c928fa3
Status           pending
Zone             us-south-1
Created          2026-03-04T10:48:37+05:30
Target           ID                                          Target type                 Name
                 0717-0b45c763-fada-4d44-8f46-e71154ec11e0   virtual_network_interface   alto-uncrushed-disliking-dismiss

Resource group   Default

반환된 출력 결과에서 Address 을 변수에 저장하여 나중에 사용할 수 있도록 하세요:

address=52.118.151.163

인스턴스에 로그인하기

예를 들면, Linux에서 다음 양식의 명령을 사용할 수 있습니다.

ssh -i $HOME/.ssh/id_rsa root@$address

Fedora Core OS에서는 사용자 로그인 'root'가 기본적으로 사용 안함으로 설정되어 있습니다. 사용자 로그인 'core'를 사용하여 Fedora Core OS 인스턴스에 로그인할 수 있습니다.

연결을 계속할지에 대한 프롬프트가 표시되면 yes를 입력하십시오.

인스턴스에 대한 SSH 액세스는 보안 그룹에 의해 차단될 수 있습니다. 인스턴스 보안 그룹이 SSH 액세스를 허용하는지 확인하십시오.

Windows 이미지에 연결하려면 해당 복호화된 비밀번호를 사용하여 로그인하십시오. 지시사항은 Windows 인스턴스에 연결을 참조하십시오.

인스턴스 구성

IBM Cloud 콘솔에서 시간 경과에 따른 인스턴스의 CPU, 볼륨, 메모리 및 네트워크 사용량을 모니터할 수 있습니다. 모니터링 데이터는 IBM Cloud Monitoring에 저장되므로 계정에서 모니터링 서비스 인스턴스에 대한 인증을 받아야 합니다. 자세한 정보는 모니터링 시작하기를 참조하십시오.

IBM Cloud Hyper Protect Virtual Servers IBM Cloud® Virtual Private Cloud 인스턴스의 경우, VPC 인스턴스의 경우 보안 실행 이미지를 사용하여 생성되고 보안 실행 인스턴스의 메모리에 액세스할 수 없으므로 메모리 메트릭을 수집할 수 없습니다. Hyper Protect Virtual Servers

VPN 게이트웨이 작성

다른 사설 네트워크에 VPC를 안전하게 연결하려는 경우 서브넷에 VPN 게이트웨이를 작성하십시오.

VPN 게이트웨이를 작성하려면 다음 명령을 실행하십시오.

ibmcloud is vpn-gateway-create my-vpn-gateway $subnet

반환된 출력 결과에서 VPN 게이트웨이의 ID를 변수에 저장하여 나중에 사용할 수 있도록 하세요. 예를 들어:

vpn_gateway="0757-7e91085b-dc11-4707-aa4d-66e735e9a2bc"

VPN 게이트웨이를 처음 생성할 때 그 상태는 ‘ pending ’입니다. 진행하려면 먼저 VPN 게이트웨이가 available 상태로 변환되어야 하며, 여기에는 몇 분이 소요됩니다. VPN 게이트웨이의 상태를 확인하려면 다음 명령을 실행하십시오.

ibmcloud is vpn-gateway $vpn_gateway

VPN 게이트웨이에서 피어 주소 169.61.161.150 및 사전 공유 키 mykey에 대한 VPN 연결을 작성하려면 다음 명령을 실행하십시오.

ibmcloud is vpn-gateway-connection-create my-vpn-conn $vpn_gateway 169.61.161.150 mykey

이 예에서 169.61.161.150 는 VPC 외부의 네트워크에 대한 VPN 게이트웨이의 IP 주소를 지정하는 피어 게이트웨이 주소입니다. mykey 값은 VPC 외부의 네트워크에 대한 VPN 게이트웨이의 인증 키입니다. 16진수 숫자로 구성된 문자열이거나, 인쇄 가능한 ASCII 문자로 이루어진 암호문구입니다. 대부분의 피어 게이트웨이 유형과 호환 가능하려면 이 문자열이 다음 규칙을 따라야 합니다.

  • 숫자, 소문자 또는 대문자, 또는 다음 특수 문자의 조합일 수 있습니다: - + & ! @ # $ % ^ * ( ) . , :
  • 문자열의 길이는 6~128자여야 합니다.
  • 0x 또는 0s로 시작할 수 없습니다.

VPN 연결 상태는 처음 작성될 때 down이며 연결이 설정된 후에는 up이 됩니다. VPN 게이트웨이에서 VPN 연결의 상태를 확인하려면 다음 명령을 실행하십시오.

ibmcloud is vpn-gateway-connections $vpn_gateway

축하합니다!

IBM Cloud CLI에서 VPC를 작성하고 구성했습니다. 더 많은 CLI 명령을 사용해 보려면 CLI 참조를 살펴보십시오.

REST API를 사용하여 VPC 리소스 작성

REST API를 사용하여 IBM Cloud® Virtual Private Cloud 리소스를 생성하고 구성할 수 있습니다.

Virtual Private Cloud(VPC) 및 여기에 연결되는 기타 리소스를 작성하고 구성하려면 다음 절의 단계를 다음 순서에 따라 수행하십시오.

  1. VPC 및 서브넷을 작성하여 네트워크를 정의하십시오.
  2. 서브넷의 모든 리소스가 공용 인터넷과 통신하도록 허용하려면 퍼블릭 게이트웨이를 연결하십시오.
  3. 가상 서버 인스턴스를 작성하십시오. 기본적으로 100GB 부트 볼륨이 인스턴스에 연결됩니다.
  4. 스토리지를 추가하려는 경우 블록 스토리지 볼륨을 작성하여 인스턴스에 연결하십시오.
  5. 인스턴스에 허용될 인바운드 및 아웃바운드 트래픽을 정의하려면 해당 인스턴스의 보안 그룹을 구성하십시오.
  6. 인터넷에서 인스턴스에 연결할 수 있도록 하려면 유동 IP 주소를 예약하고 연관시키십시오.

시작하기 전에

IAM 토큰, API 엔드포인트 및 API 버전에 대한 변수를 정의하십시오. 지시사항은 API 및 CLI 환경 설정을 참조하십시오.

API에 대해 자세히 알아보려면 IBM Cloud 콘솔의 프로비저닝 페이지에서 샘플 API 호출 가져오기를 클릭하십시오. 올바른 API 요청 순서를 확인하고 작업 및 종속성을 보다 잘 이해할 수 있습니다.

VPC 작성

my-vpc라는 IBM Cloud VPC를 작성하십시오.

curl -X POST "$vpc_api_endpoint/v1/vpcs?version=$api_version&generation=2" \
  -H "Authorization:$iam_token" \
  -d '{
      	"name": "my-vpc"
      }'

사용할 세대를 지정하려면 모든 API 요청에서 generation 매개변수를 전송해야 합니다. 2세대 가상 서버 인스턴스의 경우 generation=2를 지정하십시오. 자세한 내용은 가상 사설 클라우드(VPC)API의 ‘생성 ’ 항목을 참조하십시오

나머지 호출을 수행하려면 새로 생성된 VPC의 ID를 알아야 합니다. ID를 변수로 저장하십시오. 예를 들면 다음과 같습니다.

vpc="0738-59de4046-3434-4d87-bb29-0c99c428c96e"

변수가 제대로 저장되었는지 확인하려면 echo $vpc 을 실행하고, 응답 내용이 비어 있지 않은지 확인하십시오.

이전 예제에서는 클래식 액세스 권한이 있는 VPC를 작성하지 않습니다. VPC에 클래식 리소스에 대한 액세스 권한이 필요한 경우 클래식 인프라에 대한 액세스 권한 설정 을 참조하십시오. VPC는 생성하는 동안에만 클래식 액세스 모드로 설정할 수 있습니다. 또한 언제든지 계정에는 하나의 클래식 액세스 VPC만 있을 수 있습니다.

개인용 카탈로그 작성

이 단계는 선택사항입니다. 개인용 카탈로그의 이미지를 공유하려면 먼저 개인용 카탈로그를 작성해야 합니다. 다른 계정에 속하는 카탈로그 이미지를 선택하는 경우 검토할 추가 고려사항 및 제한사항이 있습니다. 콘솔의 비공개 카탈로그에서 교차 계정 이미지 참조 사용을 참조하세요. 개인용 카탈로그를 작성하려면 CLI를 사용하여 카탈로그에 소프트웨어 온보딩 튜토리얼을 참조하십시오.

서브넷 작성

서브넷을 작성하기 전에 서브넷을 작성할 구역 및 주소 접두부를 선택하십시오. VPC의 각 구역에 대한 주소 접두부를 나열하려면 다음 명령을 실행합니다.

curl -X GET "$vpc_api_endpoint/v1/vpcs/$vpc/address_prefixes?version=$api_version&generation=2" \
  -H "Authorization:$iam_token"

이제 ‘ us-south-3 ’ 영역에 대한 기본 주소 접두사를 선택하십시오. 응답에서 주소 접두부의 CIDR 블록을 기록하십시오. 서브넷을 작성할 때는 선택한 구역의 주소 접두부 중 하나에 해당하는 IP 범위를 지정해야 합니다.

서브넷을 작성한 후에는 크기를 조정할 수 없습니다.

curl -X POST "$vpc_api_endpoint/v1/subnets?version=$api_version&generation=2" \
  -H "Authorization:$iam_token" \
  -d '{
        "name": "my-subnet",
        "ipv4_cidr_block": "10.0.1.0/24",
        "zone": { "name": "us-south-3" },
        "vpc": { "id": "'$vpc'" }
      }'

서브넷의 ID를 변수에 저장하십시오.

subnet="0738-35fb0489-7105-41b9-99de-033fae723006"

서브넷에 리소스를 프로비저닝하려면 서브넷이 Ready 상태여야 합니다. 계속하기 전에 서브넷 리소스를 조회하여 상태가 Ready인지 확인하십시오. 상태가 failed인 경우에는 세부사항을 지원에 전달하여 문의하십시오. 다른 서브넷을 프로비저닝하여 진행할 수도 있습니다.

curl -X GET "$vpc_api_endpoint/v1/subnets/$subnet?version=$api_version&generation=2" \
  -H "Authorization: Bearer $iam_token"

퍼블릭 게이트웨이 연결

퍼블릭 게이트웨이를 서브넷에 연결하여 모든 연결된 리소스가 공용 인터넷과 통신할 수 있도록 하십시오.

구역에 대해 퍼블릭 게이트웨이를 작성하십시오.

curl -X POST "$vpc_api_endpoint/v1/public_gateways?version=$api_version&generation=2" \
  -H "Authorization:$iam_token" \
  -d '{
        "name": "my-gateway",
        "zone": { "name": "us-south-3" },
        "vpc": { "id": "'$vpc'" }
      }'

퍼블릭 게이트웨이의 ID를 변수에 저장하십시오.

gateway="0738-ad0cded3-53a3-4d4a-9809-8c59b50d2b80"

퍼블릭 게이트웨이를 서브넷에 연결하십시오.

curl -X PUT "$vpc_api_endpoint/v1/subnets/$subnet/public_gateway?version=$api_version&generation=2" \
  -H "Authorization:$iam_token" \
  -d '{
        "id": "'$gateway'"
      }'

VPC에서는 구역당 하나의 퍼블릭 게이트웨이만 허용되지만, 해당 퍼블릭 게이트웨이를 구역의 여러 서브넷에 연결할 수 있습니다. 구역의 퍼블릭 게이트웨이를 찾으려면 ibmcloud is public-gateways 명령을 실행하여 특정 VPC 및 구역 값을 찾으십시오.

다음 명령을 실행하여 서브넷에 연결된 퍼블릭 게이트웨이를 검색하고 볼 수 있습니다.

curl -X GET "$vpc_api_endpoint/v1/subnets/$subnet/public_gateway?version=$api_version&generation=2" \
  -H "Authorization: Bearer $iam_token"

SSH 키 추가

공개 SSH 키를 사용자의 IBM Cloud 계정에 추가하십시오. 이 키는 인스턴스를 생성할 때 지정하며, 나중에 인스턴스에 로그인할 때 필요합니다. 하나의 키를 사용하여 여러 인스턴스를 프로비저닝할 수 있습니다.

curl -X POST "$vpc_api_endpoint/v1/keys?version=$api_version&generation=2" \
  -H "Authorization:$iam_token" \
  -d '{
        "name": "my-key",
        "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQB/nAmOjTmezNUDKYvEeIRf2YnwM9/uUG1d0BYsc8/tRtx+RGi7N2lUbp728MXGwdnL9od4cItzky/zVdLZE2cycOa18xBK9cOWmcKS0A8FYBxEQWJ/q9YVUgZbFKfYGaGQxsER+A0w/fX8ALuk78ktP31K69LcQgxIsl7rNzxsoOQKJ/CIxOGMMxczYTiEoLvQhapFQMs3FL96didKr/QbrfB1WT6s3838SEaXfgZvLef1YB2xmfhbT9OXFE3FXvh2UPBfN+ffE7iiayQf/2XR+8j4N4bW30DiPtOQLGUrH1y5X/rpNZNlWW2+jGIxqZtgWg7lTy3mXy5x836Sj/6L"
      }'

SSH 키의 ID를 변수로 저장하십시오. 예를 들면 다음과 같습니다.

key="0738-35fb0489-7105-41b9-8764-033fae723006"

인스턴스에 대한 프로파일 선택

API를 호출하여 모든 프로파일을 나열하십시오. 다음 명령은 사용 가능한 프로파일을 나열합니다.

curl -X GET "$vpc_api_endpoint/v1/instance/profiles?version=$api_version&generation=2" \
  -H "Authorization:$iam_token"

나중에 인스턴스를 프로비저닝하는 데 사용되는 변수에 프로파일 이름을 저장하십시오. 예를 들면 다음과 같습니다.

profile_name="b2-2x8"

인스턴스를 만들려는 영역에서 사용하려는 프로필을 사용할 수 있는지 확인합니다.

다음 이유 중 하나로 인해 일부 프로필을 사용하지 못할 수 있습니다:

  • 가상 서버의 네트워크 인터페이스 수가 프로필 제한을 초과합니다. 네트워크 인터페이스를 제거하여 더 많은 프로필에서 선택할 수 있습니다. 자세한 내용은 ‘가상 서버 크기 조정’을 참조하십시오.
  • 선택한 이미지에 프로필과 호환되지 않는 허용된 사용 표현식이 포함되어 있습니다. 이러한 경우 원하는 프로필과 호환되는 허용된 사용 표현식이 있는 이미지를 선택합니다. 자세한 내용은 사용자 지정 이미지에 허용된 사용 표현식 추가하기를 참조하세요.

인스턴스의 이미지 선택

재고 이미지, 계정의 사용자 정의 이미지 또는 개인용 카탈로그의 계정과 공유된 이미지를 사용하여 인스턴스를 작성할 수 있습니다. 사용하려는 이미지에 따라 다음 API 호출 중 하나를 실행하십시오.

  • 인스턴스의 계정에서 재고 이미지 또는 사용자 정의 이미지를 선택하십시오.

    다음 명령은 사용 가능한 이미지를 나열합니다.

    curl -X GET "$vpc_api_endpoint/v1/images?version=$api_version&generation=2" \
      -H "Authorization:$iam_token"
    

    이미지의 ID를 변수에 저장하십시오. 이 변수는 나중에 인스턴스를 프로비저닝하는 데 사용됩니다. 예를 들면 다음과 같습니다.

    image_id="0738-660198a6-52c6-21cd-7b57-e37917cef586"
    
  • 인스턴스의 개인용 카탈로그에서 공유되는 이미지를 선택하십시오.

    다른 계정에 속하는 카탈로그 이미지를 선택하는 경우 검토할 추가 고려사항 및 제한사항이 있습니다. API의 사설 카탈로그에서 교차 계정 이미지 참조 사용 을 참조하십시오.

    카탈로그 제품 오퍼링의 최신 버전에 있는 개인용 카탈로그 이미지 또는 카탈로그 제품 오퍼링의 특정 버전에서 인스턴스를 프로비저닝할 수 있습니다.

    최신 버전의 카탈로그 제품 오퍼링에서 개인용 카탈로그 이미지를 선택하려면 카탈로그 관리 API-오퍼링 가져오기 를 참조하십시오. 오퍼링 CRN을 찾아 나중에 사용할 수 있도록 변수에 저장하십시오.

     offering_crn="crn:v1:bluemix:public:globalcatalog-collection:global::1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:offering:00111601-0ec5-41ac-b142-96d1e64e6442-global"
    

    특정 버전의 카탈로그 제품 오퍼링에서 개인용 카탈로그 이미지를 선택하려면 카탈로그 관리 API-오퍼링 가져오기 를 참조하십시오. 그런 다음 오퍼링 가져오기 > Kinds > 버전 > CRN 으로 이동하여 버전의 CRN을 검색하고 나중에 사용할 수 있도록 변수에 저장하십시오.

    version_crn="crn:v1:bluemix:public:globalcatalog-collection:global::1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442-global/ec66bec2-6a33-42d6-9323-26dd4dc8875d-global"
    

인스턴스 작성

새로 생성된 서브넷에 인스턴스를 생성합니다. 인스턴스가 프로비저닝된 후 로그인할 수 있도록 공개 SSH 키를 전달하십시오. 사용하려는 이미지 유형에 따라 다음 API 호출 중 하나를 실행하십시오.

  • 인스턴스의 계정에서 재고 이미지 또는 사용자 정의 이미지를 선택하십시오.

    curl -X POST "$vpc_api_endpoint/v1/instances?version=$api_version&generation=2" \
      -H "Authorization:$iam_token" \
      -d '{
            "name": "my-instance",
            "zone": {
              "name": "us-south-3"
            },
            "vpc": {
              "id": "'$vpc'"
            },
            "primary_network_interface": {
              "subnet": {
                "id": "'$subnet'"
              }
            },
            "keys":[{"id": "'$key'"}],
            "profile": {
              "name": "'$profile_name'"
             },
            "image": {
              "id": "'$image_id'"
             }
            }'
    
  • 카탈로그 제품 오퍼링의 최신 버전에서 개인용 카탈로그 이미지를 사용하여 인스턴스를 작성하십시오.

    curl -X POST "$vpc_api_endpoint/v1/instances?version=$api_version&generation=2" \
      -H "Authorization:$iam_token" \
      -d '{
            "name": "my-instance",
            "zone": {
              "name": "us-south-3"
            },
            "vpc": {
              "id": "'$vpc'"
            },
            "primary_network_interface": {
              "subnet": {
                "id": "'$subnet'"
              }
            },
            "keys":[{"id": "'$key'"}],
            "profile": {
              "name": "'$profile_name'"
             },
            "catalog_offering": {
              "offering": {
                "crn": "'$offering_crn'"
             }
            }'
    
  • 카탈로그 제품 오퍼링의 특정 버전에서 개인용 카탈로그 이미지를 사용하여 인스턴스를 작성하십시오.

    curl -X POST "$vpc_api_endpoint/v1/instances?version=$api_version&generation=2" \
      -H "Authorization:$iam_token" \
      -d '{
            "name": "my-instance",
            "zone": {
              "name": "us-south-3"
            },
            "vpc": {
              "id": "'$vpc'"
            },
            "primary_network_interface": {
              "subnet": {
                "id": "'$subnet'"
              }
            },
            "keys":[{"id": "'$key'"}],
            "profile": {
              "name": "'$profile_name'"
             },
            "catalog_offering": {
              "version": {
                "crn": "'$version_crn'"
             }
            }'
    

인스턴스의 ID를 변수로 저장하십시오. 예를 들면 다음과 같습니다.

instance="0738-35fb0489-7105-41b9-99de-033fae723006"

인스턴스를 작성할 때 인스턴스의 상태는 stopped 입니다. 진행하려면 먼저 인스턴스가 running 상태로 변해야 하며, 여기에는 몇 분이 소요됩니다. 인스턴스의 상태를 조회하여 running인지 확인하십시오.

curl -X GET "$vpc_api_endpoint/v1/instances/$instance?version=$api_version&generation=2" \
  -H "Authorization: Bearer $iam_token"

GET/instance API 호출로 리턴된 인스턴스의 기본 네트워크 인터페이스 ID를 저장합니다. 예를 들어 다음과 같습니다.

network_interface="0738-7710e766-dd6e-41ef-9d36-06f7adbef33d"

특정 인스턴스를 조회하기 전까지는 기본 네트워크 인터페이스의 ID를 가져올 수 없습니다.

(선택 사항) Block Storage 데이터 볼륨 생성 및 연결

Block Storage 데이터 볼륨을 생성하여 가상 서버 인스턴스에 보조 스토리지로 연결할 수 있습니다. 이 예제와 유사한 요청으로 데이터 볼륨을 작성하십시오. 이 절차는 볼륨 프로필을 표시하고, 볼륨을 만들고, 볼륨 ID를 변수에 저장하고, 볼륨의 상태를 확인한 다음 볼륨 첨부 파일을 만드는 순서로 진행됩니다.

볼륨 프로파일 목록 표시:

curl -X GET "$vpc_api_endpoint/v1/volumes/profiles?version=$api_version&generation=2" \
  -H "Authorization: Bearer $iam_token" \

프로파일은 general-purpose(3IOPS/GB), 5iops-tier, 10-iops-tier 및 custom일 수 있습니다. 선택한 볼륨 프로파일을 기반으로 하는 볼륨 용량 및 IOPS 범위에 대한 자세한 정보는 프로파일 을 참조하십시오.

데이터 볼륨을 작성하십시오.

curl -X POST "$vpc_api_endpoint/v1/volumes?version=$api_version&generation=2" \
  -H "Authorization: Bearer $iam_token" \
  -d '{
        "name": "my-volume",
        "iops": 1000,
        "capacity": 100,
        "zone": {
            "name": "us-south-3"
            },
        "profile": {
            "name": "custom"
            }
      }'

볼륨 ID를 변수에 저장하세요:

volume_id="0738-640774d7-2adc-4609-add9-6dfd96167a8f"

이 볼륨은 처음 생성될 때 상태가 ‘ pending ’입니다. 진행하려면 먼저 볼륨이 available 상태로 변환되어야 하며, 여기에는 몇 초가 걸립니다.

볼륨 상태를 확인하십시오:

curl -X GET "$vpc_api_endpoint/v1/volumes/$volume_id?version=$api_version&generation=2" \
  -H "Authorization: Bearer $iam_token"

새로운 데이터 볼륨을 가상 서버 인스턴스에 연결하기 위해 볼륨 연결을 생성합니다. 요청에서 이전에 작성한 인스턴스 ID 변수를 사용하십시오. 볼륨 ID 변수를 사용하여 볼륨을 지정하십시오.

볼륨 연결을 작성하십시오.

curl -X POST "$vpc_api_endpoint/v1/instances/$instance/volume_attachments?version=$version&generation=2" \
  -H "Authorization: Bearer $iam_token" \
  -d '{
        "name": "my-volume-attachment",
        "volume": {
            "id": "'$volume_id'"
            }
      }'

기본 보안 그룹에 규칙 추가하기

보안 그룹을 구성하여 인스턴스에 허용되는 인바운드 및 아웃바운드 트래픽을 정의할 수 있습니다. 예를 들어 SSH 트래픽을 허용하기 위한 규칙을 추가할 수 있습니다.

VPC의 보안 그룹을 찾으십시오.

curl -X GET "$vpc_api_endpoint/v1/vpcs/$vpc/default_security_group?version=$api_version&generation=2" \
  -H "Authorization:$iam_token"

보안 그룹의 ID를 변수로 저장하십시오. 예를 들면 다음과 같습니다.

sg=0738-2d364f0a-a870-42c3-a554-000000981149

이제 인스턴스에 연결할 수 있도록 인바운드 SSH 트래픽을 허용하는 규칙을 생성합니다:

curl -X POST "$vpc_api_endpoint/v1/security_groups/$sg/rules?version=$api_version&generation=2" \
  -H "Authorization: Bearer $iam_token" \
  -d '{
        "direction": "inbound",
        "protocol": "tcp",
        "port_min": 22,
        "port_max": 22
      }'

Windows 이미지의 경우 인스턴스와 연관된 보안 그룹에서 인바운드 및 아웃바운드 원격 데스크탑 프로토콜 트래픽(TCP 포트 3389)을 허용하는지 확인하십시오.

플로팅 IP 주소 생성하기

인터넷에서 인스턴스에 접근할 수 있게 하려면 유동 IP 주소를 작성하십시오. 인스턴스의 기본 네트워크 인터페이스를 유동 IP 주소의 대상으로 사용하십시오.

curl -X POST "$vpc_api_endpoint/v1/floating_ips?version=$api_version&generation=2" \
  -H "Authorization:$iam_token" \
  -d '{
        "name": "my-floatingip",
        "target": {
            "id":"'$network_interface'"
        }
      }
'

유동 IP 주소의 ID를 변수로 저장하십시오. 예를 들면 다음과 같습니다.

floating_ip="0738-35fb0489-7105-41b9-99de-033fae723006"

인스턴스에 로그인하기

인스턴스에 연결하려면 생성한 플로팅 IP 주소를 사용하십시오. 유동 IP 주소를 얻으려면 다음 명령을 실행하십시오.

curl -X GET "$vpc_api_endpoint/v1/floating_ips/$floating_ip?version=$api_version&generation=2" \
  -H "Authorization:$iam_token"

Linux에서 유동 IP의 address를 사용하여 SSH로 인스턴스에 연결하십시오.

ssh -i <private_key_file> root@<floating ip address>

Fedora Core OS에서는 사용자 로그인 'root'가 기본적으로 사용 안함으로 설정되어 있습니다. 사용자 로그인 'core'를 사용하여 Fedora Core OS 인스턴스에 로그인할 수 있습니다.

Windows 이미지에 연결하려면 해당 복호화된 비밀번호를 사용하여 로그인하십시오. 지시사항은 Windows 인스턴스에 연결을 참조하십시오.

인스턴스 구성

IBM Cloud 콘솔에서 시간 경과에 따른 인스턴스의 CPU, 볼륨, 메모리 및 네트워크 사용량을 모니터할 수 있습니다. 모니터링 데이터는 IBM Cloud Monitoring에 저장되므로 계정에서 IBM Cloud Monitoring 인스턴스에 대한 인증을 받아야 합니다. 자세한 정보는 IBM Cloud 모니터링을 참조하십시오.

(선택사항): 자원 삭제

언제든지 자원을 삭제할 수 있습니다. 그러나 다른 자원에 필요한 경우에는 자원을 삭제할 수 없습니다. 예를 들어 VPC에 인스턴스, 서브넷 또는 퍼블릭 게이트웨이가 포함되어 있으면 VPC를 삭제할 수 없습니다. VPC 및 해당 리소스를 모두 삭제하는 방법에 대한 지침은 ‘REST API를 사용하여 VPC 삭제’를 참조하십시오.

축하합니다!

REST API를 사용하여 VPC를 성공적으로 생성하고 구성했습니다. 더 많은 API 명령을 사용해 보려면 Virtual Private Cloud API를 살펴보십시오.