Ubuntu-16.04 部署 OpenStack Ocata下
六、配置 Dashboard 儀表盤服務(Controller?Node)
1.配置Dashboard
#?apt?-y?install?openstack-dashboard #?vim?/etc/openstack-dashboard/local_settings.py???? OPENSTACK_HOST?=?"192.168.30.145"?????????????????##配置儀表盤以使用?OpenStack?服務 ALLOWED_HOSTS?=?['*']??????????????????????????????##允許所有主機訪問儀表板 ##配置?memcached?會話存儲服務 SESSION_ENGINE?=?'django.contrib.sessions.backends.cache' CACHES?=?{'default':?{'BACKEND':?'django.core.cache.backends.memcached.MemcachedCache','LOCATION':?'192.168.30.145:11211',} } OPENSTACK_KEYSTONE_URL?=?"http://%s:5000/v3"?%?OPENSTACK_HOST??????##啟用第3版認證API OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT?=?True???????????##啟用對域的支持 OPENSTACK_API_VERSIONS?=?{"identity":?3,"p_w_picpath":?2,"volume":?2, }????????????????????????????????????????????????????##配置API版本 OPENSTACK_KEYSTONE_DEFAULT_DOMAIN?=?"default"??????##通過儀表盤創建用戶時的默認域配置 OPENSTACK_KEYSTONE_DEFAULT_ROLE?=?"user"???????????##通過儀表盤創建的用戶默認角色配置 TIME_ZONE?=?"Asia/Chongqing"??????????????????????????##配置時區#?cat?/etc/openstack-dashboard/local_settings.py|grep?-v?"#"|grep?-v?^$2.更改?dashboard 密鑰文件權限
#?chown?www-data:www-data?/var/lib/openstack-dashboard/secret_key #?service?apache2?reload??????????????##重新加載?web?服務器配置3.驗證儀表盤服務
瀏覽器輸入 http://controller/horizon 訪問儀表盤。
使用 admin 或者 demo 用戶憑證和 default 域憑證驗證。
身份管理-項目
身份管理-用戶
七、啟動一個實例
1.創建公共網絡
a.獲取 admin 權限
#?.?admin-openrcb.創建網絡
#?openstack?network?create??--share?\\--provider-physical-network?provider?\\--provider-network-type?flat?provider +---------------------------+--------------------------------------+ |?Field?????????????????????|?Value????????????????????????????????| +---------------------------+--------------------------------------+ |?admin_state_up????????????|?UP???????????????????????????????????| |?availability_zone_hints???|??????????????????????????????????????| |?availability_zones????????|??????????????????????????????????????| |?created_at????????????????|?2017-03-29T11:59:09Z?????????????????| |?description???????????????|??????????????????????????????????????| |?dns_domain????????????????|?None?????????????????????????????????| |?id????????????????????????|?ff30780d-45af-45dc-860f-59b1c091c2a2?| |?ipv4_address_scope????????|?None?????????????????????????????????| |?ipv6_address_scope????????|?None?????????????????????????????????| |?is_default????????????????|?None?????????????????????????????????| |?mtu???????????????????????|?1500?????????????????????????????????| |?name??????????????????????|?provider?????????????????????????????| |?port_security_enabled?????|?True?????????????????????????????????| |?project_id????????????????|?2461396f6a344c21a2360a612d4f6abe?????| |?provider:network_type?????|?flat?????????????????????????????????| |?provider:physical_network?|?provider?????????????????????????????| |?provider:segmentation_id??|?None?????????????????????????????????| |?qos_policy_id?????????????|?None?????????????????????????????????| |?revision_number???????????|?3????????????????????????????????????| |?router:external???????????|?Internal?????????????????????????????| |?segments??????????????????|?None?????????????????????????????????| |?shared????????????????????|?True?????????????????????????????????| |?status????????????????????|?ACTIVE???????????????????????????????| |?subnets???????????????????|??????????????????????????????????????| |?updated_at????????????????|?2017-03-29T11:59:10Z?????????????????| +---------------------------+--------------------------------------+--shared:允許所有項目使用虛擬網絡
--provider:管理員創建的直接和物理網絡映射的網絡
--provider-physical-network (物理網絡的邏輯名稱)
--provider-network-type (網絡類型,包括 vxlan, gre, vlan, flat, local)?
c.配置 Modular Layer 2 (ML2) 插件
#?vim?/etc/neutron/plugins/ml2/ml2_conf.ini? [ml2_type_flat] flat_networks?=?providerd.配置Linuxbridge代理
#?vim?/etc/neutron/plugins/ml2/linuxbridge_agent.ini [linux_bridge] physical_interface_mappings?=?provider:ens332.在網絡上創建一個子網
#?openstack?subnet?create?--network?provider?\\--allocation-pool?start=192.168.200.100,end=192.168.200.200?\\--dns-nameserver?114.114.114.114?--gateway?192.168.200.1?\\--subnet-range?192.168.200.0/24?provider +-------------------+--------------------------------------+ |?Field?????????????|?Value????????????????????????????????| +-------------------+--------------------------------------+ |?allocation_pools??|?192.168.200.100-192.168.200.200??????| |?cidr??????????????|?192.168.200.0/24?????????????????????| |?created_at????????|?2017-03-29T12:04:57Z?????????????????| |?description???????|??????????????????????????????????????| |?dns_nameservers???|?114.114.114.114??????????????????????| |?enable_dhcp???????|?True?????????????????????????????????| |?gateway_ip????????|?192.168.200.1????????????????????????| |?host_routes???????|??????????????????????????????????????| |?id????????????????|?4a1899dc-581c-4ada-8ebd-ad632f0ce1ee?| |?ip_version????????|?4????????????????????????????????????| |?ipv6_address_mode?|?None?????????????????????????????????| |?ipv6_ra_mode??????|?None?????????????????????????????????| |?name??????????????|?provider?????????????????????????????| |?network_id????????|?ff30780d-45af-45dc-860f-59b1c091c2a2?| |?project_id????????|?2461396f6a344c21a2360a612d4f6abe?????| |?revision_number???|?2????????????????????????????????????| |?segment_id????????|?None?????????????????????????????????| |?service_types?????|??????????????????????????????????????| |?subnetpool_id?????|?None?????????????????????????????????| |?updated_at????????|?2017-03-29T12:04:58Z?????????????????| +-------------------+--------------------------------------+3.創建私有網絡
a.獲取 demo 權限
#?.?demo-openrcb.創建網絡
#?openstack?network?create?selfservice +---------------------------+--------------------------------------+ |?Field?????????????????????|?Value????????????????????????????????| +---------------------------+--------------------------------------+ |?admin_state_up????????????|?UP???????????????????????????????????| |?availability_zone_hints???|??????????????????????????????????????| |?availability_zones????????|??????????????????????????????????????| |?created_at????????????????|?2017-03-29T12:09:05Z?????????????????| |?description???????????????|??????????????????????????????????????| |?dns_domain????????????????|?None?????????????????????????????????| |?id????????????????????????|?afd4f998-901d-42ca-a002-b25f9b4c9e4e?| |?ipv4_address_scope????????|?None?????????????????????????????????| |?ipv6_address_scope????????|?None?????????????????????????????????| |?is_default????????????????|?None?????????????????????????????????| |?mtu???????????????????????|?1450?????????????????????????????????| |?name??????????????????????|?selfservice??????????????????????????| |?port_security_enabled?????|?True?????????????????????????????????| |?project_id????????????????|?2ef20ce389eb499696f2d7497c6009b0?????| |?provider:network_type?????|?None?????????????????????????????????| |?provider:physical_network?|?None?????????????????????????????????| |?provider:segmentation_id??|?None?????????????????????????????????| |?qos_policy_id?????????????|?None?????????????????????????????????| |?revision_number???????????|?3????????????????????????????????????| |?router:external???????????|?Internal?????????????????????????????| |?segments??????????????????|?None?????????????????????????????????| |?shared????????????????????|?False????????????????????????????????| |?status????????????????????|?ACTIVE???????????????????????????????| |?subnets???????????????????|??????????????????????????????????????| |?updated_at????????????????|?2017-03-29T12:09:05Z?????????????????| +---------------------------+--------------------------------------+c.配置 Modular Layer 2 (ML2) 插件
#?vim?/etc/neutron/plugins/ml2/ml2_conf.ini [ml2] tenant_network_types?=?vxlan [ml2_type_vxlan] vni_ranges?=?1:10004.在網絡上創建一個子網
#?openstack?subnet?create?--network?selfservice?\\--dns-nameserver?114.114.114.114?--gateway?172.16.1.1?\\--subnet-range?172.16.1.0/24?selfservice +-------------------+--------------------------------------+ |?Field?????????????|?Value????????????????????????????????| +-------------------+--------------------------------------+ |?allocation_pools??|?172.16.1.2-172.16.1.254??????????????| |?cidr??????????????|?172.16.1.0/24????????????????????????| |?created_at????????|?2017-03-29T12:12:39Z?????????????????| |?description???????|??????????????????????????????????????| |?dns_nameservers???|?114.114.114.114??????????????????????| |?enable_dhcp???????|?True?????????????????????????????????| |?gateway_ip????????|?172.16.1.1???????????????????????????| |?host_routes???????|??????????????????????????????????????| |?id????????????????|?1420f8c3-fa03-4ab3-9329-4455a52f357c?| |?ip_version????????|?4????????????????????????????????????| |?ipv6_address_mode?|?None?????????????????????????????????| |?ipv6_ra_mode??????|?None?????????????????????????????????| |?name??????????????|?selfservice??????????????????????????| |?network_id????????|?afd4f998-901d-42ca-a002-b25f9b4c9e4e?| |?project_id????????|?2ef20ce389eb499696f2d7497c6009b0?????| |?revision_number???|?2????????????????????????????????????| |?segment_id????????|?None?????????????????????????????????| |?service_types?????|??????????????????????????????????????| |?subnetpool_id?????|?None?????????????????????????????????| |?updated_at????????|?2017-03-29T12:12:39Z?????????????????| +-------------------+--------------------------------------+5.創建路由
私有網絡通過虛擬路由來連接到公有網絡,以雙向NAT最為典型。
每個路由包含至少一個連接到私有網絡的接口及一個連接到公有網絡的網關的接口。
a.獲取 admin 權限
#?.?admin-openrcb.添加 router:external 到 provider 網絡
公有提供網絡必須包括 router: external 選項,用來使路由連接到外部網絡
#?neutron?net-update?provider?--router:external Updated?network:?providerc.獲取 demo 權限
#?.?demo-openrcd.創建路由
#?openstack?router?create?router +-------------------------+--------------------------------------+ |?Field???????????????????|?Value????????????????????????????????| +-------------------------+--------------------------------------+ |?admin_state_up??????????|?UP???????????????????????????????????| |?availability_zone_hints?|??????????????????????????????????????| |?availability_zones??????|??????????????????????????????????????| |?created_at??????????????|?2017-03-29T12:17:13Z?????????????????| |?description?????????????|??????????????????????????????????????| |?distributed?????????????|?False????????????????????????????????| |?external_gateway_info???|?None?????????????????????????????????| |?flavor_id???????????????|?None?????????????????????????????????| |?ha??????????????????????|?False????????????????????????????????| |?id??????????????????????|?4f42ae28-fcf1-4f72-9341-e6d8f7caaa90?| |?name????????????????????|?router???????????????????????????????| |?project_id??????????????|?2ef20ce389eb499696f2d7497c6009b0?????| |?revision_number?????????|?None?????????????????????????????????| |?routes??????????????????|??????????????????????????????????????| |?status??????????????????|?ACTIVE???????????????????????????????| |?updated_at??????????????|?2017-03-29T12:17:13Z?????????????????| +-------------------------+--------------------------------------+e.給路由器添加一個私網子網的接口
#?neutron?router-interface-add?router?selfservice Added?interface?9f67d7fa-520b-48b4-913f-e3d6ad944e34?to?router?router.f.給路由器設置公有網絡的網關
#?neutron?router-gateway-set?router?provider Set?gateway?for?router?router6.驗證操作
a.獲取 admin 權限
#?.?admin-openrcb.列出網絡命名空間
#?ip?netns qrouter-4f42ae28-fcf1-4f72-9341-e6d8f7caaa90?(id:?2) qdhcp-afd4f998-901d-42ca-a002-b25f9b4c9e4e?(id:?1) qdhcp-ff30780d-45af-45dc-860f-59b1c091c2a2?(id:?0)c.列出路由器上的端口來確定公網網關的 IP 地址
d.從控制節點或任意公共物理網絡上的節點Ping這個IP地址
#?ping?-c?4?192.168.200.103 PING?192.168.200.103?(192.168.200.103)?56(84)?bytes?of?data. 64?bytes?from?192.168.200.103:?icmp_seq=1?ttl=128?time=25.2?ms 64?bytes?from?192.168.200.103:?icmp_seq=2?ttl=128?time=2.79?ms 64?bytes?from?192.168.200.103:?icmp_seq=3?ttl=128?time=2.73?ms 64?bytes?from?192.168.200.103:?icmp_seq=4?ttl=128?time=2.46?ms ---?192.168.200.103?ping?statistics?--- 4?packets?transmitted,?4?received,?0%?packet?loss,?time?3004ms rtt?min/avg/max/mdev?=?2.464/8.309/25.245/9.778?ms7.創建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???????| +----------------------------+---------+8.生成一個鍵值對
a.導入租戶 demo 的憑證:
#?.?demo-openrcb.生成和添加秘鑰對:
#?ssh-keygen?-q?-N?"" Enter?file?in?which?to?save?the?key?(/root/.ssh/id_rsa):? #?openstack?keypair?create?--public-key?~/.ssh/id_rsa.pub?mykey +-------------+-------------------------------------------------+ |?Field???????|?Value???????????????????????????????????????????| +-------------+-------------------------------------------------+ |?fingerprint?|?70:6a:75:32:4e:42:ba:2b:fb:eb:20:af:75:b1:db:61?| |?name????????|?mykey???????????????????????????????????????????| |?user_id?????|?7cfc508fd5d44b468aac218bd4029bae????????????????| +-------------+-------------------------------------------------+c.驗證公鑰的添加:
#?openstack?keypair?list +-------+-------------------------------------------------+ |?Name??|?Fingerprint?????????????????????????????????????| +-------+-------------------------------------------------+ |?mykey?|?70:6a:75:32:4e:42:ba:2b:fb:eb:20:af:75:b1:db:61?| +-------+-------------------------------------------------+9.增加安全組規則
默認下,default安全組適用于所有實例并且包括拒絕遠程訪問實例的防火墻規則。
添加規則到 default 安全組:
允許 ICMP (ping):
#?openstack?security?group?rule?create?--proto?icmp?default +-------------------+--------------------------------------+ |?Field?????????????|?Value????????????????????????????????| +-------------------+--------------------------------------+ |?created_at????????|?2017-03-29T12:40:47Z?????????????????| |?description???????|??????????????????????????????????????| |?direction?????????|?ingress??????????????????????????????| |?ether_type????????|?IPv4?????????????????????????????????| |?id????????????????|?0c62d604-a68f-40cd-821d-90259f75f536?| |?name??????????????|?None?????????????????????????????????| |?port_range_max????|?None?????????????????????????????????| |?port_range_min????|?None?????????????????????????????????| |?project_id????????|?2ef20ce389eb499696f2d7497c6009b0?????| |?protocol??????????|?icmp?????????????????????????????????| |?remote_group_id???|?None?????????????????????????????????| |?remote_ip_prefix??|?0.0.0.0/0????????????????????????????| |?revision_number???|?1????????????????????????????????????| |?security_group_id?|?74f50594-4ce0-4c29-a987-d33d4d6a5db9?| |?updated_at????????|?2017-03-29T12:40:47Z?????????????????| +-------------------+--------------------------------------+允許安全 shell (SSH) 的訪問:
#?openstack?security?group?rule?create?--proto?tcp?--dst-port?22?default +-------------------+--------------------------------------+ |?Field?????????????|?Value????????????????????????????????| +-------------------+--------------------------------------+ |?created_at????????|?2017-03-29T12:41:48Z?????????????????| |?description???????|??????????????????????????????????????| |?direction?????????|?ingress??????????????????????????????| |?ether_type????????|?IPv4?????????????????????????????????| |?id????????????????|?42f92c1f-abd7-4321-ac03-75eeb91152f9?| |?name??????????????|?None?????????????????????????????????| |?port_range_max????|?22???????????????????????????????????| |?port_range_min????|?22???????????????????????????????????| |?project_id????????|?2ef20ce389eb499696f2d7497c6009b0?????| |?protocol??????????|?tcp??????????????????????????????????| |?remote_group_id???|?None?????????????????????????????????| |?remote_ip_prefix??|?0.0.0.0/0????????????????????????????| |?revision_number???|?1????????????????????????????????????| |?security_group_id?|?74f50594-4ce0-4c29-a987-d33d4d6a5db9?| |?updated_at????????|?2017-03-29T12:41:48Z?????????????????| +-------------------+--------------------------------------+10.創建實例
a.獲取 demo 權限
#?.?demo-openrcb.一個實例指定了虛擬機資源的大致分配,包括處理器、內存和存儲。
列出可用類型:
#?openstack?flavor?list +----+---------+-----+------+-----------+-------+-----------+ |?ID?|?Name????|?RAM?|?Disk?|?Ephemeral?|?VCPUs?|?Is?Public?| +----+---------+-----+------+-----------+-------+-----------+ |?0??|?m1.nano?|??64?|????1?|?????????0?|?????1?|?True??????| +----+---------+-----+------+-----------+-------+-----------+c.列出可用鏡像:
#?openstack?p_w_picpath?list +--------------------------------------+--------+--------+ |?ID???????????????????????????????????|?Name???|?Status?| +--------------------------------------+--------+--------+ |?4b6ebd57-80ab-4b79-8ecc-53a026f3e898?|?cirros?|?active?| +--------------------------------------+--------+--------+d.列出可用網絡
#?openstack?network?list +---------------------+-------------+---------------------+ |?ID??????????????????|?Name????????|?Subnets?????????????| +---------------------+-------------+---------------------+ |?afd4f998-901d-42ca-?|?selfservice?|?1420f8c3-fa03-4ab3-?| |?a002-b25f9b4c9e4e???|?????????????|?9329-4455a52f357c???| |?ff30780d-45af-45dc-?|?provider????|?4a1899dc-581c-4ada-?| |?860f-59b1c091c2a2???|?????????????|?8ebd-ad632f0ce1ee???| +---------------------+-------------+---------------------+e.列出可用的安全組
#?openstack?security?group?list +---------------------+---------+------------------------+---------+ |?ID??????????????????|?Name????|?Description????????????|?Project?| +---------------------+---------+------------------------+---------+ |?74f50594-4ce0-4c29-?|?default?|?Default?security?group?|?????????| |?a987-d33d4d6a5db9???|?????????|????????????????????????|?????????| |?aa0b59f9-abbc-4a8d-?|?default?|?Default?security?group?|?????????| |?a16c-b8f9898cb965???|?????????|????????????????????????|?????????|? +---------------------+---------+------------------------+---------+11.在公有網絡上創建實例
a.獲取 demo 權限
#?.?demo-openrcb.啟動實例
#?openstack?server?create?--flavor?m1.nano?--p_w_picpath?cirros?\\--nic?net-id=ff30780d-45af-45dc-860f-59b1c091c2a2?\\--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???????????????????|?FQeiCB8XbXk8??????????????????????????| |?config_drive????????????????|???????????????????????????????????????| |?created?????????????????????|?2017-03-30T06:04:41Z??????????????????| |?flavor??????????????????????|?m1.nano?(0)???????????????????????????| |?hostId??????????????????????|???????????????????????????????????????| |?id??????????????????????????|?cb37563d-88fc-4b80-ad1a-380fc881db59??| |?p_w_picpath???????????????????????|?cirros????????????????????????????????| |?????????????????????????????|?(b78aacf2-5448-4521-8e23-0f8db63d776a)| |?key_name????????????????????|?mykey?????????????????????????????????| |?name????????????????????????|?provider-instance?????????????????????| |?progress????????????????????|?0?????????????????????????????????????| |?project_id??????????????????|?2ef20ce389eb499696f2d7497c6009b0??????| |?properties??????????????????|???????????????????????????????????????| |?security_groups?????????????|?name='default'????????????????????????| |?status??????????????????????|?BUILD?????????????????????????????????| |?updated?????????????????????|?2017-03-30T06:04:41Z??????????????????| |?user_id?????????????????????|?7cfc508fd5d44b468aac218bd4029bae??????| |?volumes_attached????????????|???????????????????????????????????????| +-----------------------------+---------------------------------------+c.檢查實例的狀態
#?openstack?server?list +-----------------+-----------+--------+--------------+------------+ |?ID??????????????|?Name??????|?Status?|?Networks?????|?Image?Name?| +-----------------+-----------+--------+--------------+------------+ |?cb37563d-88fc-??|?provider-?|?ACTIVE?|?provider=192?|?cirros?????| |?4b80-ad1a-??????|?instance??|????????|?.168.200.108?|????????????| |?380fc881db59????|???????????|????????|??????????????|????????????| +-----------------+-----------+--------+--------------+------------+注:當構建過程完全成功后,狀態會從 BUILD 變為 ACTIVE
12.使用虛擬控制臺、遠程訪問訪問實例
a.獲取實例的 VNC 會話URL并使用web瀏覽器訪問
#?openstack?console?url?show?provider-instance +-------+---------------------------------------------------+ |?Field?|?Value?????????????????????????????????????????????| +-------+---------------------------------------------------+ |?type??|?novnc?????????????????????????????????????????????| |?url???|?http://192.168.30.145:6080/vnc_auto.html?token=cb?| |???????|?37563d-88fc-4b80-ad1a-380fc881db59????????????????| +-------+---------------------------------------------------+b.驗證能否ping通私有網絡的網關和互聯網
c.驗證控制節點或者其他公有網絡上的主機能否ping通實例
d.在控制節點或其他公有網絡上的主機使用 SSH 遠程訪問實例
13.在私有網絡上創建實例
a.獲取 demo 權限
#?.?demo-openrcb.啟動實例
#?openstack?server?create?--flavor?m1.nano?--p_w_picpath?cirros?\\--nic?net-id=afd4f998-901d-42ca-a002-b25f9b4c9e4e?\\--security-group?default?--key-name?mykey?selfservice-instance??
c.檢查實例的狀態
#?openstack?server?listd.獲取實例的 VNC 會話URL并使用web瀏覽器訪問
#?openstack?console?url?show?selfservice-instancee.驗證能否ping通私有網絡的網關和互聯網
14.驗證能否遠程訪問實例
??
a.在公有網絡上創建浮動IP地址池
#?openstack?ip?floating?create?providerb.為實例分配浮動IP
#?openstack?ip?floating?add??selfservice-instancec.檢查這個浮動 IP 地址的狀態
#?openstack?server?listd.驗證控制節點或其他公有網絡上的主機通過浮動IP地址ping通實例
e.在控制節點或其他公有網絡上的主機使用 SSH 遠程訪問實
注:由于實驗所用環境被收回,本人電腦又渣,所以并未進行實例驗證
轉載于:https://blog.51cto.com/wangzhijian/1912492
總結
以上是生活随笔為你收集整理的Ubuntu-16.04 部署 OpenStack Ocata下的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML5一个浪漫的程序猿:3D旋转爱心
- 下一篇: 一根数据线玩转树莓派Zero