仮想サーバ作成(CentOS・DHCP取得)

ポート(プライベートIPアドレス)をDHCP取得して、仮想サーバ(CentOS)を作成し、確認するまでの手順を解説します。

ポート(プライベートIPアドレス)を指定する場合、「仮想サーバ作成(CentOS・ポート指定)」を参照してください。



  1. 以下の設定を行います。
    $ VM_NAME=<仮想サーバ名(任意)>
    $ FLAVOR_ID=<仮想サーバのスペック(flavorID一覧表示で確認)>
    $ VOL_SIZE=30
    $ DEVICE_NAME=<ブロックストレージパス(「/dev/vda」 の形式で指定)>
    $ SOURCE=<ブロックストレージタイプ>
    $ IMAGE_REF_ID=839c1db6-738c-4e2b-9a1d-c14977564203<CentOSのイメージID>
    $ DESTINATION=<接続先ボリューム(volume指定)>
    $ ISDELETE=<0:仮想サーバ作成時に作成したボリュームを、仮想サーバ削除時に一緒に削除しない、
    	 1:仮想サーバ作成時に作成したボリュームを仮想サーバ削除時に一緒に削除する>
    $ KEYNAME=<キーペア名>
    $ INSTANCE_MAX=<サーバの最大数>
    $ INSTANCE_MIN=<サーバの最小数>
    $ NETWORK_ID=<接続したいネットワークID>
    $ SG_NAME=<指定するセキュリティグループ名>
  2. 次のAPIを実行します。
    $ curl -Ss $COMPUTE/v2/$PROJECT_ID/servers -X POST \
    -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" \
    -d '{"server": {"name": "'$VM_NAME'", "availability_zone": "'$AZ'",
     "imageRef": "", "flavorRef": "'$FLAVOR_ID'",
     "block_device_mapping_v2":[ {"boot_index": "0", "uuid":"'$IMAGE_REF_ID'",
     "volume_size": "'$VOL_SIZE'", "device_name": "'$DEVICE_NAME'", "source_type": "'$SOURCE'",
     "destination_type": "'$DESTINATION'","delete_on_termination": '$ISDELETE'} ] ,
     "key_name": "'$KEYNAME'", "max_count": '$INSTANCE_MAX', "min_count": '$INSTANCE_MIN',
     "networks": [{"uuid": "'$NETWORK_ID'"}], 
     "security_groups": [{"name": "'$SG_NAME'"}] }}' | jq .

    以下のレスポンスが返ります。

    {
      "server": {
        "security_groups": [
          {
            "name": "<指定したセキュリティグループ名>"
          }
        ],
        "OS-DCF:diskConfig": "MANUAL",
        "id": "<新規仮想サーバID>",
        "links": [
          {
            "href": "http://10.3.0.201/v2/<プロジェクトID>/servers/<新規仮想サーバID>",
            "rel": "self"
          },
          {
            "href": "http://10.3.0.201/<プロジェクトID>/servers/<新規仮想サーバID>",
            "rel": "bookmark"
          }
        ]
      }
    }
  3. 作成した仮想サーバを確認するため、以下のAPIを実行します。
    $ curl -Ss $COMPUTE/v2/$PROJECT_ID/servers/detail -X GET \
    -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq '.servers[] | 
     {status: .status, network_name: .addresses |
     keys, key_name: .key_name, flavor_id: .flavor |
     .id, vm_id: .id, security_group: .security_groups[] | .name, name: .name, }'

    以下のように、設定した仮想サーバ名を含んだリストが出力された場合、作成は完了です。

    ...
    
    {
      "status": "<仮想サーバのステータス>",
      "network_name": [
        "<接続されているネットワーク名>"
      ],
      "key_name": "<キーペア名>",
      "flavor_id": "<フレーバーID>",
      "vm_id": "<仮想サーバID>",
      "security_group": "<設定したセキュリティグループ名>",
      "name": "<仮想サーバ名>"
    }
    
    ...