OpenStack CLIを使用してサーバーを作成し、SSH接続し、最終的にサーバーを削除するまでの手順

1. キーペアの作成と保存

まず、SSHアクセスに使用するキーペアを作成し、秘密鍵を保存します。

openstack keypair create {KEY_NAME} > MY_KEY.pem

    
  • KEY_NAME:作成するキーペアの名前に置き換えてください。
  • MY_KEY.pem:秘密鍵を保存するファイル名です。

2. 秘密鍵のパーミッション設定

SSHで使用する秘密鍵のパーミッションを適切に設定します。

chmod 600 MY_KEY.pem

    
  • これにより、秘密鍵ファイルの権限が所有者の読み書きのみに設定されます。

3. ブートボリュームの作成

3.1 ブートボリュームに設定したいイメージ(OSテンプレート)を選択

以下のコマンドから、ConoHaが提供しているOSテンプレートのリストを取得することができます。この中から、ブートボリュームに指定したいイメージのNameを控えておきます。

openstack image list --public

+--------------------------------------+--------------------------------------------------------------+--------+
| ID                                   | Name                                                         | Status |
+--------------------------------------+--------------------------------------------------------------+--------+
| 57e2a74f-c40d-4fb6-a2cc-a4748e73549c | vmi-almalinux-8.8-amd64                                      | active |
| 24ce5f11-91e2-4709-8ad2-1bde163a1ab7 | vmi-almalinux-8.9-amd64                                      | active |
| 546924fb-9985-4301-9193-bafe5735790f | vmi-almalinux-9.2-amd64                                      | active |
| 642f1ac7-e3b2-421f-b296-712b598a53b3 | vmi-ubuntu-20.04-amd64                                       | active |
| 51609119-6b0a-48dc-b061-2a70d75f8fe0 | vmi-ubuntu-22.04-amd64                                       | active |
| 30139c65-2650-47df-8c8f-23feb5287a48 | vmi-ubuntu-24.04-amd64                                       | active |
...

    

3.2 指定したイメージからブート可能なボリュームを作成します。

openstack volume create --size 100 --image vmi-ubuntu-24.04-amd64 --bootable myBootVolume1

    
  • --size 100:ボリュームのサイズを指定しています(GB単位、100GBのみ選択可能)。
  • --image vmi-ubuntu-22.04-amd64:ベースとなるイメージ名です。
  • --bootable:このオプションでブート可能なボリュームを作成します。
  • myBootVolume1:作成するボリュームの名前です。サーバー作成時に利用します。

成功した場合、以下のような表示がされます。

+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| attachments         | []                                   |
| availability_zone   | nova                                 |
| bootable            | false                                |
| consistencygroup_id | None                                 |
| created_at          | 2024-11-05T10:49:36.364955           |
| description         | None                                 |
| encrypted           | False                                |
| id                  | {snip}                               |
| multiattach         | False                                |
| name                | myBootVolume1                        |
| properties          | via_api='ext-api'                    |
| replication_status  | None                                 |
| size                | 100                                  |
| snapshot_id         | None                                 |
| source_volid        | None                                 |
| status              | creating                             |
| type                | c3j1-ds02-boot                       |
| updated_at          | None                                 |
| user_id             | {snip}                               |
+---------------------+--------------------------------------+

    

4. フレーバー(スペック)の情報取得

作成したいサーバーのスペックを指定するために必要なフレーバー情報を取得します。

openstack flavor list コマンドを用いて「Linux用の時間課金のフレーバー」を取得します。

output=$(openstack flavor list); echo "$output" | head -n 3; echo "$output" | grep 'g2l-t-'

