ネットワークトポロジーの自動割り当て

ネットワークトポロジーの自動割り当て

Mitaka で追加された自動割り当て (auto-allocation) 機能を使うと、エンドユーザーが外部へ接続できる構成をセットアップする手順を単純化できます。この機能は Get Me A Network (私にネットワークを) とも呼ばれます。

オペレーターは、デフォルトの外部ネットワークとデフォルトのサブネットプール (IPv4 用が 1 つ、IPv6 用が 1 つ、もしくは IPv4/IPv6 用にそれぞれ 1 つ、のいずれか) を作成する必要があります。これらが用意されると、ユーザーは コマンド 1 つで自動割り当てのトポロジーを得られるようになります。

デプロイメントで自動割り当てを有効にする

この機能を使用するには、 neutron サービスで以下の拡張機能が有効になっている必要があります。

  • auto-allocated-topology
  • subnet_allocation
  • external-net
  • router

エンドユーザーが自動割り当て機能を利用できるようになる前に、オペレーターは自動割り当てネットワークトポロジーの作成に使用されるリソースを作成しなければいけません。このためには、以下の手順を実行します。

  1. デフォルトの外部ネットワークを用意します

    Setting up an external network is described in OpenStack Administrator Guide. Assuming the external network to be used for the auto-allocation feature is named public, make it the default external network with the following command:

    $ neutron net-update public --is-default=True
    

    注釈

    The flag --default (and --no-default flag) is only effective with external networks and has no effects on regular (or internal) networks.

  2. デフォルトのサブネットプールを作成します。

    自動割り当て機能を使用するには、デフォルトサブネットプールが少なくとも 1 つ必要です。 IPv4 が 1 つ、 IPv6 が 1 つ、IPv4/IPv6 それぞれが 1 つ、のいずれか。

    $ neutron subnetpool-create --shared --is-default True\
      --pool-prefix 10.0.0.0/24 --default-prefixlen 26 shared-default
    
    Created a new subnetpool:
    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | address_scope_id  |                                      |
    | default_prefixlen | 26                                   |
    | default_quota     |                                      |
    | id                | 7923bc31-4ca4-4c95-9ec2-d69b21775ee2 |
    | ip_version        | 4                                    |
    | is_default        | True                                 |
    | max_prefixlen     | 32                                   |
    | min_prefixlen     | 8                                    |
    | name              | shared-default                       |
    | prefixes          | 10.0.0.0/24                          |
    | shared            | True                                 |
    | tenant_id         | 375e91c9dc854aaa8c8fd93f4b24e87c     |
    +-------------------+--------------------------------------+
    
    $ neutron subnetpool-create --shared --is-default True\
      --pool-prefix 2001:db8:8000::/48 --default-prefixlen 64 default-v6
    
    Created a new subnetpool:
    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | address_scope_id  |                                      |
    | default_prefixlen | 64                                   |
    | default_quota     |                                      |
    | id                | 953b28ab-5afa-42ea-8f44-44bf111672b1 |
    | ip_version        | 6                                    |
    | is_default        | True                                 |
    | max_prefixlen     | 128                                  |
    | min_prefixlen     | 64                                   |
    | name              | default-v6                           |
    | prefixes          | 2001:db8:8000::/48                   |
    | shared            | True                                 |
    | tenant_id         | 375e91c9dc854aaa8c8fd93f4b24e87c     |
    +-------------------+--------------------------------------+
    

Get Me A Network

運用者が上述のリソースを用意した環境では、以下のコマンドで、ユーザーは自動割り当てされたネットワークトポロジーを得られます。

$ neutron auto-allocated-topology-show
+-----------+--------------------------------------+
| Field     | Value                                |
+-----------+--------------------------------------+
| id        | 8b835bfb-cae2-4acc-b53f-c16bb5f9a7d0 |
| tenant_id | 3a4e311bcb3545b9b7ad326f93194f8c     |
+-----------+--------------------------------------+

運用者 (や管理者ロールを持つユーザー) は、テナント ID を指定することで、テナント用の自動割り当てされたネットワークトポロジーを取得することもできます。

$ neutron auto-allocated-topology-show 3a4e311bcb3545b9b7ad326f93194f8c
+-----------+--------------------------------------+
| Field     | Value                                |
+-----------+--------------------------------------+
| id        | 8b835bfb-cae2-4acc-b53f-c16bb5f9a7d0 |
| tenant_id | 3a4e311bcb3545b9b7ad326f93194f8c     |
+-----------+--------------------------------------+

このコマンドが返す ID はネットワークで、VM 起動時に指定できます。

$ nova boot --flavor m1.small --image cirros-0.3.4-x86_64-uec\
  --nic net-id=8b835bfb-cae2-4acc-b53f-c16bb5f9a7d0 vm1

ユーザーの自動割り当てトポロジーが変化することはありません。

自動割り当てに必要な要件の検証

自動割り当てに必要なリソースが正しく用意されているかを検証するには、 --dry-run オプションを使用します。

$ neutron auto-allocated-topology-show --dry-run
Deployment error: No default router:external network.

$ neutron net-update public --is-default=True

$ neutron auto-allocated-topology-show --dry-run
Deployment error: No default subnetpools defined.

$ neutron subnetpool-update shared-default --is-default=True

$ neutron auto-allocated-topology-show --dry-run
+---------+-------+
| Field   | Value |
+---------+-------+
| dry-run | pass  |
+---------+-------+

この検証用のオプションはすべてのユーザーで全く同じように動作します。しかし、このオプションは主として管理用のツールと考えられています。必要なリソースを用意するのは運用者だからです。

自動割り当てで作成されるプロジェクトのリソース

自動割り当て機能は、この機能を使うプロジェクト 1 つにつき 1 つのネットワークトポロジーを作成します。プロジェクトに自動割り当てされたネットワークトポロジーには以下のリソースが含まれます。

リソース

名前

ネットワーク

auto_allocated_network

サブネット (IPv4)

auto_allocated_subnet_v4

サブネット (IPv6)

auto_allocated_subnet_v6

ルーター

auto_allocated_router
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.