Openstack Rocky でプライベートクラウドを構築する!(9)

インスタンスの起動にあたって、プロバイダーネットワーク(外部ネットワーク)とセルフサービスネットワーク(内部ネットワーク)を構成しインスタンスを起動します。ひとまず、プロバイダーネットワークでインスタンスを起動してみます。

環境

ソフト

  • Ubuntu 18.04.1 Server 64bit
  • Openstack Rocky

ハード

※仮想マシンでもいけました。

  • CPUx2
  • MEM 8G
  • SSD 30G
  • NIC 2 枚

IP 構成

  • コントローラー ( vm-nfj-osctrln1 )
  • 公開用 ( 外部 ):10.1.55.11/16
  • 管理用 ( 内部 ):10.2.55.11/16
  • コンピュート ( vm-nfj-oscomp1 )
  • 公開用 ( 外部 ):10.1.55.21/16
  • 管理用 ( 内部 ):10.2.55.21/16

仮想ネットワークの構成:プロバイダーネットワーク

コントローラーノード上で管理者CLIを利用可能にします

$ . admin-openrc

仮想ネットワークの作成

  • –share
  • –external
  • –provider-physical-network provider ,–provider-network-type flat

[ml2_type_flat]

flat_networks = provider provider が利用する物理インターフェースは、neutron 構成時に /etc/neutron/plugins/ml2/linuxbridge_agent.ini の [linux_bridge] セクションに指定した I/F です。

[linux_bridge]

physical_interface_mappings = provider:ens160

$ openstack network create  --share --external --provider-physical-network provider --provider-network-type flat provider
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | UP                                   |
| availability_zone_hints   |                                      |
| availability_zones        |                                      |
| created_at                | 2018-11-18T07:28:18Z                 |
| description               |                                      |
| dns_domain                | None                                 |
| id                        | 6ca0d8b8-abfc-41da-9088-fc846cce62c1 |
| ipv4_address_scope        | None                                 |
| ipv6_address_scope        | None                                 |
| is_default                | False                                |
| is_vlan_transparent       | None                                 |
| mtu                       | 1500                                 |
| name                      | provider                             |
| port_security_enabled     | True                                 |
| project_id                | 3b8ce084c51347f38511d61a9f7cd433     |
| provider:network_type     | flat                                 |
| provider:physical_network | provider                             |
| provider:segmentation_id  | None                                 |
| qos_policy_id             | None                                 |
| revision_number           | 0                                    |
| router:external           | External                             |
| segments                  | None                                 |
| shared                    | True                                 |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tags                      |                                      |
| updated_at                | 2018-11-18T07:28:18Z                 |
+---------------------------+--------------------------------------+

サブネットの作成

コマンド書式:

openstack subnet create --network provider \
  --allocation-pool start=START_IP_ADDRESS,end=END_IP_ADDRESS \
  --dns-nameserver DNS_RESOLVER --gateway PROVIDER_NETWORK_GATEWAY \
  --subnet-range PROVIDER_NETWORK_CIDR provider

説明:

PROVIDER_NETWORK_CIDRプロバイダネットワークのCIDR
START_IP_ADDRESSプロバイダネットワークでDHCPにより割り当てるIP範囲の先頭
END_IP_ADDRESSプロバイダネットワークでDHCPにより割り当てるIP範囲の終端
DNS_RESOLVERDNSサーバーのIP
PROVIDER_NETWORK_GATEWAYデフォルトゲートウェイ

コマンドを作成:
うちのテスト環境ではこんな感じにしました。

openstack subnet create --network provider \
  --allocation-pool start=10.1.55.101,end=10.1.55.250 \
  --dns-nameserver 8.8.8.8 --gateway 10.1.1.254 \
  --subnet-range 10.1.0.0/16 provider
