Open Stack(pike)のインストールを実施します。*1
構成などは前回記事を確認してください。
- 各種サービスなどのインストール
- Keystone
- Glance
- Nova1:Controller
- Nova2:Compute
- Horizon
1.各種サービスなどのインストール
対象:Controllerのみ
1-1.OpenStackクライアント
apt -y install python-openstackclient
1-2.MySQL
apt -y install mariadb-server python-pymysql vi /etc/mysql/mariadb.conf.d/99-openstack.cnf [mysqld] bind-address = 10.10.0.100 default-storage-engine = innodb innodb_file_per_table = on max_connections = 4096 collation-server = utf8_general_ci character-set-server = utf8 systemctl restart mysql mysql_secure_installation #パスワードは全てopenstackとします。
以下出力例です。*2
root@controller01:~# mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): Enter OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] Enter New password: openstackと入力 Re-enter new password: openstackと入力 Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] Enter ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] Enter ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] Enter - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] Enter ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!
1-3.RabbitMQ
apt -y install rabbitmq-server rabbitmqctl add_user openstack rabbit rabbitmqctl set_permissions openstack ".*" ".*" ".*"
2.Keystone
対象:Controllerのみ
2-1.DBの設定
mysql CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone'; quit;
以下出力例です。
root@controller01:~# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 40 Server version: 10.0.38-MariaDB-0ubuntu0.16.04.1 Ubuntu 16.04 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> CREATE DATABASE keystone; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> quit; Bye root@controller01:~#
2-2.インストールと設定
apt -y install keystone apache2 libapache2-mod-wsgi vi /etc/keystone/keystone.conf [database] #connection = sqlite:////var/lib/keystone/keystone.db connection = mysql+pymysql://keystone:keystone@controller01/keystone [token] provider = fernet
2-3.DB登録と初期化
su -s /bin/sh -c "keystone-manage db_sync" keystone keystone-manage fernet_setup \ --keystone-user keystone --keystone-group keystone keystone-manage credential_setup \ --keystone-user keystone --keystone-group keystone
2-4.Endpoint設定
keystone-manage bootstrap --bootstrap-password openstack \ --bootstrap-admin-url http://controller01:35357/v3/ \ --bootstrap-internal-url http://controller01:5000/v3/ \ --bootstrap-public-url http://controller01:5000/v3/ \ --bootstrap-region-id RegionOne
2-5.Webサービス設定&再起動
sed -i '1s/^/ServerName controller01\n&/' /etc/apache2/apache2.conf systemctl restart apache2
2-6.環境変数ファイル生成
cat >> ~/adminrc <<EOF export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_PROJECT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=openstack export OS_AUTH_URL=http://controller01:35357/v3 export OS_IDENTITY_API_VERSION=3 EOF cat >> ~/demorc <<EOF export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_PROJECT_NAME=demo export OS_USERNAME=demo export OS_PASSWORD=demo export OS_AUTH_URL=http://controller01:35357/v3 export OS_IDENTITY_API_VERSION=3 EOF source adminrc #これ以降、openstackコマンドを打つときは、 #sshログイン直後に上記adminrcを読み込んでください。 #読み込まずにopenstackコマンドを打つと以下のエラーが表示されます。 #demorcはほぼ使用しないと思いますが念のため。 root@controller01:~# openstack endpoint list Missing value auth-url required for auth plugin password
2-7.動作確認
openstack endpoint list openstack service list
2-8.ProjectやRoleの登録
openstack project create --description "Service Project" service openstack project create --description "Demo Project" demo openstack user create demo --password=demo openstack role create user openstack role add --project demo --user demo user
3.Glance
対象:Controllerのみ
3-1.DBの設定
mysql CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance'; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance'; quit;
3-2.ユーザ登録・サービス登録・Endpoint作成・インストール
openstack user create glance --domain default --password=glance
openstack role add --project service --user glance admin
openstack service create --name glance \
--description "OpenStack Image" image
openstack endpoint create --region RegionOne \
image public http://controller01:9292
openstack endpoint create --region RegionOne \
image internal http://controller01:9292
openstack endpoint create --region RegionOne \
image admin http://controller01:9292
apt -y install glance
3-3.glance-api.comf設定
vi /etc/glance/glance-api.conf [database] connection = mysql+pymysql://glance:glance@controller01/glance [keystone_authtoken] auth_uri = http://controller01:5000 auth_url = http://controller01:35357 memcached_servers = controller01:11211 auth_type = password user_domain_name = default project_domain_name = default project_name = service username = glance password = glance [paste_deploy] flavor = keystone [glance_store] stores = file,http default_store = file filesystem_store_datadir = /var/lib/glance/images
3-4.glance-registry.comf設定
vi /etc/glance/glance-registry.conf [database] connection = mysql+pymysql://glance:glance@controller01/glance [keystone_authtoken] auth_uri = http://controller01:5000 auth_url = http://controller01:35357 memcached_servers = controller01:11211 auth_type = password user_domain_name = default project_domain_name = default project_name = service username = glance password = glance [paste_deploy] flavor = keystone
3-5.DB登録&設定ファイル読込み
su -s /bin/sh -c "glance-manage db_sync" glance systemctl restart glance-registry glance-api
3-6.イメージ登録
mkdir /tmp/images #cirrosの登録 wget -P /tmp/images http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img openstack image create "cirros-0.4.0" \ --file /tmp/images/cirros-0.4.0-x86_64-disk.img \ --disk-format qcow2 \ --container-format bare \ --public #ubuntuの登録 wget -P /tmp/images http://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img openstack image create "ubuntu-xenial-16.04" \ --file /tmp/images/xenial-server-cloudimg-amd64-disk1.img \ --disk-format qcow2 \ --container-format bare \ --public #登録イメージの確認 openstack image list root@controller01:~# openstack image list +--------------------------------------+---------------------+--------+ | ID | Name | Status | +--------------------------------------+---------------------+--------+ | 749433d2-2f69-47bf-9de7-a0a9e3a72bb6 | cirros-0.4.0 | active | | 6819234c-4757-41d8-867a-c3b44a9f5a47 | ubuntu-xenial-16.04 | active | +--------------------------------------+---------------------+--------+
3-7.簡易動作確認
この時点で以下のように登録されていればOKです。
openstack endpoint list
openstack service list
root@controller01:~# openstack endpoint list
+----------------------------------+-----------+--------------+--------------+---------+-----------+-------------------------------+
| ID | Region | Service Name | Service Type | Enabled | Interface | URL |
+----------------------------------+-----------+--------------+--------------+---------+-----------+-------------------------------+
| 266e4c678cda43ab9bec4a70ddccfb97 | RegionOne | glance | image | True | internal | http://controller01:9292 |
| 6256b9ec413d4a9ca8bc1feb90448260 | RegionOne | glance | image | True | public | http://controller01:9292 |
| 7ab5e26b0f524c60a9ba33870283940a | RegionOne | keystone | identity | True | admin | http://controller01:35357/v3/ |
| e414354758e04ac7802ba300a864258f | RegionOne | keystone | identity | True | internal | http://controller01:5000/v3/ |
| e8a1585c91754424a2c7432e2bb31116 | RegionOne | keystone | identity | True | public | http://controller01:5000/v3/ |
| f1fb03de6fb24d6e818b239ad0276083 | RegionOne | glance | image | True | admin | http://controller01:9292 |
+----------------------------------+-----------+--------------+--------------+---------+-----------+-------------------------------+
root@controller01:~# openstack service list
+----------------------------------+----------+----------+
| ID | Name | Type |
+----------------------------------+----------+----------+
| 42e7a20b30944518ae5c345aab323d3d | glance | image |
| f3d100b18b794f649ee80c651787eb22 | keystone | identity |
+----------------------------------+----------+----------+
4.Nova1:Controller
対象:Controllerのみ
4-1.DBの設定・ユーザ登録・サービス登録・Endpoint作成
#DB設定 mysql CREATE DATABASE nova; CREATE DATABASE nova_api; CREATE DATABASE nova_cell0; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova'; GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'nova'; GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'nova'; GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'nova'; GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'nova'; quit; #ユーザ登録 openstack user create nova --domain default --password=nova openstack user create placement \ --domain default --password=placement openstack role add --project service --user nova admin openstack role add --project service --user placement admin #サービス登録 openstack service create --name nova \ --description "OpenStack Compute" compute openstack service create --name placement \ --description "Placement API" placement #Endpoint作成 openstack endpoint create --region RegionOne \ compute public http://controller01:8774/v2.1 openstack endpoint create --region RegionOne \ compute internal http://controller01:8774/v2.1 openstack endpoint create --region RegionOne \ compute admin http://controller01:8774/v2.1 openstack endpoint create --region RegionOne \ placement public http://controller01:8778 openstack endpoint create --region RegionOne \ placement internal http://controller01:8778 openstack endpoint create --region RegionOne \ placement admin http://controller01:8778
4-2.インストール・nova.conf設定
#インストール apt -y install nova-api nova-conductor nova-consoleauth \ nova-novncproxy nova-scheduler nova-placement-api #nova.conf設定 vi /etc/nova/nova.conf [DEFAULT] transport_url = rabbit://openstack:rabbit@controller01 my_ip = 10.10.0.100 [api_database] #connection = sqlite:////var/lib/nova/nova_api.sqlite connection = mysql+pymysql://nova:nova@controller01/nova_api [database] #connection = sqlite:////var/lib/nova/nova.sqlite connection = mysql+pymysql://nova:nova@controller01/nova [vnc] enabled = true vncserver_listen = 10.10.0.100 vncserver_proxyclient_address = 10.10.0.100 [api] auth_strategy= keystone [keystone_authtoken] auth_uri = http://controller01:5000 auth_url = http://controller01:35357 memcached_servers = controller01:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = nova password = nova [glance] api_servers = http://controller01:9292 [oslo_concurrency] lock_path = /var/lib/nova/tmp [placement] #os_region_name = openstack os_region_name = RegionOne auth_url = http://controller01:35357/v3 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = placement password = placement
4-3.DB登録&設定ファイル読込み
su -s /bin/sh -c "nova-manage api_db sync" nova su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova su -s /bin/sh -c "nova-manage db sync" nova systemctl restart nova-api nova-consoleauth nova-scheduler nova-conductor nova-novncproxy
以下出力例です。
root@controller01:~# su -s /bin/sh -c "nova-manage api_db sync" nova root@controller01:~# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova root@controller01:~# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova e0e3f86a-8b85-4184-9287-7e4dcd53db81 root@controller01:~# su -s /bin/sh -c "nova-manage db sync" nova /usr/lib/python2.7/dist-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `block_device_mapping_instance_uuid_virtual_name_device_name_idx`. This is deprecated and will be disallowed in a future release.') result = self._query(query) /usr/lib/python2.7/dist-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `uniq_instances0uuid`. This is deprecated and will be disallowed in a future release.') result = self._query(query) root@controller01:~# systemctl restart nova-api nova-consoleauth nova-scheduler nova-conductor nova-novncproxy root@controller01:~#
This is deprecated and will be disallowed in a future release.と表示されますが、このまま先に進めてください。
<補足>
上記と似たようなコマンドで、以下の設定を実施する必要があります。
後ほど設定しますので現段階では不要です。
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
4-4.簡易動作確認
この時点で以下のように登録されていればOKです。
openstack endpoint list
openstack service list
root@controller01:~# openstack endpoint list
+----------------------------------+-----------+--------------+--------------+---------+-----------+-------------------------------+
| ID | Region | Service Name | Service Type | Enabled | Interface | URL |
+----------------------------------+-----------+--------------+--------------+---------+-----------+-------------------------------+
| 266e4c678cda43ab9bec4a70ddccfb97 | RegionOne | glance | image | True | internal | http://controller01:9292 |
| 4a8adf71ef9848b096819cf12e54c747 | RegionOne | placement | placement | True | public | http://controller01:8778 |
| 6256b9ec413d4a9ca8bc1feb90448260 | RegionOne | glance | image | True | public | http://controller01:9292 |
| 7ab5e26b0f524c60a9ba33870283940a | RegionOne | keystone | identity | True | admin | http://controller01:35357/v3/ |
| 8578d6dedb1742e2a190b261cddd831b | RegionOne | placement | placement | True | admin | http://controller01:8778 |
| 92a1b113381d4bd692879d335776928b | RegionOne | nova | compute | True | admin | http://controller01:8774/v2.1 |
| a8a9533b8b6345a1ba9fbedf840434d8 | RegionOne | nova | compute | True | public | http://controller01:8774/v2.1 |
| de3c9c2ca4484068b7e24a1dca3064a9 | RegionOne | placement | placement | True | internal | http://controller01:8778 |
| e414354758e04ac7802ba300a864258f | RegionOne | keystone | identity | True | internal | http://controller01:5000/v3/ |
| e8a1585c91754424a2c7432e2bb31116 | RegionOne | keystone | identity | True | public | http://controller01:5000/v3/ |
| f1fb03de6fb24d6e818b239ad0276083 | RegionOne | glance | image | True | admin | http://controller01:9292 |
| fe3a19d428c24042acb57218376f5fa6 | RegionOne | nova | compute | True | internal | http://controller01:8774/v2.1 |
+----------------------------------+-----------+--------------+--------------+---------+-----------+-------------------------------+
root@controller01:~# openstack service list
+----------------------------------+-----------+-----------+
| ID | Name | Type |
+----------------------------------+-----------+-----------+
| 35ae7499a8474de6b2650335cee9c38e | placement | placement |
| 42e7a20b30944518ae5c345aab323d3d | glance | image |
| bf8c25de6879401ea107f0462e8da1a4 | nova | compute |
| f3d100b18b794f649ee80c651787eb22 | keystone | identity |
+----------------------------------+-----------+-----------+
5.Nova2:Compute
対象:Computeのみ
「x」となっている箇所は、Compute01と02でそれぞれ固有の値*3を入れる必要があります。
5-1.インストール・nova.conf設定・設定読込み
#インストール apt -y install nova-compute #nova.conf設定 vi /etc/nova/nova.conf [DEFAULT] transport_url = rabbit://openstack:rabbit@controller01 my_ip = 10.10.0.10x ##xについて## #compute01=1, compute02=2となります。 [api] auth_strategy= keystone [keystone_authtoken] auth_uri = http://controller01:5000 auth_url = http://controller01:35357 memcached_servers = controller01:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = nova password = nova [vnc] vncserver_proxyclient_address = 10.10.0.10x enabled = True vncserver_listen = 0.0.0.0 novncproxy_base_url = http://controller01:6080/vnc_auto.html ##xについて、上記と同様です## [glance] api_servers = http://controller01:9292 [oslo_concurrency] lock_path = /var/lib/nova/tmp [placement] #os_region_name = openstack os_region_name = RegionOne auth_url = http://controller01:35357/v3 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = placement password = placement ##VMWare上のu16.04の場合## [libvirt] hw_machine_type = x86_64=pc-i440fx-xenial #設定読込み systemctl restart nova-compute
5-2.簡易動作確認
この時点で以下のようにCompute01と02が登録されていればOKです。
Controller01で以下のコマンドにて確認してください。
openstack compute service list
root@controller01:~# openstack compute service list
+----+------------------+--------------+----------+---------+-------+----------------------------+
| ID | Binary | Host | Zone | Status | State | Updated At |
+----+------------------+--------------+----------+---------+-------+----------------------------+
| 1 | nova-scheduler | controller01 | internal | enabled | up | 2019-05-27T14:07:43.000000 |
| 2 | nova-consoleauth | controller01 | internal | enabled | up | 2019-05-27T14:07:43.000000 |
| 3 | nova-conductor | controller01 | internal | enabled | up | 2019-05-27T14:07:44.000000 |
| 7 | nova-compute | compute01 | nova | enabled | up | 2019-05-27T14:07:45.000000 |
| 8 | nova-compute | compute02 | nova | enabled | up | 2019-05-27T14:07:41.000000 |
+----+------------------+--------------+----------+---------+-------+----------------------------+
6.Horizon
対象:Controllerのみ
6-1.インストール・nova.conf設定・設定読込み
#インストール apt -y install openstack-dashboard #nova.conf設定 vi /etc/openstack-dashboard/local_settings.py #Defaultで以下の設定が入っていますが、全てコメントアウトしてください。 #OPENSTACK_HOST = "127.0.0.1" #OPENSTACK_KEYSTONE_URL = "http://%s:5000/v2.0" % OPENSTACK_HOST #OPENSTACK_KEYSTONE_DEFAULT_ROLE = "_member_" #以下の設定を投入。 OPENSTACK_HOST = "controller01" OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user" OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default" #OPENSTACK_API_VERSIONSの設定は、Defaultでコメントアウトされているため、 #以下の設定をそのまま投入してください。 OPENSTACK_API_VERSIONS = { "identity": 3, "image": 2, "volume": 2, } #Defaultで以下の設定が入っていますが、全てコメントアウトしてください。 #かなり画面をスクロールしないと最後まで表示されないと思います。 #OPENSTACK_NEUTRON_NETWORK = { # 'enable_router': True, # 'enable_quotas': True, # 'enable_ipv6': True, # 'enable_distributed_router': False, # 'enable_ha_router': False, # 'enable_fip_topology_check': True, # Default dns servers you would like to use when a subnet is # created. This is only a default, users can still choose a different # list of dns servers when creating a new subnet. # The entries below are examples only, and are not appropriate for # real deployments # 'default_dns_nameservers': ["8.8.8.8", "8.8.4.4", "208.67.222.222"], # Set which provider network types are supported. Only the network types # in this list will be available to choose from when creating a network. # Network types include local, flat, vlan, gre, vxlan and geneve. # 'supported_provider_types': ['*'], # You can configure available segmentation ID range per network type # in your deployment. # 'segmentation_id_range': { # 'vlan': [1024, 2048], # 'vxlan': [4094, 65536], # }, # You can define additional provider network types here. # 'extra_provider_types': { # 'awesome_type': { # 'display_name': 'Awesome New Type', # 'require_physical_network': False, # 'require_segmentation_id': True, # } # }, # Set which VNIC types are supported for port binding. Only the VNIC # types in this list will be available to choose from when creating a # port. # VNIC types include 'normal', 'direct', 'direct-physical', 'macvtap', # 'baremetal' and 'virtio-forwarder' # Set to empty list or None to disable VNIC type selection. # 'supported_vnic_types': ['*'], # Set list of available physical networks to be selected in the physical # network field on the admin create network modal. If it's set to an empty # list, the field will be a regular input field. # e.g. ['default', 'test'] # 'physical_networks': [], #} #以下の設定を投入。 #現段階では全てFalseでOKです。後でrouterとdistributed_routerをTrueにします。 OPENSTACK_NEUTRON_NETWORK = { 'enable_router': False, 'enable_quotas': False, 'enable_ipv6': False, 'enable_distributed_router': False, 'enable_ha_router': False, 'enable_lb': False, 'enable_firewall': False, 'enable_vpn': False, 'enable_fip_topology_check': False, } #DEFAULT_THEME = 'ubuntu' DEFAULT_THEME = 'default' #設定読込み systemctl reload apache2
6-2.簡易動作確認
以下のURLにアクセスし、ログインしてください。
http://controller01/horizon/
domain | default |
username | admin |
password | openstack |
ログイン画面は以下の通りです。
ログイン後、いくつかのページが開ければOKです。
以上です。
7.最後に
Neutron+OvS+DVR&Trunkをメインの内容にしたいと考えていたため、OpenStack のインストールまで書くのはどうかな?と正直悩みました。
RDO(PackStack)やDevStackを使えば、サクッとできると思うので。。。
しかし、物理筐体のNW周りからスタートしたこと*4により、
という風に、段階的に構築していくことで、
より理解が深まりやすいのではないか?と考えました。
最初からDevStackなどで構築してしまうと、とりあえずDNSでLookupしてPing通るようになったけど、そこから自分がやりたい構成に変更する場合は、どこをいじったらいいのか?すぐにはピンと来ないかなと考えたからです。
というのも、
今回の構成を実際に構築して理解した上で
L2agentであれば、LinuxBridge
L3agentであれば、スタンドアローンRouterやHA Router(VRRP)
に変更することは容易いです。
また、Tungsten FabricやMidoNetに構成変更することも、今回の構成を理解していれば、それほど敷居は高くないかなと考えています。
なので、復習の意味も込めて、OpenStackのインストールも書くことにしました。