+--------------------------------------+----------------------+--------+------+-----------+-------+-----------+
| ID                                   | Name                 |    RAM | Disk | Ephemeral | VCPUs | Is Public |
+--------------------------------------+----------------------+--------+------+-----------+-------+-----------+
| 3f8244e7-c7a2-4c60-84b9-cd76dd98a177 | g2l-t-c1m512         |    512 |    0 |         0 |     1 | True      |
| 66394e53-3e1c-455a-a09e-e575520edcef | g2l-t-c22m228g1-h100 | 233472 |    0 |         0 |    22 | True      |
| 6f3c4747-8471-4a38-902b-4c57ad76d776 | g2l-t-c4m4           |   4096 |    0 |         0 |     4 | True      |
| 719b3191-3163-478a-b14c-cb667e0e19b2 | g2l-t-c8m16          |  16384 |    0 |         0 |     8 | True      |
| 784f1ae8-0bc8-4d06-a06b-2afaa9580e0a | g2l-t-c3m2           |   2048 |    0 |         0 |     3 | True      |
| 95afc016-cf7f-4cc1-8622-8790bdc95bb7 | g2l-t-c24m64         |  65536 |    0 |         0 |    24 | True      |
| b5d0e377-3440-41c2-a967-15bbde929325 | g2l-t-c20m128g1-l4   | 131072 |    0 |         0 |    20 | True      |
| b9eb8f9f-6cbf-4c8b-89cd-b0cfb484f13a | g2l-t-c12m32         |  32768 |    0 |         0 |    12 | True      |
| c8ce932a-a7de-4fbb-ab64-903826082be3 | g2l-t-c6m8           |   8192 |    0 |         0 |     6 | True      |
| edb9d02a-a2a6-4b5a-b53b-679259ad73d7 | g2l-t-c88m912g4-h100 | 933888 |    0 |         0 |    88 | True      |
| f2a77529-1815-43a2-bc14-1f3f6b09079c | g2l-t-c2m1           |   1024 |    0 |         0 |     2 | True      |

    

Windowsのサーバーを作成したい場合は以下のコマンドでWindow専用のフレーバーを確認できます。

output=$(openstack flavor list); echo "$output" | head -n 3; echo "$output" | grep 'g2w-t-'

+--------------------------------------+----------------------+--------+------+-----------+-------+-----------+
| ID                                   | Name                 |    RAM | Disk | Ephemeral | VCPUs | Is Public |
+--------------------------------------+----------------------+--------+------+-----------+-------+-----------+
| 09efe5d4-725a-4027-a28a-acd85286d87c | g2w-t-c2m1           |   1024 |    0 |         0 |     2 | True      |
| 2e60a683-1f84-4f12-a3a9-7caf4bdb5e21 | g2w-t-c6m8           |   8192 |    0 |         0 |     6 | True      |
| 74de86d2-9a6d-4396-99b7-ba510fa7dcf7 | g2w-t-c24m64         |  65536 |    0 |         0 |    24 | True      |
| 7a67cd68-8453-4e1b-b3a8-ba5c3a10a5f4 | g2w-t-c8m16          |  16384 |    0 |         0 |     8 | True      |
| a2734ed4-1d04-46bf-a3c9-3b6f8d5ec43c | g2w-t-c4m4           |   4096 |    0 |         0 |     4 | True      |
| a5cc3a59-99e8-4671-9c4d-0cca816ea9e6 | g2w-t-c12m32         |  32768 |    0 |         0 |    12 | True      |
| cb3a7934-7b93-447a-8c54-3fd5d4e67a1f | g2w-t-c3m2           |   2048 |    0 |         0 |     3 | True      |

    

5. サーバーの作成

これまでの手順で作成したリソース、取得した情報を用いてサーバーを起動します。

openstack server create --flavor g2l-t-c3m2 --volume myBootVolume1 --key-name KEY_NAME --property "instance_name_tag=myInstance" ""