$ openstack subnet create --network provider --allocation-pool start=10.1.55.101,end=10.1.55.250 --dns-nameserver 8.8.8.8 --gateway 10.1.1.254 --subnet-range 10.1.0.0/16 provider
+-------------------+--------------------------------------+
| Field             | Value                                |
+-------------------+--------------------------------------+
| allocation_pools  | 10.1.55.101-10.1.55.250              |
| cidr              | 10.1.0.0/16                          |
| created_at        | 2018-11-18T07:51:13Z                 |
| description       |                                      |
| dns_nameservers   | 8.8.8.8                              |
| enable_dhcp       | True                                 |
| gateway_ip        | 10.1.1.254                           |
| host_routes       |                                      |
| id                | 3ec353ac-9219-4ad6-a921-28de0ebab155 |
| ip_version        | 4                                    |
| ipv6_address_mode | None                                 |
| ipv6_ra_mode      | None                                 |
| name              | provider                             |
| network_id        | 6ca0d8b8-abfc-41da-9088-fc846cce62c1 |
| project_id        | 3b8ce084c51347f38511d61a9f7cd433     |
| revision_number   | 0                                    |
| segment_id        | None                                 |
| service_types     |                                      |
| subnetpool_id     | None                                 |
| tags              |                                      |
| updated_at        | 2018-11-18T07:51:13Z                 |
+-------------------+--------------------------------------+

フレーバーの作成

インスタンス起動時に選択するプリセットされたインスタンスリソースをフレーバーと呼ぶようです。CirrOS 用に m1.nano フレーバーを作成します。

$ openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
+----------------------------+---------+
| Field                      | Value   |
+----------------------------+---------+
| OS-FLV-DISABLED:disabled   | False   |
| OS-FLV-EXT-DATA:ephemeral  | 0       |
| disk                       | 1       |
| id                         | 0       |
| name                       | m1.nano |
| os-flavor-access:is_public | True    |
| properties                 |         |
| ram                        | 64      |
| rxtx_factor                | 1.0     |
| swap                       |         |
| vcpus                      | 1       |
+----------------------------+---------+

作成したフレーバーを確認

$ openstack flavor list
+----+---------+-----+------+-----------+-------+-----------+
| ID | Name    | RAM | Disk | Ephemeral | VCPUs | Is Public |
+----+---------+-----+------+-----------+-------+-----------+
| 0  | m1.nano |  64 |    1 |         0 |     1 | True      |
+----+---------+-----+------+-----------+-------+-----------+

キーペアの生成

demo プロジェクトの認証情報をCLIにロードしてキーペアを作成します。既存のキーを利用する場合は ssh-keygen コマンドの実行は不要です。

$ . demo-openrc
$ ssh-keygen -q -N ""
$ openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
+-------------+-------------------------------------------------+
| Field       | Value                                           |
+-------------+-------------------------------------------------+
| fingerprint | 0e:83:f8:5e:9e:13:7f:56:41:6d:00:63:c8:c1:cc:c6 |
| name        | mykey                                           |
| user_id     | 3176d2b4e6a0490ab8624336c299a6e4                |
+-------------+-------------------------------------------------+

追加されたキーペアの確認

$ openstack keypair list
+-------+-------------------------------------------------+
| Name  | Fingerprint                                     |
+-------+-------------------------------------------------+
| mykey | 0e:83:f8:5e:9e:13:7f:56:41:6d:00:63:c8:c1:cc:c6 |
+-------+-------------------------------------------------+

セキュリティグループの追加

ICMP ( ping ) の許可

$ openstack security group rule create --proto icmp default
+-------------------+--------------------------------------+
| Field             | Value                                |
+-------------------+--------------------------------------+
| created_at        | 2018-11-18T08:10:28Z                 |
| description       |                                      |
| direction         | ingress                              |
| ether_type        | IPv4                                 |
| id                | c527c34f-0788-4e3f-8a00-bedb4d100873 |
| name              | None                                 |
| port_range_max    | None                                 |
| port_range_min    | None                                 |
| project_id        | 90cd75bfbfd648e995fb45784ed95e0e     |
| protocol          | icmp                                 |
| remote_group_id   | None                                 |
| remote_ip_prefix  | 0.0.0.0/0                            |
| revision_number   | 0                                    |
| security_group_id | 7febfe9a-6c48-4e3f-bd9c-8eadca685c96 |
| updated_at        | 2018-11-18T08:10:28Z                 |
+-------------------+--------------------------------------+

SSH アクセスの許可

