查看“OpenStack综合运维”的源代码
←
OpenStack综合运维
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==KeyStone== ===查看用户列表=== [root@controller ~]# source /etc/keystone/admin-openrc.sh [root@controller ~]# openstack user list <nowiki>+----------------------------------+---------+ | ID | Name | +----------------------------------+---------+ | 2dd0faf6febc47aeba0676c22f6e2258 | nova | | 475ed39a48cf426187531315a5b48927 | demo | | 875f7c5525cb438d8f898651a19311d2 | neutron | | 9d35013f64194b16ba8b4a13f9d18266 | glance | | cdc96891246b4afca13a25d005f41494 | admin | +----------------------------------+---------+</nowiki> ===创建用户=== openstack user create [-h] [-f {json,shell,table,value,yaml}] [-c COLUMN] [--max-width <integer>] [--print-empty] [--noindent] [--prefix PREFIX] [--domain <domain>] [--project <project>] [--project-domain <project-domain>] [--password <password>] [--password-prompt] [--email <email-address>] [--description <description>] [--enable | --disable] [--or-show] <name> !!!!!一般使用中只要写出自己需要的参数就好 <nowiki>[root@controller ~]# openstack user create --domain demo --password 000000 ma +-----------+----------------------------------+ | Field | Value | +-----------+----------------------------------+ | domain_id | b39f90915f0a4956b6f643d4354abafe | | enabled | True | | id | 7d8423eaf36b4d0283615c2ddc5a312a | | name | ma | +-----------+----------------------------------+</nowiki> ===显示用户详细信息=== Mitaka版本: openstack user show <user-id> <用户名或者用户id都可以,以下也是一样,为了简单下面只使用user-id> ===更新用户的信息=== openstack user set [-h] [--name <name>] [--domain <domain>][--project <project>][--project-domain <project-domain>] [--password <password>] [--password-prompt][--email <email-address>][--description <description>] [--enable | --disable] <user> ===赋予用户一个角色=== openstack role add --project demo(项目名) --user demo(用户名) user(角色名) ===查看用户与角色的对应关系---显示的表格是id=== openstack role assignment list ===删除用户的一个角色=== openstack user-role-remove --user-id <user-id> --role-id <role-id> [--tenant-id <tenant-id>] ===更新用户信息=== openstack role remove [-h] [--domain <domain> | --project <project>] [--user <user> | --group <group>] [--group-domain <group-domain>] [--project-domain <project-domain>] [--user-domain <user-domain>] [--inherited] [--role-domain <role-domain>] <role> ===删除用户=== openstack user delete <user-id> ===显示工程列表=== openstack project list <nowiki>[root@controller ~]# openstack project list +----------------------------------+---------+ | ID | Name | +----------------------------------+---------+ | 021a6c77448f45b899502ab99a6d74e2 | admin | | 10092084d56046baa1fda067dcb38e48 | service | | 5a5f220240504928b92c0547b2a39bd8 | demo | </nowiki> ===创建工程=== openstack project create name ===删除工程=== openstack project delete <project-id> ===更新工程信息=== <nowiki>openstack project-update [--name <project_name>][--domain <domain>] [--description <project-description>] [--enabled <true|false>] <project-id></nowiki> ===显示工程详细信息=== openstack project show<project-id> ===显示角色列表=== openstack role list ===创建角色=== openstack role create name ===删除角色=== openstack role delete <role-id> ===显示角色详细信息=== openstack role show <role-id> ===显示服务列表=== openstack service list <nowiki>[root@controller ~]# openstack service list +----------------------------------+----------+----------+ | ID | Name | Type | +----------------------------------+----------+----------+ | cd4e3238f1814cde8d97b95127ee3a4c | keystone | identity | +----------------------------------+----------+----------+ </nowiki> ===创建服务=== <nowiki>openstack service create [-h] [-f {json,shell,table,value,yaml}] [-c COLUMN] [--max-width <integer>] [--print-empty] [--noindent] [--prefix PREFIX] [--name <name>] [--description <description>] [--enable | --disable] <type></nowiki> ===删除服务=== openstack service delete <service-id> ===显示服务详细信息=== openstack service show <service-id> ===显示Endpoint列表=== openstack endpoint list <nowiki>[root@controller ~]# openstack endpoint list +----------------------------------+-----------+--------------+--------------+---------+-----------+----------------------------+ | ID | Region | Service Name | Service Type | Enabled | Interface | URL | +----------------------------------+-----------+--------------+--------------+---------+-----------+----------------------------+ | 7961b02c57c14625bf71f463eab518e5 | RegionOne | keystone | identity | True | public | http://controller:5000/v3 | | 80e60f17db0c4fdca2b9ffb5073c3af2 | RegionOne | keystone | identity | True | internal | http://controller:5000/v3 | | 9c188a9a356c4697b49cb4ce721135c0 | RegionOne | keystone | identity | True | admin | http://controller:35357/v3 | </nowiki> ===创建Endpoint=== <nowiki>openstack endpoint create [-h] [-f {json,shell,table,value,yaml}] [-c COLUMN] [--max-width <integer>] [--print-empty] [--noindent] [--prefix PREFIX] [--region <region-id>] [--enable | --disable] <service> <interface> <url></nowiki> ===删除Endpoint=== openstack endpoint delete <endpoint-id> ===显示Endpoint详细信息=== openstack endpoint show <service-id> ===列出catalog=== openstack catalog list <nowiki>[root@controller ~]# openstack catalog list +----------+----------+---------------------------------------+ | Name | Type | Endpoints | +----------+----------+---------------------------------------+ | keystone | identity | RegionOne | | | | public: http://controller:5000/v3 | | | | RegionOne | | | | internal: http://controller:5000/v3 | | | | RegionOne | | | | admin: http://controller:35357/v3 | | | | | +----------+----------+---------------------------------------+</nowiki> ==镜像服务== ===创建镜像=== 从网站http://download.cirros-cloud.net/0.3.0/ 上下载Cirros测试镜像cirros-0.3.0-x86_64-disk.img到电脑桌面。 将桌面上的Cirros镜像通过SecureFXPortable软件上传到控制节点的文件系统中,例如 上传到虚拟机的/mnt/目录中 图片 生效环境变量 # source admin-openrc.sh 执行镜像创建命令 glance image-create --name maxin --file /mnt/cirros-0.3.0-x86_64-disk.img --disk-format qcow2 --container-format bare --progress(请把这里的标红颜色的镜像名称和镜像源文件地址替换成你自己的。)将命令成功执行后的结果截图如下: ===列出所有镜像=== 执行命令 glance image-list ,结果如下: 图片 ===查看镜像的详细信息=== 执行命令glance image-show [id号] 这里的[id号]替换成你在执行上一步列表中任意一个镜像所对应的ID号 ===删除镜像=== 现在我们再上传一个镜像,这回用班级命名,然后用命令行把它删除掉 glance image-create --name wangluo15 --file /mnt/cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --progress(请把这里的标红颜色的镜像名称和镜像源文件地址替换成你自己的。) 执行命令 glance image-list ,查看当前的镜像列表,截图如下: 在上一命令的返回列表中,找到你刚上传的这个镜像的ID号,然后把这个镜像删除: glance image-delete [id号] ==计算服务== ===查看当前所有的nova服务是否正常=== (本步骤及以下均在命令行界面中完成) source admin-openrc.sh nova service-list ===查看当前可用镜像=== nova image-list ===查看云主机类型=== nova flavor-list ===查看当前已建立的云主机情况=== nova list ===查看具体的某一台主机的信息=== nova show [uuid] (其中 [uuid] 代表上一个表中某一台云主机的id号,下同) ===查看当前网络=== nova network-list ===查看当前网络的具体信息=== [root@controller ~]# nova network-show 0f82a3a5-5f0e-42d3-ba8b-93a02ea76a20 ===建立云主机=== ====创建密钥==== 创建一个密钥: nova keypair-add oskey > oskey.priv chmod 600 oskey.priv ====你查看所有可用的云主机类型==== nova flavor-list ====查看现在可用的镜像类型==== nova image-list ====新建立云主机==== 最后,你利用刚才查到的云主机类型和镜像信息,在后台新建立一个云主机, nova boot --flavor [flavor-id] --key_name oskey --image [image-id] hostname 其中,flavor-id 就是上上步云主机类型表里的id号,建议选tiny的那个,oskey是你刚才创建的密钥,image-id就是上步镜像表里的id号,建议选cirros的那个,hostname换成你自己想起的云主机的名字。 ===云主机的管理=== ====检查云主机状态==== 检查一下当前云主机的状态。 nova list 截图如下: ====开启云主机==== nova list nova start [uuid] ((其中 [uuid] 代表上一个表中某一台云主机的id号,下同) 执行命令 nova list ,如果当前云主机在Status那一栏显示Active,表示开启成功,截图如下: ====重启云主机==== nova reboot [uuid] ([uuid]代表着上一个表中第一台云主机的id号) ====关闭云主机==== nova stop [uuid] 其中 [uuid]代表了上个表中云主机的id号 ===快照操作=== ====创建快照==== nova list nova image-create [uuid] "snapshot01" ([uuid]代表着上一个表中第一台云主机的id号) nova image-list 截图如下: ====建立更多云主机==== 通过快照建立更多云主机 nova keypair-add oskey2 > oskey2.priv chmod 600 oskey2.priv nova flavor-list nova image-list nova boot --flavor [flavor-id] --key_name oskey2 --image [image-id] hostname 其中,flavor-id 就是上上步云主机类型表里的id号,建议选tiny的那个,image-id就是上步镜像表里的id号,选择你刚刚建立的那个快照的id,hostname换成你自己想起的云主机的名字。(截图如下:) 用这种方法,在云平台上快速建立2~3个新的云主机,以满足顾客访问的需要。 ==网络服务== ===列出当前租户所有的网络=== neutron net-list <nowiki>+--------------------------------------+------------+-----------------------------------------------------+ | id | name | subnets | +--------------------------------------+------------+-----------------------------------------------------+ | 0f82a3a5-5f0e-42d3-ba8b-93a02ea76a20 | sharednet1 | c3623b66-3fff-49ec-b78b-6c48348aedb2 192.168.1.0/24 | +--------------------------------------+------------+-----------------------------------------------------+ </nowiki> ===查看一个网络的详细信息=== neutron net-show <name-or-id> <nowiki>[root@controller ~]# neutron net-show 0f82a3a5-5f0e-42d3-ba8b-93a02ea76a20 +---------------------------+--------------------------------------+ | Field | Value | +---------------------------+--------------------------------------+ | admin_state_up | True | | id | 0f82a3a5-5f0e-42d3-ba8b-93a02ea76a20 | | name | sharednet1 | | provider:network_type | flat | | provider:physical_network | physnet1 | | provider:segmentation_id | | | router:external | False | | shared | True | | status | ACTIVE | | subnets | c3623b66-3fff-49ec-b78b-6c48348aedb2 | | tenant_id | a0a60387c08e402f9790b05310245cd8 | +---------------------------+--------------------------------------+ </nowiki> ===列出网络中所有的agent(代理)=== neutron agent-list <nowiki>+--------------------------------------+--------------------+------------+-------+----------------+ | id | agent_type | host | alive | admin_state_up | +--------------------------------------+--------------------+------------+-------+----------------+ | 0276239c-7920-4a80-b0de-a986271c2068 | L3 agent | controller | :-) | True | | 204f542c-763a-4313-932c-c86e54418830 | Metadata agent | controller | :-) | True | | 5eaf9601-e590-4719-951a-bd7ed7e5e3d3 | DHCP agent | controller | :-) | True | | 6c1af6b0-8ade-4483-804d-075ce0833146 | Open vSwitch agent | controller | :-) | True | +--------------------------------------+--------------------+------------+-------+----------------+ </nowiki> ===列出路由信息=== neutron router-list ===删除现有网络=== ====删除路由接口==== 查看端口信息:neutron port-list <nowiki>+--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+ | id | name | mac_address | fixed_ips | +--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+ | 596e4378-889c-4944-8335-b196467f2cf1 | | fa:16:3e:9e:86:be | {"subnet_id": "c3623b66-3fff-49ec-b78b-6c48348aedb2", "ip_address": "192.168.1.109"} | | 79e423dc-7f01-4a67-b64b-d9ef9a9c6bf6 | | fa:16:3e:8c:84:27 | {"subnet_id": "c3623b66-3fff-49ec-b78b-6c48348aedb2", "ip_address": "192.168.1.111"} | | 9f1882a0-0d89-40ea-a7eb-c891885b1389 | | fa:16:3e:2c:ff:b6 | {"subnet_id": "c3623b66-3fff-49ec-b78b-6c48348aedb2", "ip_address": "192.168.1.101"} | | ea4dae07-1677-48f2-8ca8-5a01b9a729aa | | fa:16:3e:8f:c1:43 | {"subnet_id": "c3623b66-3fff-49ec-b78b-6c48348aedb2", "ip_address": "192.168.1.102"} | | fdfcdf5e-8e49-4d52-b8db-c8da69f706d9 | | fa:16:3e:76:58:39 | {"subnet_id": "c3623b66-3fff-49ec-b78b-6c48348aedb2", "ip_address": "192.168.1.110"} | +--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+ </nowiki> 查看网络信息: neutron net-list <nowiki>+--------------------------------------+------------+-----------------------------------------------------+ | id | name | subnets | +--------------------------------------+------------+-----------------------------------------------------+ | 0f82a3a5-5f0e-42d3-ba8b-93a02ea76a20 | sharednet1 | c3623b66-3fff-49ec-b78b-6c48348aedb2 192.168.1.0/24 | +--------------------------------------+------------+-----------------------------------------------------+ </nowiki> 查看子网信息:neutron subnet-list <nowiki>+--------------------------------------+------+----------------+----------------------------------------------------+ | id | name | cidr | allocation_pools | +--------------------------------------+------+----------------+----------------------------------------------------+ | c3623b66-3fff-49ec-b78b-6c48348aedb2 | | 192.168.1.0/24 | {"start": "192.168.1.100", "end": "192.168.1.200"} | +--------------------------------------+------+----------------+----------------------------------------------------+ </nowiki> 查看路由信息:neutron router-list 删除router-interface: neutron router-interface-delete [router-id] [subnet-id] ====删除端口信息==== 查看端口信息: neutron port-list <nowiki>+--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+ | id | name | mac_address | fixed_ips | +--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+ | 596e4378-889c-4944-8335-b196467f2cf1 | | fa:16:3e:9e:86:be | {"subnet_id": "c3623b66-3fff-49ec-b78b-6c48348aedb2", "ip_address": "192.168.1.109"} | | 79e423dc-7f01-4a67-b64b-d9ef9a9c6bf6 | | fa:16:3e:8c:84:27 | {"subnet_id": "c3623b66-3fff-49ec-b78b-6c48348aedb2", "ip_address": "192.168.1.111"} | | 9f1882a0-0d89-40ea-a7eb-c891885b1389 | | fa:16:3e:2c:ff:b6 | {"subnet_id": "c3623b66-3fff-49ec-b78b-6c48348aedb2", "ip_address": "192.168.1.101"} | | ea4dae07-1677-48f2-8ca8-5a01b9a729aa | | fa:16:3e:8f:c1:43 | {"subnet_id": "c3623b66-3fff-49ec-b78b-6c48348aedb2", "ip_address": "192.168.1.102"} | | fdfcdf5e-8e49-4d52-b8db-c8da69f706d9 | | fa:16:3e:76:58:39 | {"subnet_id": "c3623b66-3fff-49ec-b78b-6c48348aedb2", "ip_address": "192.168.1.110"} | +--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+ </nowiki> 删除端口信息:neutron port-delete [id] 反复删除,直到将所有的端口都删干净为止。 再次查看端口信息:neutron port-list <nowiki>[root@controller ~]# neutron port-delete 596e4378-889c-4944-8335-b196467f2cf1 Deleted port: 596e4378-889c-4944-8335-b196467f2cf1 [root@controller ~]# neutron port-delete 79e423dc-7f01-4a67-b64b-d9ef9a9c6bf6 Deleted port: 79e423dc-7f01-4a67-b64b-d9ef9a9c6bf6 [root@controller ~]# neutron port-delete 9f1882a0-0d89-40ea-a7eb-c891885b1389 Deleted port: 9f1882a0-0d89-40ea-a7eb-c891885b1389 [root@controller ~]# neutron port-delete ea4dae07-1677-48f2-8ca8-5a01b9a729aa Deleted port: ea4dae07-1677-48f2-8ca8-5a01b9a729aa [root@controller ~]# neutron port-delete fdfcdf5e-8e49-4d52-b8db-c8da69f706d9 Deleted port: fdfcdf5e-8e49-4d52-b8db-c8da69f706d9 </nowiki> ====删除子网==== 查看子网信息:neutron subnet-list <nowiki>+--------------------------------------+------+----------------+----------------------------------------------------+ | id | name | cidr | allocation_pools | +--------------------------------------+------+----------------+----------------------------------------------------+ | c3623b66-3fff-49ec-b78b-6c48348aedb2 | | 192.168.1.0/24 | {"start": "192.168.1.100", "end": "192.168.1.200"} | +--------------------------------------+------+----------------+----------------------------------------------------+ </nowiki> 删除子网信息:neutron subnet-delete [id] 直到把所有的子网到删除为止: <nowiki>[root@controller ~]# neutron subnet-delete c3623b66-3fff-49ec-b78b-6c48348aedb2 Deleted subnet: c3623b66-3fff-49ec-b78b-6c48348aedb2 </nowiki> ====删除路由==== 查看路由信息: neutron router-list 删除路由:neutron route-delete [id] ====删除整个网络==== 查看网络信息: neutron net-list <nowiki>+--------------------------------------+------------+---------+ | id | name | subnets | +--------------------------------------+------------+---------+ | 0f82a3a5-5f0e-42d3-ba8b-93a02ea76a20 | sharednet1 | | +--------------------------------------+------------+---------+ </nowiki> 删除网络信息: neutron net-delete [id] <nowiki>[root@controller ~]# neutron net-delete 0f82a3a5-5f0e-42d3-ba8b-93a02ea76a20 Deleted network: 0f82a3a5-5f0e-42d3-ba8b-93a02ea76a20 </nowiki> ===创建一个新的网络(FLAT型)=== ====查看租户信息==== keystone tenant-list <nowiki>+----------------------------------+---------+---------+ | id | name | enabled | +----------------------------------+---------+---------+ | 00d9dcd033d542b68614c88d19fa0544 | admin | True | | a0a60387c08e402f9790b05310245cd8 | service | True | </nowiki> ====创建网络==== neutron net-create --tenant-id [tenant-service-id] sharednet1 --shared --provider:network_type flat --provider:physical_network physnet1 <nowiki>+---------------------------+--------------------------------------+ | Field | Value | +---------------------------+--------------------------------------+ | admin_state_up | True | | id | cf6e1ccf-1ac7-4928-93d0-0ef8487c47af | | name | sharednet1 | | provider:network_type | flat | | provider:physical_network | physnet1 | | provider:segmentation_id | | | shared | True | | status | ACTIVE | | subnets | | | tenant_id | a0a60387c08e402f9790b05310245cd8 | +---------------------------+--------------------------------------+ </nowiki> ====创建子网==== neutron subnet-create sharednet1 192.168.100.0/24 --name subnet001 --enable_dhcp=False --allocation-pool start=192.168.100.100,end=192.168.100.150 --gateway=192.168.100.2 <nowiki>Created a new subnet: +------------------+--------------------------------------------------------+ | Field | Value | +------------------+--------------------------------------------------------+ | allocation_pools | {"start": "192.168.100.100", "end": "192.168.100.150"} | | cidr | 192.168.100.0/24 | | dns_nameservers | | | enable_dhcp | False | | gateway_ip | 192.168.100.2 | | host_routes | | | id | 4073e2b2-ac4e-4256-b6fb-828912b48492 | | ip_version | 4 | | name | subnet001 | | network_id | cf6e1ccf-1ac7-4928-93d0-0ef8487c47af | | tenant_id | 00d9dcd033d542b68614c88d19fa0544 | +------------------+--------------------------------------------------------+ </nowiki> 此步如果有困难,可到图形界面中完成: ====在网络上创建云主机(此步如果有困难,可到图形界面中完成)==== nova keypair-add oskey2 > oskey2.priv chmod 600 oskey2.priv nova flavor-list <nowiki>+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+ | ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | +----+-----------+-----------+------+-----------+------+-------+-------------+-----------+ | 1 | m1.tiny | 512 | 1 | 0 | | 1 | 1.0 | True | | 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True | | 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True | | 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True | | 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True | +----+-----------+-----------+------+-----------+------+-------+-------------+-----------+ </nowiki> nova image-list <nowiki>+--------------------------------------+----------------+--------+-------------- ------------------------+ | ID | Name | Status | Server | +--------------------------------------+----------------+--------+-------------- ------------------------+ | 9d3ec99c-5360-4838-bf47-fe40b0b72436 | centos6.5 | ACTIVE | | | 498ef44c-0d77-4c8f-ad1e-508c8ca858b1 | cirros | ACTIVE | | | 37fcb738-1a4a-45bb-aa31-60b295fabc37 | cirros_01 | ACTIVE | 4f7ae23b-6701 -41e0-b693-a426b8ba6d83 | | 22758970-cc05-4ea9-872d-91b635a63149 | cirros_1112 | ACTIVE | | | 1e13f713-5983-4869-aad3-24e538c7b3df | maxin | ACTIVE | | | 853dd09e-b5e0-4326-ab02-7f9db3ba872f | maxin | ACTIVE | | | abfd84a8-bd63-401f-93fa-ac3dca313fad | maxin | ACTIVE | f88a98bc-311d -48ae-a4f6-e85d282a113a | | ef2e6909-9938-4fd0-85a9-196f1fe6b7e6 | maxin | ACTIVE | | | bf75808f-ce96-42f9-a222-3f32b029545f | wulian1602_yun | ACTIVE | 4a19e125-6104 -464a-a8ea-247b49f4fc76 | +--------------------------------------+----------------+--------+-------------- ------------------------+ </nowiki> nova boot --flavor [flovor_id] --key_name oskey2 --image [image_id] maxin1109 <nowiki>[root@controller ~]# nova boot --flavor 1 --key_name oskey2 --image 498ef44c-0d77-4c8f-ad1e-508c8ca858b1 maxin1108 +--------------------------------------+-----------------------------------------------+ | Property | Value | +--------------------------------------+-----------------------------------------------+ | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | nova | | OS-EXT-SRV-ATTR:host | - | | OS-EXT-SRV-ATTR:hypervisor_hostname | - | | OS-EXT-SRV-ATTR:instance_name | instance-0000000e | | OS-EXT-STS:power_state | 0 | | OS-EXT-STS:task_state | scheduling | | OS-EXT-STS:vm_state | building | | OS-SRV-USG:launched_at | - | | OS-SRV-USG:terminated_at | - | | accessIPv4 | | | accessIPv6 | | | adminPass | 94t3Rq8FWoXH | | config_drive | | | created | 2018-12-09T20:05:30Z | | flavor | m1.tiny (1) | | hostId | | | id | 069beb3c-efe1-488e-b725-3afb3a763ad9 | | image | cirros (498ef44c-0d77-4c8f-ad1e-508c8ca858b1) | | key_name | oskey2 | | metadata | {} | | name | maxin1108 | | os-extended-volumes:volumes_attached | [] | | progress | 0 | | security_groups | default | | status | BUILD | | tenant_id | 00d9dcd033d542b68614c88d19fa0544 | | updated | 2018-12-09T20:05:30Z | | user_id | 83cbfd254b294529853aa51200bd6fe4 | +--------------------------------------+-----------------------------------------------+ </nowiki> 参考文档:https://www.cnblogs.com/52why/p/8080893.html
返回至
OpenStack综合运维
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息