+--------------------------------------+---------------------------------------------------+
| Field                                | Value                                             |
+--------------------------------------+---------------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                            |
| OS-EXT-AZ:availability_zone          | cell1-az1                                         |
| OS-EXT-SRV-ATTR:host                 | None                                              |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | None                                              |
| OS-EXT-SRV-ATTR:instance_name        |                                                   |
| OS-EXT-STS:power_state               | NOSTATE                                           |
| OS-EXT-STS:task_state                | scheduling                                        |
| OS-EXT-STS:vm_state                  | building                                          |
| OS-SRV-USG:launched_at               | None                                              |
| OS-SRV-USG:terminated_at             | None                                              |
| accessIPv4                           |                                                   |
| accessIPv6                           |                                                   |
| addresses                            |                                                   |
| adminPass                            | {snip}                                            |
| config_drive                         | True                                              |
| created                              | 2024-11-07T10:43:28Z                              |
| flavor                               | g2l-t-c3m2 (784f1ae8-0bc8-4d06-a06b-2afaa9580e0a) |
| hostId                               |                                                   |
| id                                   | {snip}                                            |
| image                                | N/A (booted from volume)                          |
| key_name                             | KEY_NAME                                          |
| name                                 | vm-3ac544b2-d5                                    |
| os-extended-volumes:volumes_attached | []                                                |
| progress                             | 0                                                 |
| project_id                           | {snip}                                            |
| properties                           | instance_name_tag='myInstance'                    |
| security_groups                      |                                                   |
| status                               | BUILD                                             |
| updated                              | 2024-11-07T10:43:28Z                              |
| user_id                              | {snip}                                            |
+--------------------------------------+---------------------------------------------------+

    
  • --flavor g2l-t-c3m2:サーバーのフレーバー(スペック)を指定します。
  • --volume myBootVolume1:先ほど作成した、起動に使用するボリュームを指定します。
  • --key-name KEY_NAME:先ほど作成したキーペアの名前を指定します。
  • --property "instance_name_tag=myInstance":コントロールパネルに表示されるサーバー名を指定します。
  • 末尾の"":本来は作成するサーバーの名前(name)を指定しますが、ConoHaではnameをお客様にて指定することはできないため、任意の文字列または""を指定します。

6. サーバーの確認

サーバーが正しく作成されたかを openstack server show コマンドを用いて確認します。引数にはサーバーのIDを指定します。

openstack server show {server create 実行時の結果に記載のid(サーバーID)}

+-------------------------------------+---------------------------------------------------------------------------+
| Field                               | Value                                                                     |
+-------------------------------------+---------------------------------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL                                                                    |
| OS-EXT-AZ:availability_zone         | cell1-az1                                                                 |
| OS-EXT-SRV-ATTR:host                | {snip}                                                                    |
| OS-EXT-SRV-ATTR:hostname            | None                                                                      |
| OS-EXT-SRV-ATTR:hypervisor_hostname | {snip}                                                                    |
| OS-EXT-SRV-ATTR:instance_name       | {snip}                                                                    |
| OS-EXT-SRV-ATTR:kernel_id           | None                                                                      |
| OS-EXT-SRV-ATTR:launch_index        | None                                                                      |
| OS-EXT-SRV-ATTR:ramdisk_id          | None                                                                      |
| OS-EXT-SRV-ATTR:reservation_id      | None                                                                      |
| OS-EXT-SRV-ATTR:root_device_name    | None                                                                      |
| OS-EXT-SRV-ATTR:user_data           | None                                                                      |
| OS-EXT-STS:power_state              | Running                                                                   |
| OS-EXT-STS:task_state               | None                                                                      |
| OS-EXT-STS:vm_state                 | active                                                                    |
| OS-SRV-USG:launched_at              | 2024-11-12T02:38:59.000000                                                |
| OS-SRV-USG:terminated_at            | None                                                                      |
| accessIPv4                          |                                                                           |
| accessIPv6                          |                                                                           |
| addresses                           | ext-v4v6-163-44-110-0-23={snip}, {snip}                                   |
| config_drive                        | True                                                                      |
| created                             | 2024-11-12T02:38:48Z                                                      |
| description                         | None                                                                      |
| flavor                              | g2l-t-c3m2 (784f1ae8-0bc8-4d06-a06b-2afaa9580e0a)                         |
| host                                | None                                                                      |
| hostId                              | {snip}                                                                    |
| host_status                         | None                                                                      |
| id                                  | {snip}                                                                    |
| image                               | N/A (booted from volume)                                                  |
| key_name                            | KEY_NAME                                                                  |
| locked                              | None                                                                      |
| locked_reason                       | None                                                                      |
| name                                | {snip}                                                                    |
| personality                         | None                                                                      |
| pinned_availability_zone            | None                                                                      |
| progress                            | 0                                                                         |
| project_id                          | {snip}                                                                    |
| properties                          | instance_name_tag='myInstance'                                            |
| security_groups                     | name='default'                                                            |
| server_groups                       | None                                                                      |
| status                              | ACTIVE                                                                    |
| tags                                |                                                                           |
| trusted_image_certificates          | None                                                                      |
| updated                             | 2024-11-12T02:38:59Z                                                      |
| user_id                             | {snip}                                                                    |
| volumes_attached                    | id='{snip}'                                                               |
+-------------------------------------+---------------------------------------------------------------------------+

    

