IBM Cloud: VPC의 VSI를 IP 주소 지정으로 프로비저닝하는 방법

10148 단어 닌비아예ribmcloud

1. 소개


본 기사 집필 시점(2020년 8월)에서는, IBM Cloud Portal로부터 VPC판의 VSI를 프로비저닝할 때에, subnet의 지정은 할 수 있지만 IP 주소의 지정을 GUI 화면에서 실시할 수 없다.
그러나, CLI나 API로, primary_ipv4_address 필드를 지정하면, IP 주소의 지정은 할 수 있다. 참고 API 자료는 여기 .
CLI에서도 ibmcloud is instance-create 커맨드 등으로 실행할 수 있지만, 그 때에 일일이 각종 ID 정보를 취득해 오는 것이 귀찮다. 그래서 이번에는 (아마 가장 쉬운 방법이라고 생각된다) API를 사용한 방법을 소개한다.
(2020/09/18 추가)
VSI 주문 후 두 번째 이후 vNIC에 IP 주소를 명시적으로 지정하는 방법은 여기을 참조하십시오.
(2022/03/31 추가)
앞으로는 이쪽을 사용하는 것이 좋을 것 같습니다.
IBM Cloud : VPC의 VSI를 IP 주소 지정 (reserved IP 사용)으로 프로비저닝하는 방법

2. 구성 생성 및 Sample API call 생성


IBM Cloud Portal에서 VPC 버전의 VSI 주문 화면에서 최종적으로 프로비저닝하고 싶은 구성을 일단 GUI 베이스로 만든 후, Get sample API call 를 누르.

그러면 아래와 같은 sample API call이 출력되므로 이 코드를 복사하여 스크립트(예: vsi.sh)로 저장한다.

3. sample API call 수정



vsi.sh(수정 전)
(省略)
  "primary_network_interface": {
    "name": "eth0",
    "allow_ip_spoofing": false,
    "subnet": {
      "id": "02e7-ff96ff2a-fa27-4d88-b855-98fb85112636"
    },
    "security_groups": [
      {
        "id": "r022-1a2bb9f2-7647-4332-8a1b-eb925fb6e160"
      }
    ]
  },
(省略)

같은 곳을 수정하고 "primary_ipv4_address": "10.0.0.5", 처럼 IP 주소를 명시적으로 추가 지정한다.

vsi.sh(수정 후)
(省略)
  "primary_network_interface": {
    "name": "eth0",
    "primary_ipv4_address": "10.0.0.5",
    "allow_ip_spoofing": false,
    "subnet": {
      "id": "02e7-ff96ff2a-fa27-4d88-b855-98fb85112636"
    },
    "security_groups": [
      {
        "id": "r022-1a2bb9f2-7647-4332-8a1b-eb925fb6e160"
      }
    ]
  },
(省略)

또한, 지정하는 IP 주소는 여기 에 기재되어 있는 대로 예약이 끝난 주소를 피할 필요가 있는 것에 주의.
예를 들면, 10.0.0.0/24 라고 하는 subnet에서는 이하가 예약이 끝나고 유저가 이용할 수 없다.
10.0.0.0: Network address
10.0.0.1: Gateway address
10.0.0.2: reserved by IBM
10.0.0.3: reserved by IBM for future use
10.0.0.254: Broadcast address

4. IAM 토큰 획득 및 스크립트 실행


위의 스크립트를 실행하기 위해서는 $iam_token 라는 변수명으로 IAM의 토큰이 설정되어 있을 필요가 있으므로, 이하에서 iam_token 취득한 후, 쉘을 실행해 VSI를 프로비저닝한다. (덧붙여 IAM_TOKEN의 취득 방법에 대해서는 여기 도 참고)
$ export iam_token=`ibmcloud iam oauth-tokens | awk '{printf $4}'`
$ sh vsi.sh

5. 결과 확인


지정한 구성으로 작성되었다(이번 예에서는 10.0.0.5 를 지정했지만, 확실히 그와 같은 구성으로 되어 있다!)

# (참고) 두 번째 이후의 인터페이스에서 IP 주소를 지정할 때.
첫 번째 인터페이스에서 지정한 것처럼 "primary_ipv4_address"를 사용하면됩니다.

설정 예(발췌)
  "primary_network_interface": {
    "name": "eth0",
    "primary_ipv4_address": "10.0.0.100",
    "allow_ip_spoofing": false,
    "subnet": {
      "id": "02e7-ff96ff2a-fa27-4d88-b855-98fb85112636"
    },
    "security_groups": [
      {
        "id": "r022-1a2bb9f2-7647-4332-8a1b-eb925fb6e160"
      }
    ]
  },
  "network_interfaces": [
    {
      "name": "eth1",
      "primary_ipv4_address": "10.4.0.100",
      "allow_ip_spoofing": false,
      "subnet": {
        "id": "02e7-b50228c7-2431-4854-ad4c-b68f6c7382a7"
      },
      "security_groups": [
        {
          "id": "r022-1a2bb9f2-7647-4332-8a1b-eb925fb6e160"
        }
      ]
    }
  ],

프로비저닝 후 상태

좋은 웹페이지 즐겨찾기