$ openstack security group rule create --proto tcp --dst-port 22 default
+-------------------+--------------------------------------+
| Field             | Value                                |
+-------------------+--------------------------------------+
| created_at        | 2018-11-18T08:11:40Z                 |
| description       |                                      |
| direction         | ingress                              |
| ether_type        | IPv4                                 |
| id                | 857eac22-71cf-4069-8985-b4e6bbd47f53 |
| name              | None                                 |
| port_range_max    | 22                                   |
| port_range_min    | 22                                   |
| project_id        | 90cd75bfbfd648e995fb45784ed95e0e     |
| protocol          | tcp                                  |
| remote_group_id   | None                                 |
| remote_ip_prefix  | 0.0.0.0/0                            |
| revision_number   | 0                                    |
| security_group_id | 7febfe9a-6c48-4e3f-bd9c-8eadca685c96 |
| updated_at        | 2018-11-18T08:11:40Z                 |
+-------------------+--------------------------------------+

インスタンス起動に必要な項目の確認

demoプロジェクトのCLIを読み込みます

$ . demo-openrc

利用可能なフレーバーを確認します

$ openstack flavor list
+----+---------+-----+------+-----------+-------+-----------+
| ID | Name    | RAM | Disk | Ephemeral | VCPUs | Is Public |
+----+---------+-----+------+-----------+-------+-----------+
| 0  | m1.nano |  64 |    1 |         0 |     1 | True      |
+----+---------+-----+------+-----------+-------+-----------+

利用可能なイメージを確認します

$ openstack image list
+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| 6439791d-542b-41fa-a91c-64eaa552e29e | cirros | active |
+--------------------------------------+--------+--------+

利用可能な仮想ネットワークを確認します

$ openstack network list
+--------------------------------------+----------+--------------------------------------+
| ID                                   | Name     | Subnets                              |
+--------------------------------------+----------+--------------------------------------+
| 6ca0d8b8-abfc-41da-9088-fc846cce62c1 | provider | 3ec353ac-9219-4ad6-a921-28de0ebab155 |
+--------------------------------------+----------+--------------------------------------+

利用可能なセキュリティグループを確認します。

$ openstack security group list
+--------------------------------------+---------+------------------------+----------------------------------+------+
| ID                                   | Name    | Description            | Project                          | Tags |
+--------------------------------------+---------+------------------------+----------------------------------+------+
| 7febfe9a-6c48-4e3f-bd9c-8eadca685c96 | default | Default security group | 90cd75bfbfd648e995fb45784ed95e0e | []   |
+--------------------------------------+---------+------------------------+----------------------------------+------+

インスタンスの起動

–nic net-id= には openstack network list で確認した provider ネットワークの ID を指定します。(1つしかネットワークがない場合は省略も可能)

$ openstack server create --flavor m1.nano --image cirros --nic net-id=6ca0d8b8-abfc-41da-9088-fc846cce62c1 --security-group default --key-name mykey provider-instance
+-----------------------------+-----------------------------------------------+
| Field                       | Value                                         |
+-----------------------------+-----------------------------------------------+
| OS-DCF:diskConfig           | MANUAL                                        |
| OS-EXT-AZ:availability_zone |                                               |
| 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                   | ZsMu9C2MJUKN                                  |
| config_drive                |                                               |
| created                     | 2018-11-18T08:16:16Z                          |
| flavor                      | m1.nano (0)                                   |
| hostId                      |                                               |
| id                          | c7019bb3-b1db-4ab4-a453-91d2b3d303cf          |
| image                       | cirros (6439791d-542b-41fa-a91c-64eaa552e29e) |
| key_name                    | mykey                                         |
| name                        | provider-instance                             |
| progress                    | 0                                             |
| project_id                  | 90cd75bfbfd648e995fb45784ed95e0e              |
| properties                  |                                               |
| security_groups             | name='7febfe9a-6c48-4e3f-bd9c-8eadca685c96'   |
| status                      | BUILD                                         |
| updated                     | 2018-11-18T08:16:16Z                          |
| user_id                     | 3176d2b4e6a0490ab8624336c299a6e4              |
| volumes_attached            |                                               |
+-----------------------------+-----------------------------------------------+

Horizon 上でも確認

ちゃんとインスタンスが見えてIPも振られています。ようやくプライベートクラウドらしくなってきました。

インスタンスに仮想コンソールからアクセスする

$ sudo apt install nova-consoleauth

$ openstack console url show provider-instance
+——-+————————————————————————————–+
| Field | Value |
+——-+————————————————————————————–+
| type | novnc |
| url | http://vm-nfj-osctrln1:6080/vnc_auto.html?token=e452f007-500b-4957-abb1-17ea5e2d67c9 |
+——-+————————————————————————————–+

トラブルシューティング

スポンサーリンク