これにより、現在のサーバーの情報が表示されます。作成したサーバーのstatusが ACTIVE になっていれば正常に作成ができています。

7. サーバーのIPアドレス情報の取得

作成したサーバーのIPアドレスを取得します。

前のステップで取得した情報から取得、または以下のコマンドで取得します。

openstack server show {サーバーID} -c addresses -f value

{'ext-v4v6-198-51-100-0-24': ['{サーバーに紐づくデフォルトのIPv4アドレス}', '{サーバーに紐づくデフォルトのIPv6アドレス}']}

    

このコマンドで表示されるIPアドレス(例:'ext-v4v6-XXX': ['{サーバーに紐づくデフォルトのIPv4アドレス}')から、実際のIPアドレスをメモしてください。

8. セキュリティグループの設定

サーバーのポートにSSHアクセス用のセキュリティグループを適用します。

8.1 ポートIDの取得

サーバーに関連付けられたポートIDを取得します。

openstack port list --server {サーバーID}

+--------------------------------------+----------------------------+-------------------+----------------------------------------------------------------------------------------------------+--------+
| ID                                   | Name                       | MAC Address       | Fixed IP Addresses                                                                                 | Status |
+--------------------------------------+----------------------------+-------------------+----------------------------------------------------------------------------------------------------+--------+
| {snip}                               | ext-i_100000-o_100000-p_0a | {snip}            | ip_address='{snip}', subnet_id='{snip}'                                                            | ACTIVE |
|                                      |                            |                   | ip_address='{snip}', subnet_id='{snip}'                                                            |        |
+--------------------------------------+----------------------------+-------------------+----------------------------------------------------------------------------------------------------+--------+

    

8.2 セキュリティグループの取得

セキュリティグループ情報を取得し、利用したいセキュリティグループのNameまたはIDをメモしてください。

本手順では、SSHポートを開放するセキュリティグループ(IPv4v6-SSH)を利用します。

openstack security group list

+--------------------------------------+------------------------------+-----------------------------------------------------------------------------------------------+----------------------------------+------+
| ID                                   | Name                         | Description                                                                                   | Project                          | Tags |
+--------------------------------------+------------------------------+-----------------------------------------------------------------------------------------------+----------------------------------+------+
| 02b18f54-6150-4467-ba10-d0c33523b57d | IPv4v6-KUSANAGI_manager      | IPv4v6-KUSANAGI_manager                                                                       | ad53f93815c44822ada4bd2be9e7b4ae | []   |
| 0bb8e31a-e8b1-4465-a0bd-514da402d186 | secgp-grafana                |                                                                                               | 12151bc47efa4aac9c91aa3591c54bae | []   |
| 0de18dcf-aad6-4500-9752-d1ad57520c4d | IPv4v6-PostgreSQL            | RDBMSのPostgreSQLサーバーが使用するポート用のセキュリティグループ                             | ad53f93815c44822ada4bd2be9e7b4ae | []   |
| 11616f80-4151-4fd7-8dfd-b0ea4ae4fb5a | 1718074892786-plttest-update |                                                                                               | 12151bc47efa4aac9c91aa3591c54bae | []   |
| 3b68773a-dd5a-4a95-8f01-0bfaf6acc85c | IPv4v6-RDP                   | 主にWindowsのリモートデスクトップ接続で用いられるRDPが使用するポート用のセキュリティグループ  | ad53f93815c44822ada4bd2be9e7b4ae | []   |
| 5147acab-c7a8-4d54-a445-34bc89023a42 | default                      | Default security group                                                                        | 12151bc47efa4aac9c91aa3591c54bae | []   |
| 51e608a1-1b0e-4974-ac53-b44246fe3f94 | IPv4v6-SSH                   | SSHサーバーが使用するポート用のセキュリティグループ                                           | ad53f93815c44822ada4bd2be9e7b4ae | []   |
| 76950c1b-87a2-48b3-90f1-76099720b3c0 | 1721703687170-plttest-update |                                                                                               | 12151bc47efa4aac9c91aa3591c54bae | []   |
| 7a26fc97-9952-4775-9ce2-139a77a321bc | IPv4v6-Valkey                | インメモリデータベースのValkeyサーバーが使用するポート用のセキュリティグループ                | ad53f93815c44822ada4bd2be9e7b4ae | []   |
| 83733e34-34d5-4f81-b143-9c63c30b329c | test-secgroup                | Test security group                                                                           | 12151bc47efa4aac9c91aa3591c54bae | []   |
| 86f22d6a-46cc-423b-8e3a-f81a65d1a1a4 | IPv4v6-MySQL                 | RDBMSのMySQLサーバーが使用するポート用のセキュリティグループ                                  | ad53f93815c44822ada4bd2be9e7b4ae | []   |
| 8be1f206-bccd-4599-aa72-80f63e03ab63 | 1733799641691-plttest-update |                                                                                               | 12151bc47efa4aac9c91aa3591c54bae | []   |
| 8f829778-f7e0-4741-863b-e2aab71c5de8 | IPv4v6-DBaaS-MySQL           | DBサーバー向けセキュリティグループ                                                            | ad53f93815c44822ada4bd2be9e7b4ae | []   |
| 9ff73bfc-8520-480a-a248-89d8d7b73d0b | IPv4v6-Web                   | WebサーバーがHTTPやHTTPSで使用するポート用のセキュリティグループ                              | ad53f93815c44822ada4bd2be9e7b4ae | []   |
| a86dc1e6-6103-4063-b308-8df5d0e8a7ef | 1710213016994-plttest        |                                                                                               | 12151bc47efa4aac9c91aa3591c54bae | []   |
| b9a7db01-9cd7-40ce-99ce-13991d53e5d8 | IPv4v6-Mail                  | メール送受信で利用されるプロトコル(SMTP,SMTPS,POP3,POP3S,IMAP,IMAPS)が使用するポート用のセキュリティグループ | ad53f93815c44822ada4bd2be9e7b4ae | []   |
| bd737f47-0b9f-4505-89d6-579685bc9baa | 1718679639445-plttest-update |                                                                                               | 12151bc47efa4aac9c91aa3591c54bae | []   |
| cb3f7b37-f0bd-48a7-ab95-0ccb38be5a14 | IPv4v6-FTP                   | FTP,FTPSで使用するポート用のセキュリティグループ                                              | ad53f93815c44822ada4bd2be9e7b4ae | []   |
| d90789dd-e30b-4a6b-b3ba-fe149fa2b07a | IPv4v6-ICMP                  | ICMP用のセキュリティグループ                                                                  | ad53f93815c44822ada4bd2be9e7b4ae | []   |
| e438b9f5-650a-4f55-957d-b4f80990a1da | 1729566024574-plttest-update |                                                                                               | 12151bc47efa4aac9c91aa3591c54bae | []   |
+--------------------------------------+------------------------------+-----------------------------------------------------------------------------------------------+----------------------------------+------+

    

8.3 セキュリティグループの適用

openstack port set --security-group IPv4v6-SSH {ポートID}

    
  • ポートID:先ほど取得したポートIDに置き換えてください。
  • IPv4v6-SSH:適用するセキュリティグループの名前です。

8.4 セキュリティグループの適用結果の確認

以下のコマンドを実行し、security_group_ids の項目に追加したセキュリティグループのIDが記載されていることを確認します。

※ デフォルトのセキュリティグループについての概念説明は別途掲載必要と思われます。

openstack port show {ポートID}

+-------------------------+--------------------------------------------------------------------------------------------------+
| Field                   | Value                                                                                            |
+-------------------------+--------------------------------------------------------------------------------------------------+
| admin_state_up          | UP                                                                                               |
| allowed_address_pairs   | ip_address='{snip}', mac_address='{snip}'                                                        |
| binding_host_id         | None                                                                                             |
| binding_profile         | None                                                                                             |
| binding_vif_details     | None                                                                                             |
| binding_vif_type        | None                                                                                             |
| binding_vnic_type       | normal                                                                                           |
| created_at              | None                                                                                             |
| data_plane_status       | None                                                                                             |
| description             | None                                                                                             |
| device_id               | {snip}                                                                                           |
| device_owner            | compute:cell1-az1                                                                                |
| device_profile          | None                                                                                             |
| dns_assignment          | None                                                                                             |
| dns_domain              | None                                                                                             |
| dns_name                | None                                                                                             |
| extra_dhcp_opts         |                                                                                                  |
| fixed_ips               | ip_address='{snip}', subnet_id='{snip}'                                                          |
|                         | ip_address='{snip}', subnet_id='{snip}'                                                          |
| hardware_offload_type   | None                                                                                             |
| hints                   |                                                                                                  |
| id                      | {snip}                                                                                           |
| ip_allocation           | None                                                                                             |
| mac_address             | {snip}                                                                                           |
| name                    | ext-i_100000-o_100000-p_0a                                                                       |
| network_id              | {snip}                                                                                           |
| numa_affinity_policy    | None                                                                                             |
| port_security_enabled   | False                                                                                            |
| project_id              | {snip}                                                                                           |
| propagate_uplink_status | None                                                                                             |
| resource_request        | None                                                                                             |
| revision_number         | None                                                                                             |
| qos_network_policy_id   | 7464b2cb-4d3e-4f1b-9eb0-d7c757753668                                                             |
| qos_policy_id           | None                                                                                             |
| security_group_ids      | 5147acab-c7a8-4d54-a445-34bc89023a42, 51e608a1-1b0e-4974-ac53-b44246fe3f94                       |
| status                  | ACTIVE                                                                                           |
| tags                    |                                                                                                  |
| trunk_details           | None                                                                                             |
| updated_at              | None                                                                                             |
+-------------------------+--------------------------------------------------------------------------------------------------+

9. SSHでサーバーに接続

作成したサーバーにSSHで接続します。

ssh -i MY_KEY.pem root@IP_ADDRESS

Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.8.0-36-generic x86_64)
 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro
 System information as of Tue Nov 12 01:27:46 PM JST 2024
  System load:           0.0
  Usage of /:            2.9% of 98.25GB
  Memory usage:          12%
  Swap usage:            0%
  Processes:             128
  Users logged in:       0
  IPv4 address for eth0: {snip}
  IPv6 address for eth0: {snip}
Expanded Security Maintenance for Applications is not enabled.
196 updates can be applied immediately.
To see these additional updates run: apt list --upgradable
Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status
root@{snip}:~#
  • -i MY_KEY.pem:SSH接続に使用する秘密鍵ファイルを指定します。
  • root@IP_ADDRESSrootユーザーでサーバーのIPアドレスに接続します。IP_ADDRESSは先ほど取得したIPアドレスに置き換えてください。

10. リソース削除

サーバーと関連リソースを削除します。

10.1 サーバーの削除

openstack server delete {サーバーIDまたはサーバー名}

(エラー等のメッセージがなく、何も結果が返ってこなければ正常にリクエストが受け入れていることを示します)

10.2 ボリュームの削除

openstack volume delete {ボリュームIDまたはボリューム名}

10.3 キーペアの削除(必要に応じて)

openstack keypair delete {KEY_NAME}
  • KEY_NAME:削除するキーペアの名前です。