ubuntu16.0 安装 openstack
主要參考官方文檔:https://docs.openstack.org/liberty/zh_CN/install-guide-ubuntu/environment-nosql-database.html
檢查是否有如下命令:
root@hett-virtual-machine:/# command
root@hett-virtual-machine:/# prompt
The program 'prompt' is currently not installed. You can install it by typing:
apt install libmodglue1v5
root@hett-virtual-machine:/# sudo apt-get install libmodglue1v5
Reading package lists... Done
Building dependency tree????? ?
Reading state information... Done
The following NEW packages will be installed:
? libmodglue1v5
0 upgraded, 1 newly installed, 0 to remove and 265 not upgraded.
Need to get 68.8 kB of archives.
After this operation, 338 kB of additional disk space will be used.
Get:1 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 libmodglue1v5 amd64 1.19-0ubuntu3 [68.8 kB]
Fetched 68.8 kB in 0s (134 kB/s)? ?
Selecting previously unselected package libmodglue1v5.
(Reading database ... 182546 files and directories currently installed.)
Preparing to unpack .../libmodglue1v5_1.19-0ubuntu3_amd64.deb ...
Unpacking libmodglue1v5 (1.19-0ubuntu3) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up libmodglue1v5 (1.19-0ubuntu3) ...
Processing triggers for libc-bin (2.23-0ubuntu9) ...
root@hett-virtual-machine:/# prompt
prompt (built on Tue Aug 4 16:53:30 UTC 2015)
Copyright (C) 2001-2006? Kasper Peeters <kasper.peeters@aei.mpg.de>
Usage: prompt [program] [args]
沒有的話請安裝如上命令
系統的要求是: 內存8g,硬盤 20g
sudo apt-get update
root@hett-virtual-machine:/# sudo apt-get dist-upgrade
一、搭建基礎環境
192.168.30.145?? controller【2vCPU、4G內存、40G存儲、雙網卡】
192.168.30.146?? compute【2vCPU、4G內存、40G存儲、雙網卡】
1.安裝ssh并配置root密碼
$ sudo apt install ssh
$ sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
2.獲取臨時認證令牌
# openssl rand -hex 10
bdb5cad50653d4e85b7d
3.添加阿里云鏡像
# cp /etc/apt/sources.list /etc/apt/sources.list.bak
# vim /etc/apt/sources.list
deb-src http://archive.Ubuntu.com/ubuntu xenial main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
4.配置網絡接口IP
# ip addr
# vim /etc/network/interfaces
auto ens33
iface ens33 inet static
address 192.168.30.145
netmask 255.255.255.0
gateway 192.168.30.2
dns-nameserver 114.114.114.114
# The provider network interface(配置第二個接口為提供者接口)
auto ens34
iface ens34 inet manual
up ip link set dev $IFACE up
down ip link set dev $IFACE down
5.配置host
# vim /etc/hosts
192.168.30.145?? controller
192.168.30.146?? compute
6.配置NTP時間協議
# dpkg-reconfigure tzdata??????????????? ##修改時區
Current default time zone: 'Asia/Chongqing'
Local time is now:????? Tue Mar 28 20:54:33 CST 2017.
Universal Time is now:? Tue Mar 28 12:54:33 UTC 2017.
# apt -y install chrony?????????????? ##安裝chrony時間同步軟件
?
Controller Node
# vim /etc/chrony/chrony.conf
allow 192.168.30.0/24????????????? ##設置允許該網段與自己同步時間
# service chrony restart
Compute Node
# vim /etc/chrony/chrony.conf
# pool 2.debian.pool.ntp.org offline iburst
server 192.168.30.145 iburst?????? ##設置時間同步服務器地址
# service chrony restart
# chronyc sources
210 Number of sources = 1
MS Name/IP address???????? Stratum Poll Reach LastRx Last sample
===============================================================================
^* controller??????????????????? 3?? 6?? 377??? 33?? -375us[ -422us] +/-?? 66ms
7.在所有節點啟用openstack庫、安裝openstack客戶端
# apt -y install software-properties-common
# add-apt-repository cloud-archive:ocata
# apt -y update && apt -y dist-upgrade
# apt -y install python-openstackclient
8.安裝并配置數據庫服務(Controller Node)
# apt -y install mariadb-server python-pymysql
# vim /etc/mysql/mariadb.conf.d/99-openstack.cnf
[mysqld]
bind-address = 192.168.30.145
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
# service mysql restart
# mysql_secure_installation
##運行該腳本來保證數據庫安全,為root賬戶設置一個合適的密碼
9.安裝并配置Rabbitmq消息隊列服務(Controller Node)
# apt -y install rabbitmq-server
# rabbitmqctl add_user openstack openstack??????? ##添加OpenStack用戶并配置密碼
Creating user "openstack" ...
##允許openstack用戶的配置、寫、讀權限
# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/" ...
# rabbitmqctl list_users?????????? ##列出用戶
Listing users ...
guest[administrator]
openstack[]
# rabbitmqctl list_user_permissions openstack???? ##列出該用戶權限
Listing permissions for user "openstack" ...
/.*.*.*
# rabbitmqctl status???????? ##查看RabbitMQ相關信息
# rabbitmq-plugins list????? ##查看RabbitMQ相關插件
?Configured: E = explicitly enabled; e = implicitly enabled
?| Status:?? * = running on rabbit@openstack1
?|/
?......
# rabbitmq-plugins enable rabbitmq_management?? ##啟用該插件
The following plugins have been enabled:
? mochiweb
? webmachine
? rabbitmq_web_dispatch
? amqp_client
? rabbitmq_management_agent
? rabbitmq_management
Applying plugin configuration to rabbit@openstack1... started 6 plugins.
瀏覽器輸入http://localhost:15672,默認用戶名密碼都是guest。
10.安裝并配置Memcached緩存服務【對認證服務進行緩存】(Controller Node)
# apt -y install memcached python-memcache
# vim /etc/memcached.conf
#-l 127.0.0.1
-l 192.168.30.145
# service memcached restart
二、配置 Keystone 認證服務(Controller Node)
1.創建 keystone 數據庫
# mysql
MariaDB [(none)]> CREATE DATABASE keystone;?????? ##創建 keystone 數據庫
##對 keystone 數據庫授權[用戶名@控制節點...BY 密碼]
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'192.168.30.145' \
???? IDENTIFIED BY 'keystone';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
???? IDENTIFIED BY 'keystone';
MariaDB [(none)]> flush privileges;
2.安裝并配置 Keystone
# apt -y install keystone
# vim /etc/keystone/keystone.conf
[database]---配置數據庫訪問[用戶名:密碼@控制節點]
connection = mysql+pymysql://keystone:keystone@192.168.30.145/keystone
[token]---配置Fernet UUID令牌的提供者
provider = fernet
# grep ^[a-z] /etc/keystone/keystone.conf
connection = mysql+pymysql://keystone:keystone@192.168.30.145/keystone
provider = fernet
3.初始化身份認證服務數據庫
# su -s /bin/sh -c "keystone-manage db_sync" keystone
4.初始化Fernet keys
# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
5.配置引導標識服務
# keystone-manage bootstrap --bootstrap-password qaz123 \
? --bootstrap-admin-url http://192.168.30.145:35357/v3/ \
? --bootstrap-internal-url http://192.168.30.145:5000/v3/ \
? --bootstrap-public-url http://192.168.30.145:5000/v3/ \
? --bootstrap-region-id RegionOne
6.配置 HTTP 服務器
# vim /etc/apache2/apache2.conf
ServerName controller
# service apache2 restart???????????????? ##重啟Apache服務
# service apache2 status
# rm -f /var/lib/keystone/keystone.db???????? ##刪除默認的SQLite數據庫
7.配置管理賬戶
# export OS_USERNAME=admin
# export OS_PASSWORD=qaz123
# export OS_PROJECT_NAME=admin
# export OS_USER_DOMAIN_NAME=Default
# export OS_PROJECT_DOMAIN_NAME=Default
# export OS_AUTH_URL=http://192.168.30.145:35357/v3
# export OS_IDENTITY_API_VERSION=3
8.創建 service 項目
# openstack project create --domain default \
? --description "Service Project" service
+-------------+----------------------------------+
| Field?????? | Value??????????????????????????? |
+-------------+----------------------------------+
| description | Service Project????????????????? |
| domain_id?? | default????????????????????????? |
| enabled???? | True???????????????????????????? |
| id????????? | 945e37831e74484f8911fb742c925926 |
| is_domain?? | False??????????????????????????? |
| name??????? | service????????????????????????? |
| parent_id?? | default????????????????????????? |
+-------------+----------------------------------+
9.配置普通(非管理)任務項目和用戶權限
a.創建 demo 項目
# openstack project create --domain default \
? --description "Demo Project" demo
+-------------+----------------------------------+
| Field?????? | Value??????????????????????????? |
+-------------+----------------------------------+
| description | Demo Project???????????????????? |
| domain_id?? | default????????????????????????? |
| enabled???? | True???????????????????????????? |
| id????????? | 2ef20ce389eb499696f2d7497c6009b0 |
| is_domain?? | False??????????????????????????? |
| name??????? | demo???????????????????????????? |
| parent_id?? | default????????????????????????? |
+-------------+----------------------------------+
b.創建 demo 用戶
# openstack user create --domain default \
? --password-prompt demo
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field?????????????? | Value??????????????????????????? |
+---------------------+----------------------------------+
| domain_id?????????? | default????????????????????????? |
| enabled???????????? | True???????????????????????????? |
| id????????????????? | 7cfc508fd5d44b468aac218bd4029bae |
| name??????????????? | demo???????????????????????????? |
| options???????????? | {}?????????????????????????????? |
| password_expires_at | None???????????????????????????? |
+---------------------+----------------------------------+
c.創建 user 角色
# openstack role create user
+-----------+----------------------------------+
| Field???? | Value??????????????????????????? |
+-----------+----------------------------------+
| domain_id | None???????????????????????????? |
| id??????? | 83b6ab2af4414ad387b2fc9daf575b3a |
| name????? | user???????????????????????????? |
+-----------+----------------------------------+
d.添加 user 角色到 demo 項目和用戶
# openstack role add --project demo --user demo user
10.禁用臨時身份驗證令牌機制
# vim /etc/keystone/keystone-paste.ini
[pipeline:public_api]
# pipeline = admin_token_auth
[pipeline:admin_api]
# pipeline = admin_token_auth
[pipeline:api_v3]
# pipeline = admin_token_auth
11.重置 OS_AUTH_URL 和 OS_PASSWORD 環境變量
# unset OS_AUTH_URL OS_PASSWORD
12.使用 admin 用戶,請求認證令牌(密碼為admin用戶密碼)
# openstack --os-auth-url http://192.168.30.145:35357/v3 \
? --os-project-domain-name default --os-user-domain-name default \
? --os-project-name admin --os-username admin token issue
Password:
+------------+-----------------------------------------------------------+
| Field????? | Value???????????????????????????????????????????????????? |
+------------+-----------------------------------------------------------+
| expires??? | 2017-03-28T15:11:50+0000????????????????????????????????? |
| id???????? | gAAAAABY2m8mE9pMATPuFW9YpgoBMTg9mCI6GcmFeQAudwbhGiVblXZP? |
|??????????? | kmSmHc5aFwTZSIdjLzPJaMd1k16UZghj59v45Gvzdh5CLhSFGWPsT8rL? |
|??????????? | fRJD4eE1D_eRz2Jjjk5rDmwAHm5mmffuszJLSe4B2KJyBXkdmmznXL-A? |
| project_id | 2461396f6a344c21a2360a612d4f6abe????????????????????????? |
| user_id??? | 63ca263543fb4b02bb34410e3dc8a801????????????????????????? |
+------------+-----------------------------------------------------------+
13.使用 demo 用戶,請求認證令牌(密碼為demo用戶密碼)
# openstack --os-auth-url http://192.168.30.145:5000/v3 \
? --os-project-domain-name default --os-user-domain-name default \
? --os-project-name demo --os-username demo token issue
Password:
+------------+-----------------------------------------------------------+
| Field????? | Value???????????????????????????????????????????????????? |
+------------+-----------------------------------------------------------+
| expires??? | 2017-03-28T15:13:50+0000????????????????????????????????? |
| id???????? | gAAAAABY2m-eSIWmQg1SyZFaiGcP2kjHf742ktr8YcVH3Q4aHKTflDJ?? |
|??????????? | RLAfgmeoDW2z1sbdHQmKQNSb--F-1Pn_hTFHYqgyMlIxYpEQxGhJ-rg?? |
|??????????? | b0EuxUT9opwl0m5onaA5Cv_MBX6awxeity8Gh1dc50NUeYela5Yl4uSG? |
| project_id | 2ef20ce389eb499696f2d7497c6009b0????????????????????????? |
| user_id??? | 7cfc508fd5d44b468aac218bd4029bae????????????????????????? |
+------------+-----------------------------------------------------------+
14.創建腳本
a.創建并編輯文件 admin-openrc 并添加如下內容:
# vim admin-openrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=qaz123
export OS_AUTH_URL=http://192.168.30.145:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
b.創建并編輯文件 demo-openrc 并添加如下內容:
# vim demo-openrc
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://192.168.30.145:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
15.使用腳本
a.加載腳本
# . admin-openrc
b.請求身份認證令牌
# openstack token issue
+------------+----------------------------------------------------------+
| Field????? | Value??????????????????????????????????????????????????? |
+------------+----------------------------------------------------------+
| expires??? | 2017-03-28T15:22:55+0000???????????????????????????????? |
| id???????? | gAAAAABY2nG_diuPBMl66vJye3mV3S7CWZKesIiSnbicq5XddujfHhc3x|
|??????????? | PHni3iHWPcTQAjHoIEMTvSH6yKOQ6Z74QL6hVbshqP1dJrRJ6xEa9WvIk|
|??????????? | F7H5j7lPmM7ncfVvr9k96gLJ6Uhz38R5qRnHBWkxrlNsgw1jdnAjxf5e |
| project_id | 2461396f6a344c21a2360a612d4f6abe???????????????????????? |
| user_id??? | 63ca263543fb4b02bb34410e3dc8a801???????????????????????? |
+------------+----------------------------------------------------------+
三、配置 Glance 鏡像服務(Controller Node)
1.創建 glance 數據庫
# mysql
MariaDB [(none)]> CREATE DATABASE glance;????????????? ##創建 glance 數據庫
##對 glance 數據庫授權[用戶名@控制節點...BY 密碼]
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'192.168.30.145' \
????? IDENTIFIED BY 'glance';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
????? IDENTIFIED BY 'glance';
MariaDB [(none)]> flush privileges;
2.獲取管理員訪問權限
# . admin-openrc
3.創建服務證書
a.創建glance用戶:
# openstack user create --domain default --password-prompt glance
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field?????????????? | Value??????????????????????????? |
+---------------------+----------------------------------+
| domain_id?????????? | default????????????????????????? |
| enabled???????????? | True???????????????????????????? |
| id????????????????? | 3edeaaae87e14811ac2c6767ab657d6b |
| name??????????????? | glance?????????????????????????? |
| options???????????? | {}?????????????????????????????? |
| password_expires_at | None???????????????????????????? |
+---------------------+----------------------------------+
b.添加 admin 角色到 glance 用戶和 service 項目上:
# openstack role add --project service --user glance admin
c.創建“glance”服務實體:
# openstack service create --name glance \
? --description "OpenStack Image" image
+-------------+----------------------------------+
| Field?????? | Value??????????????????????????? |
+-------------+----------------------------------+
| description | OpenStack Image????????????????? |
| enabled???? | True???????????????????????????? |
| id????????? | 22a0875ba92c4512989666f116ae1585 |
| name??????? | glance?????????????????????????? |
| type??????? | image??????????????????????????? |
+-------------+----------------------------------+
d.創建鏡像服務的 API 端點:
# openstack endpoint create --region RegionOne \
? image public http://192.168.30.145:9292
+--------------+----------------------------------+
| Field??????? | Value??????????????????????????? |
+--------------+----------------------------------+
| enabled????? | True???????????????????????????? |
| id?????????? | ff6d9ed365cf4e7f8cc53d47e57cd46b |
| interface??? | public?????????????????????????? |
| region?????? | RegionOne??????????????????????? |
| region_id??? | RegionOne??????????????????????? |
| service_id?? | 22a0875ba92c4512989666f116ae1585 |
| service_name | glance?????????????????????????? |
| service_type | image??????????????????????????? |
| url????????? | http://192.168.30.145:9292?????? |
+--------------+----------------------------------+
# openstack endpoint create --region RegionOne \
? image internal http://192.168.30.145:9292
+--------------+----------------------------------+
| Field??????? | Value??????????????????????????? |
+--------------+----------------------------------+
| enabled????? | True???????????????????????????? |
| id?????????? | 7408dd72bc1745758cdf23e136ef7392 |
| interface??? | internal???????????????????????? |
| region?????? | RegionOne??????????????????????? |
| region_id??? | RegionOne??????????????????????? |
| service_id?? | 22a0875ba92c4512989666f116ae1585 |
| service_name | glance?????????????????????????? |
| service_type | image??????????????????????????? |
| url????????? | http://192.168.30.145:9292?????? |
+--------------+----------------------------------+
# openstack endpoint create --region RegionOne \
? image admin http://192.168.30.145:9292
--------------+----------------------------------+
| Field??????? | Value??????????????????????????? |
+--------------+----------------------------------+
| enabled????? | True???????????????????????????? |
| id?????????? | 8ed4e7e1a5834177b4ce1896c21e6cb9 |
| interface??? | admin??????????????????????????? |
| region?????? | RegionOne??????????????????????? |
| region_id??? | RegionOne??????????????????????? |
| service_id?? | 22a0875ba92c4512989666f116ae1585 |
| service_name | glance?????????????????????????? |
| service_type | image??????????????????????????? |
| url????????? | http://192.168.30.145:9292?????? |
+--------------+----------------------------------+
4.安裝并配置 Glance 組件
a.配置鏡像API
# apt -y install glance
# vim /etc/glance/glance-api.conf
[database]---配置數據庫訪問[用戶名:密碼@控制節點]
connection = mysql+pymysql://glance:glance@192.168.30.145/glance
[keystone_authtoken]---配置身份服務訪問
auth_uri = http://192.168.30.145:5000
auth_url = http://192.168.30.145:35357
memcached_servers = 192.168.30.145:11211
auth_type = password
project_domain_name = default
user_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/
# grep ^[a-z] /etc/glance/glance-api.conf
sqlite_db = /var/lib/glance/glance.sqlite
backend = sqlalchemy
connection = mysql+pymysql://glance:glance@192.168.30.145/glance
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images
disk_formats = ami,ari,aki,vhd,vhdx,vmdk,raw,qcow2,vdi,iso,ploop.root-tar
auth_uri = http://192.168.30.145:5000
auth_url = http://192.168.30.145:35357
memcached_servers = 192.168.30.145:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance
flavor = keystone
b.配置鏡像注冊服務
# vim /etc/glance/glance-registry.conf
[database]---配置數據庫訪問[用戶名:密碼@控制節點]
connection = mysql+pymysql://glance:glance@192.168.30.145/glance
[keystone_authtoken]---配置身份服務訪問
auth_uri = http://192.168.30.145:5000
auth_url = http://192.168.30.145:35357
memcached_servers = 192.168.30.145:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance
[paste_deploy]
flavor = keystone
# grep ^[a-z] /etc/glance/glance-registry.conf
sqlite_db = /var/lib/glance/glance.sqlite
backend = sqlalchemy
connection = mysql+pymysql://glance:glance@192.168.30.145/glance
auth_uri = http://192.168.30.145:5000
auth_url = http://192.168.30.145:35357
memcached_servers = 192.168.30.145:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance
flavor = keystone
5.同步鏡像服務數據庫
# su -s /bin/sh -c "glance-manage db_sync" glance
6.重啟服務
# service glance-registry restart
# service glance-api restart
# service glance-registry status
# service glance-api status
7.驗證操作
使用 CirrOS 對鏡像服務進行驗證
CirrOS是一個小型的Linux鏡像,可以用來進行 OpenStack部署測試。
a.獲取管理員權限
?
# . admin-openrc
?
b.下載源鏡像
# wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
c.使用 QCOW2 磁盤格式, bare 容器格式上傳鏡像到鏡像服務并設置公共可見
# openstack image create "cirros"\
? --file cirros-0.3.5-x86_64-disk.img \
? --disk-format qcow2 --container-format bare \
? --public
+------------------+------------------------------------------------------+
| Field??????????? | Value??????????????????????????????????????????????? |
+------------------+------------------------------------------------------+
| checksum???????? | f8ab98ff5e73ebab884d80c9dc9c7290???????????????????? |
| container_format | bare???????????????????????????????????????????????? |
| created_at?????? | 2017-03-29T05:57:56Z???????????????????????????????? |
| disk_format????? | qcow2??????????????????????????????????????????????? |
| file???????????? | /v2/images/4b6ebd57-80ab-4b79-8ecc-53a026f3e898/file |
| id?????????????? | 4b6ebd57-80ab-4b79-8ecc-53a026f3e898???????????????? |
| min_disk???????? | 0??????????????????????????????????????????????????? |
| min_ram????????? | 0??????????????????????????????????????????????????? |
| name???????????? | cirros?????????????????????????????????????????????? |
| owner??????????? | 2461396f6a344c21a2360a612d4f6abe???????????????????? |
| protected??????? | False??????????????????????????????????????????????? |
| schema?????????? | /v2/schemas/image??????????????????????????????????? |
| size???????????? | 13267968???????????????????????????????????????????? |
| status?????????? | active?????????????????????????????????????????????? |
| tags???????????? |????????????????????????????????????????????????????? |
| updated_at?????? | 2017-03-29T05:57:56Z???????????????????????????????? |
| virtual_size???? | None???????????????????????????????????????????????? |
| visibility?????? | public?????????????????????????????????????????????? |
+------------------+------------------------------------------------------+
d.確認鏡像的上傳并驗證屬性
# openstack image list
+--------------------------------------+--------+--------+
| ID?????????????????????????????????? | Name?? | Status |
+--------------------------------------+--------+--------+
| 4b6ebd57-80ab-4b79-8ecc-53a026f3e898 | cirros | active |
+--------------------------------------+--------+--------+
五、配置 Neutron 網絡服務【各節點皆要配置】
1.創建 neutron 數據庫
# mysql
MariaDB [(none)] CREATE DATABASE neutron;???????????? ##創建 neutron 數據庫
##對 neutron 數據庫授權[用戶名@控制節點...BY 密碼]
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'192.168.30.145' \\
? IDENTIFIED BY 'neutron';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \\
? IDENTIFIED BY 'neutron';
MariaDB [(none)]> flush privileges;
?
2.獲取管理員訪問權限
# . admin-openrc
3.創建服務證書
a.創建 neutron 用戶
# openstack user create --domain default --password-prompt neutron
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field?????????????? | Value??????????????????????????? |
+---------------------+----------------------------------+
| domain_id?????????? | default????????????????????????? |
| enabled???????????? | True???????????????????????????? |
| id????????????????? | 54cd9e72295c411090ea9f641cb02135 |
| name??????????????? | neutron????????????????????????? |
| options???????????? | {}?????????????????????????????? |
| password_expires_at | None???????????????????????????? |
+---------------------+----------------------------------+
b.添加 admin 角色到 neutron 用戶
# openstack role add --project service --user neutron admin
c.創建 neutron 服務實體
# openstack service create --name neutron \\
? --description "OpenStack Networking" network
+-------------+----------------------------------+
| Field?????? | Value??????????????????????????? |
+-------------+----------------------------------+
| description | OpenStack Networking???????????? |
| enabled???? | True???????????????????????????? |
| id????????? | 720687745d354718862255a56d7aea46 |
| name??????? | neutron????????????????????????? |
| type??????? | network????????????????????????? |
+-------------+----------------------------------+
d.創建 neutron 服務API端點
# openstack endpoint create --region RegionOne \\
? network public http://192.168.30.145:9696
+--------------+----------------------------------+
| Field??????? | Value??????????????????????????? |
+--------------+----------------------------------+
| enabled????? | True???????????????????????????? |
| id?????????? | a9b1b5b8fbb842a8b14a9cecca7a58a8 |
| interface??? | public?????????????????????????? |
| region?????? | RegionOne??????????????????????? |
| region_id??? | RegionOne??????????????????????? |
| service_id?? | 720687745d354718862255a56d7aea46 |
| service_name | neutron????????????????????????? |
| service_type | network????????????????????????? |
| url????????? | http://192.168.30.145:9696?????? |
+--------------+----------------------------------+
?? ?
# openstack endpoint create --region RegionOne \\
? network internal http://192.168.30.145:9696
+--------------+----------------------------------+
| Field??????? | Value??????????????????????????? |
+--------------+----------------------------------+
| enabled????? | True???????????????????????????? |
| id?????????? | 61e2c14b0c8f4003a7099012e9a6331f |
| interface??? | internal???????????????????????? |
| region?????? | RegionOne??????????????????????? |
| region_id??? | RegionOne??????????????????????? |
| service_id?? | 720687745d354718862255a56d7aea46 |
| service_name | neutron????????????????????????? |
| service_type | network????????????????????????? |
| url????????? | http://192.168.30.145:9696?????? |
+--------------+----------------------------------+
# openstack endpoint create --region RegionOne \\
? network admin http://192.168.30.145:9696
+--------------+----------------------------------+
| Field??????? | Value??????????????????????????? |
+--------------+----------------------------------+
| enabled????? | True???????????????????????????? |
| id?????????? | 6719539759c34487bd519c0dffb5509d |
| interface??? | admin??????????????????????????? |
| region?????? | RegionOne??????????????????????? |
| region_id??? | RegionOne??????????????????????? |
| service_id?? | 720687745d354718862255a56d7aea46 |
| service_name | neutron????????????????????????? |
| service_type | network????????????????????????? |
| url????????? | http://192.168.30.145:9696?????? |
+--------------+----------------------------------+
4.配置網絡類型2:私有網絡
a.安裝組件
# apt -y install neutron-server neutron-plugin-ml2 \\
? neutron-linuxbridge-agent neutron-l3-agent neutron-dhcp-agent \\
? neutron-metadata-agent
b.配置 Neutron 組件
# vim /etc/neutron/neutron.conf
[database]----配置數據庫訪問[用戶名:密碼@控制節點]
#connection = sqlite:var/lib/neutron/neutron.sqlite
connection = mysql+pymysql://neutron:neutron@192.168.30.145/neutron
[DEFAULT]----啟用ML2插件、路由器服務和overlapping IP addresses
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true
?? ?
[DEFAULT]----配置 RabbitMQ 消息隊列訪問[用戶名:密碼@控制節點]
transport_url = rabbit://openstack:openstack@192.168.30.145
[DEFAULT]----配置認證服務訪問
auth_strategy = keystone
[keystone_authtoken]----配置認證服務訪問
auth_uri = http://192.168.30.145:5000
auth_url = http://192.168.30.145:35357
memcached_servers = 192.168.30.145:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron
?? ?
[DEFAULT]----配置網絡服務來通知計算節點的網絡拓撲變化
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
[nova]----配置網絡服務來通知計算節點的網絡拓撲變化
auth_url = http://192.168.30.145:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = nova
# grep ^[a-z] /etc/neutron/neutron.conf
auth_strategy = keystone
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
transport_url = rabbit://openstack:openstack@192.168.30.145
root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf
connection = mysql+pymysql://neutron:neutron@192.168.30.145/neutron
auth_uri = http://192.168.30.145:5000
auth_url = http://192.168.30.145:35357
memcached_servers = 192.168.30.145:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron
region_name = RegionOne
auth_url = http://192.168.30.145:35357
auth_type = password
password = nova
project_domain_name = default
project_name = service
user_domain_name = default
username = nova
c.配置 Modular Layer 2 (ML2) 插件
ML2插件使用Linuxbridge機制來為實例創建layer-2虛擬網絡基礎設施
# vim /etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]----啟用flat,VLAN以及VXLAN網絡
type_drivers = flat,vlan,vxlan
[ml2]----啟用VXLAN私有網絡
tenant_network_types = vxlan
[ml2]----啟用Linuxbridge和layer-2機制
mechanism_drivers = linuxbridge,l2population
[ml2]----啟用端口安全擴展驅動
extension_drivers = port_security
[ml2_type_flat]----配置公共虛擬網絡為flat網絡
flat_networks = provider
[ml2_type_vxlan]----為私有網絡配置VXLAN網絡識別的網絡范圍
vni_ranges = 1:1000
[securitygroup]----啟用 ipset 增加安全組規則的高效性
enable_ipset = true
? ?
# grep ^[a-z] /etc/neutron/plugins/ml2/ml2_conf.ini
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = linuxbridge,l2population
extension_drivers = port_security
flat_networks = provider
vni_ranges = 1:1000
enable_ipset = true
注:Linuxbridge代理只支持VXLAN覆蓋網絡
d.配置Linuxbridge代理
Linuxbridge代理為實例建立layer-2虛擬網絡并且處理安全組規則
# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]----對應公共虛擬網絡和公共物理網絡接口
physical_interface_mappings = provider:ens33
[vxlan]----啟用VXLAN覆蓋網絡,配置覆蓋網絡的物理網絡接口的IP地址,并啟用layer-2 population
enable_vxlan = true
local_ip = 192.168.30.145
l2_population = true
[securitygroup]----啟用安全組并配置防火墻服務
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
?
# grep ^[a-z] /etc/neutron/plugins/ml2/linuxbridge_agent.ini
physical_interface_mappings = provider:ens33
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
enable_security_group = true
enable_vxlan = true
local_ip = 192.168.30.145
l2_population = true
e.配置layer-3代理
Layer-3代理為私有虛擬網絡提供路由和NAT服務
# vim /etc/neutron/l3_agent.ini
[DEFAULT]----配置Linuxbridge接口驅動和外部網絡網橋
interface_driver = linuxbridge
?
# grep ^[a-z] /etc/neutron/l3_agent.ini
interface_driver = linuxbridge
f.配置DHCP代理
DHCP代理為虛擬網絡提供DHCP服務
?
# vim /etc/neutron/dhcp_agent.ini
[DEFAULT]----配置Linuxbridge驅動接口,DHCP驅動并啟用隔離元數據
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
?
# grep ^[a-z] /etc/neutron/dhcp_agent.ini
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
?
g.配置元數據代理----負責提供配置信息
# vim /etc/neutron/metadata_agent.ini
[DEFAULT]----配置元數據主機以及共享密碼
nova_metadata_ip = 192.168.30.145
metadata_proxy_shared_secret = qaz123
?
# grep ^[a-z] /etc/neutron/metadata_agent.ini
nova_metadata_ip = 192.168.30.145
metadata_proxy_shared_secret = qaz123
?
5.在控制節點上為計算節點配置網絡服務
# vim /etc/nova/nova.conf
[neutron]----配置訪問參數,啟用元數據代理并設置密碼
url = http://192.168.30.145:9696
auth_url = http://192.168.30.145:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = neutron
service_metadata_proxy = true
metadata_proxy_shared_secret = qaz123
# grep ^[a-z] /etc/nova/nova.conf
6.完成安裝
a.同步數據庫
# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \\
? --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
......
OK
注:數據庫的同步發生在 Networking 之后,因為腳本需要完成服務器和插件的配置文件
b.重啟計算 API 服務
# service nova-api restart
c.重啟 Networking 服務
對于兩種網絡類型:
# service neutron-server restart
# service neutron-linuxbridge-agent restart
# service neutron-dhcp-agent restart
# service neutron-metadata-agent restart
對于網絡類型 2 ,還需重啟 L3 服務:
# service neutron-l3-agent restart
d.確認啟動與否
# service nova-api status
# service neutron-server status
# service neutron-linuxbridge-agent status
# service neutron-dhcp-agent status
# service neutron-metadata-agent status
# service neutron-l3-agent status
7.配置 Compute Node 的 Neutron 網絡服務
# apt -y install neutron-linuxbridge-agent
# vim /etc/neutron/neutron.conf
[database]----計算節點不直接訪問數據庫
#connection = sqlite:var/lib/neutron/neutron.sqlite
[DEFAULT]----配置 RabbitMQ 消息隊列訪問[用戶名:密碼@控制節點]
transport_url = rabbit://openstack:openstack@192.168.30.145
[DEFAULT]----配置認證服務訪問
auth_strategy = keystone
[keystone_authtoken]----配置認證服務訪問
auth_uri = http://192.168.30.145:5000
auth_url = http://192.168.30.145:35357
memcached_servers = 192.168.30.145:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron
?
# grep ^[a-z] /etc/neutron/neutron.conf
auth_strategy = keystone
core_plugin = ml2
transport_url = rabbit://openstack:openstack@192.168.30.145
root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf
auth_uri = http://192.168.30.145:5000
auth_url = http://192.168.30.145:35357
memcached_servers = 192.168.30.145:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron
8.為計算節點配置網絡服務
# vim /etc/nova/nova.conf
[neutron]----配置訪問參數
url = http://192.168.30.145:9696
auth_url = http://192.168.30.145:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = neutron
# grep ^[a-z] /etc/nova/nova.conf
9.完成安裝
a.重啟計算服務:
# service nova-compute restart
# service nova-compute status
b.重啟Linuxbridge代理:
# service neutron-linuxbridge-agent restart
# service neutron-linuxbridge-agent status
10.在計算節點上配置網絡類型2
配置Linuxbridge代理----為實例建立layer-2虛擬網絡并且處理安全組規則
# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]----對應公共虛擬網絡和公共物理網絡接口
physical_interface_mappings = provider:ens33
[vxlan]----啟用VXLAN覆蓋網絡,配置覆蓋網絡的物理網絡接口的IP地址,啟用layer-2 population
enable_vxlan = true
local_ip = 192.168.30.146
l2_population = true
[securitygroup]----啟用安全組并配置firewall_driver
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
?
# grep ^[a-z] /etc/neutron/plugins/ml2/linuxbridge_agent.ini
physical_interface_mappings = provider:ens33
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
enable_security_group = true
enable_vxlan = true
local_ip = 192.168.30.146
l2_population = true
11.在控制節點上驗證操作
a.獲取管理員權限
# . admin-openrc
b.列出加載的擴展來驗證 neutron-server 進程是否正常啟
# openstack extension list --network
+----------------------+----------------------+--------------------------+
| Name???????????????? | Alias??????????????? | Description????????????? |
+----------------------+----------------------+--------------------------+
| Default Subnetpools? | default-subnetpools? | Provides ability to mark |
|????????????????????? |????????????????????? | and use a subnetpool as? |
|????????????????????? |????????????????????? | the default????????????? |
| Network IP?????????? | network-ip-????????? | Provides IP availability |
| Availability???????? | availability???????? | data for each network??? |
|????????????????????? |????????????????????? | and subnet.????????????? |
| Network Availability |network_availability_z| Availability zone??????? |
| Zone???????????????? | one????????????????? | support for network.???? |
| Auto Allocated?????? | auto-allocated-????? | Auto Allocated Topology? |
| Topology Services??? | topology???????????? | Services.??????????????? |
| Neutron L3?????????? | ext-gw-mode????????? | Extension of the router? |
| Configurable external|????????????????????? | abstraction for????????? |
| gateway mode???????? |????????????????????? | specifying whether SNAT? |
|????????????????????? |????????????????????? | should occur on the????? |
|????????????????????? |????????????????????? | external gateway???????? |
| Port Binding???????? | binding????????????? | Expose port bindings of? |
|????????????????????? |????????????????????? | a virtual port to??????? |
|????????????????????? |????????????????????? | external application???? |
| agent??????????????? | agent??????????????? | The agent management???? |
|????????????????????? |????????????????????? | extension.?????????????? |
| Subnet Allocation??? | subnet_allocation??? | Enables allocation of??? |
|????????????????????? |????????????????????? | subnets from a subnet??? |
|????????????????????? |????????????????????? | pool???????????????????? |
| L3 Agent Scheduler?? | l3_agent_scheduler?? | Schedule routers among?? |
|????????????????????? |????????????????????? | l3 agents??????????????? |
| Tag support????????? | tag????????????????? | Enables to set tag on??? |
|????????????????????? |????????????????????? | resources.?????????????? |
| Neutron external???? | external-net???????? | Adds external network??? |
| network????????????? |????????????????????? | attribute to network???? |
|????????????????????? |????????????????????? | resource.??????????????? |
| Neutron Service????? | flavors????????????? | Flavor specification for |
| Flavors????????????? |????????????????????? | Neutron advanced???????? |
|????????????????????? |????????????????????? | services???????????????? |
| Network MTU????????? | net-mtu????????????? | Provides MTU attribute?? |
|????????????????????? |????????????????????? | for a network resource.? |
| Availability Zone??? | availability_zone??? | The availability zone??? |
|????????????????????? |????????????????????? | extension.?????????????? |
| Quota management???? | quotas?????????????? | Expose functions for???? |
| support????????????? |????????????????????? | quotas management per??? |
|????????????????????? |????????????????????? | tenant?????????????????? |
| HA Router extension? | l3-ha??????????????? | Add HA capability to???? |
|????????????????????? |????????????????????? | routers.???????????????? |
| Provider Network???? | provider???????????? | Expose mapping of??????? |
|????????????????????? |????????????????????? | virtual networks to????? |
|????????????????????? |????????????????????? | physical networks??????? |
|Multi Provider Network| multi-provider?????? | Expose mapping of??????? |
|????????????????????? |????????????????????? | virtual networks to????? |
|????????????????????? |????????????????????? | multiple physical??????? |
|????????????????????? |????????????????????? | networks???????????????? |
| Address scope??????? | address-scope??????? | Address scopes?????????? |
|????????????????????? |????????????????????? | extension.?????????????? |
| Neutron Extra Route? | extraroute?????????? | Extra routes???????????? |
|????????????????????? |????????????????????? | configuration for L3???? |
|????????????????????? |????????????????????? | router?????????????????? |
| Subnet service types | subnet-service-types | Provides ability to set? |
|????????????????????? |????????????????????? | the subnet service_types |
|????????????????????? |????????????????????? | field??????????????????? |
| Resource timestamps? | standard-attr-?????? | Adds created_at and????? |
|????????????????????? | timestamp??????????? | updated_at fields to all |
|????????????????????? |????????????????????? | Neutron resources that?? |
|????????????????????? |????????????????????? | have Neutron standard??? |
|????????????????????? |????????????????????? | attributes.????????????? |
| Neutron Service Type | service-type???????? | API for retrieving?????? |
| Management?????????? |????????????????????? | service providers for??? |
|????????????????????? |????????????????????? | Neutron advanced???????? |
|????????????????????? |????????????????????? | services???????????????? |
| Router Flavor??????? | l3-flavors?????????? | Flavor support for?????? |
| Extension??????????? |????????????????????? | routers.???????????????? |
| Port Security??????? | port-security??????? | Provides port security?? |
| Neutron Extra DHCP?? | extra_dhcp_opt?????? | Extra options??????????? |
| opts???????????????? |????????????????????? | configuration for DHCP.? |
|????????????????????? |????????????????????? | For example PXE boot???? |
|????????????????????? |????????????????????? | options to DHCP clients? |
|????????????????????? |????????????????????? | can be specified (e.g.?? |
|????????????????????? |????????????????????? | tftp-server, server-ip-? |
|????????????????????? |????????????????????? | address, bootfile-name)? |
| Resource revision??? | standard-attr-?????? | This extension will????? |
| numbers????????????? | revisions??????????? | display the revision???? |
|????????????????????? |????????????????????? | number of neutron??????? |
|????????????????????? |????????????????????? | resources.?????????????? |
| Pagination support?? | pagination?????????? | Extension that indicates |
|????????????????????? |????????????????????? | that pagination is?????? |
|????????????????????? |????????????????????? | enabled.???????????????? |
| Sorting support????? | sorting????????????? | Extension that indicates |
|????????????????????? |????????????????????? | that sorting is enabled. |
| security-group?????? | security-group?????? | The security groups????? |
|????????????????????? |????????????????????? | extension.?????????????? |
| DHCP Agent Scheduler | dhcp_agent_scheduler | Schedule networks among? |
|????????????????????? |????????????????????? | dhcp agents????????????? |
| Router Availability? |router_availability_zo| Availability zone??????? |
| Zone???????????????? | ne?????????????????? | support for router.????? |
| RBAC Policies??????? | rbac-policies??????? | Allows creation and????? |
|????????????????????? |????????????????????? | modification of policies |
|????????????????????? |????????????????????? | that control tenant????? |
|????????????????????? |????????????????????? | access to resources.???? |
| Tag support for????? | tag-ext????????????? | Extends tag support to?? |
| resources: subnet,?? |????????????????????? | more L2 and L3?????????? |
| subnetpool, port,??? |????????????????????? | resources.?????????????? |
| router?????????????? |????????????????????? |????????????????????????? |
| standard-attr-?????? | standard-attr-?????? | Extension to add???????? |
| description????????? | description????????? | descriptions to standard |
|????????????????????? |????????????????????? | attributes?????????????? |
| Neutron L3 Router??? | router?????????????? | Router abstraction for?? |
|????????????????????? |????????????????????? | basic L3 forwarding????? |
|????????????????????? |????????????????????? | between L2 Neutron?????? |
|????????????????????? |????????????????????? | networks and access to?? |
|????????????????????? |????????????????????? | external networks via a? |
|????????????????????? |????????????????????? | NAT gateway.???????????? |
| Allowed Address Pairs| allowed-address-pairs| Provides allowed address |
|????????????????????? |????????????????????? | pairs??????????????????? |
| project_id field???? | project-id?????????? | Extension that indicates |
| enabled????????????? |????????????????????? | that project_id field is |
|????????????????????? |????????????????????? | enabled.???????????????? |
| Distributed Virtual? | dvr????????????????? | Enables configuration of |
| Router?????????????? |????????????????????? | Distributed Virtual????? |
|????????????????????? |????????????????????? | Routers.???????????????? |
+----------------------+----------------------+--------------------------+
c.啟動 neutron 代理驗證是否成功
# neutron agent-list
+--------------------------------------+--------------------+------------+
| id?????????????????????????????????? | agent_type???????? | host?????? |
+--------------------------------------+--------------------+------------+
| 23601054-312a-497c-b728-4b791ce76e64 | L3 agent?????????? | controller |
| 9a7546d9-73ec-47e0-ab23-ca2a5366660f | Linux bridge agent | controller |
| acd42d89-1af4-413f-be77-3172d38a805d | Metadata agent???? | controller |
| b438ae93-aaf3-41f0-a7b7-d1502a1986c9 | DHCP agent???????? | controller |
| e1d32b6b-07c6-468b-965d-ce9dfd09b338 | Linux bridge agent | compute??? |
+--------------------------------------+--------------------+------------+
+-------------------+-------+----------------+---------------------------+
| availability_zone | alive | admin_state_up | binary??????????????????? |
+-------------------+-------+----------------+---------------------------+
| nova????????????? | :-)?? | True?????????? | neutron-l3-agent????????? |
|?????????????????? | :-)?? | True?????????? | neutron-linuxbridge-agent |
|?????????????????? | :-)?? | True?????????? | neutron-metadata-agent??? |
| nova????????????? | :-)?? | True?????????? | neutron-dhcp-agent??????? |
|?????????????????? | :-)?? | True?????????? | neutron-linuxbridge-agent |
+-------------------+-------+----------------+---------------------------+
?
轉載于:https://www.cnblogs.com/youran-he/p/8073242.html
總結
以上是生活随笔為你收集整理的ubuntu16.0 安装 openstack的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bzoj千题计划153:bzoj2431
- 下一篇: display:table和displa