文章目录
- [OpenStack 实验指导手册](#OpenStack 实验指导手册)
-
- [1 OpenStack 界面管理](#1 OpenStack 界面管理)
-
- [1.1 实验介绍](#1.1 实验介绍)
-
- [1.1.1 关于本实验](#1.1.1 关于本实验)
- [1.1.2 前提条件](#1.1.2 前提条件)
- [1.1.3 实验目的](#1.1.3 实验目的)
- [1.1.4 实验流程](#1.1.4 实验流程)
- [1.2 登录 OpenStack Dashboard](#1.2 登录 OpenStack Dashboard)
-
- [1.2.1 操作步骤](#1.2.1 操作步骤)
- [1.3 登录 OpenStack 客户端 (命令行)](#1.3 登录 OpenStack 客户端 (命令行))
-
- [1.3.1 操作步骤](#1.3.1 操作步骤)
- [2 OpenStack 认证管理](#2 OpenStack 认证管理)
-
- [2.1 实验介绍](#2.1 实验介绍)
-
- [2.1.1 关于本实验](#2.1.1 关于本实验)
- [2.1.2 实验目的](#2.1.2 实验目的)
- [2.1.3 实验流程](#2.1.3 实验流程)
- [2.2 OpenStack Dashboard 操作](#2.2 OpenStack Dashboard 操作)
- [2.3 OpenStack CLI 操作](#2.3 OpenStack CLI 操作)
- [3 OpenStack 镜像管理](#3 OpenStack 镜像管理)
-
- [3.1 实验介绍](#3.1 实验介绍)
-
- [3.1.1 关于本实验](#3.1.1 关于本实验)
- [3.1.2 实验目的](#3.1.2 实验目的)
- [3.1.3 实验流程](#3.1.3 实验流程)
- [3.2 OpenStack Dashboard 操作](#3.2 OpenStack Dashboard 操作)
- [3.3 OpenStack CLI 操作](#3.3 OpenStack CLI 操作)
- [4 OpenStack 计算管理](#4 OpenStack 计算管理)
-
- [4.1 实验介绍](#4.1 实验介绍)
-
- [4.1.1 关于本实验](#4.1.1 关于本实验)
- [4.1.2 实验目的](#4.1.2 实验目的)
- [4.1.3 实验流程](#4.1.3 实验流程)
- [4.2 OpenStack Dashboard 操作](#4.2 OpenStack Dashboard 操作)
-
- [4.2.1 Hypervisor 和主机聚合管理](#4.2.1 Hypervisor 和主机聚合管理)
- [4.2.2 实例类型 (规格) 管理](#4.2.2 实例类型 (规格) 管理)
- [4.2.3 密钥和虚拟机组管理](#4.2.3 密钥和虚拟机组管理)
- [4.2.4 创建网络](#4.2.4 创建网络)
-
- [操作步骤(创建 shared 网络)](#操作步骤(创建 shared 网络))
- [4.2.5 虚拟机实例操作](#4.2.5 虚拟机实例操作)
-
- [4.2.5.1 发放虚拟机实例](#4.2.5.1 发放虚拟机实例)
- [4.2.5.2 虚拟机实例开启、关闭与重启](#4.2.5.2 虚拟机实例开启、关闭与重启)
- [4.2.5.3 虚拟机实例锁定、解锁](#4.2.5.3 虚拟机实例锁定、解锁)
- [4.2.5.4 虚拟机实例暂停、挂起和恢复](#4.2.5.4 虚拟机实例暂停、挂起和恢复)
- [4.2.5.5 虚拟机实例废弃 (搁置) 和取消废弃 (解搁置)](#4.2.5.5 虚拟机实例废弃 (搁置) 和取消废弃 (解搁置))
- [4.2.5.6 虚拟机实例快照和重建](#4.2.5.6 虚拟机实例快照和重建)
- [4.2.5.7 调整实例大小](#4.2.5.7 调整实例大小)
- [4.2.5.8 虚拟机实例删除](#4.2.5.8 虚拟机实例删除)
- [4.3 OpenStack CLI 操作](#4.3 OpenStack CLI 操作)
-
- [4.3.1 Hypervisor、主机聚合和可用分区管理](#4.3.1 Hypervisor、主机聚合和可用分区管理)
- [4.3.2 规格管理](#4.3.2 规格管理)
- [4.3.3 密钥对和虚拟机组管理](#4.3.3 密钥对和虚拟机组管理)
- [4.3.4 虚拟机实例操作](#4.3.4 虚拟机实例操作)
- [5 OpenStack 存储管理](#5 OpenStack 存储管理)
-
- [5.1 实验介绍](#5.1 实验介绍)
-
- [5.1.1 关于本实验](#5.1.1 关于本实验)
- [5.1.2 实验目的](#5.1.2 实验目的)
- [5.1.3 实验流程](#5.1.3 实验流程)
- [5.2 OpenStack Dashboard 操作](#5.2 OpenStack Dashboard 操作)
-
- [5.2.1 卷类型和 QoS 管理](#5.2.1 卷类型和 QoS 管理)
- 操作步骤
- [5.2.2 卷管理](#5.2.2 卷管理)
-
- [5.2.2.1 创建卷](#5.2.2.1 创建卷)
- [5.2.2.2 挂载和卸载卷](#5.2.2.2 挂载和卸载卷)
- [5.2.2.3 上传卷到镜像](#5.2.2.3 上传卷到镜像)
- [5.2.2.4 创建卷快照](#5.2.2.4 创建卷快照)
- [5.2.2.5 卷扩容](#5.2.2.5 卷扩容)
- [5.2.2.6 基于卷快照创建卷](#5.2.2.6 基于卷快照创建卷)
- [5.2.2.7 基于卷发放虚拟机实例](#5.2.2.7 基于卷发放虚拟机实例)
OpenStack 实验指导手册
1 OpenStack 界面管理
1.1 实验介绍
1.1.1 关于本实验
本实验主要介绍如何通过 OpenStack Dashboard 及命令行登录 OpenStack,并进行一些基本操作,以便快速了解 OpenStack 的基本功能。
1.1.2 前提条件
- OpenStack 开发环境已安装成功。
- 已获取 OpenStack 开发环境的默认登录信息。
1.1.3 实验目的
- 熟悉 OpenStack Dashboard 登录方式。
- 熟悉 OpenStack Dashboard 界面内容显示。
- 了解 OpenStack 的基本功能,比如修改默认用户的登录密码;创建一个用户,绑定主项目,分配角色等。
- 熟悉如何登录 OpenStack 命令行客户端。
1.1.4 实验流程
- 登录 OpenStack
- 熟悉不同项目界面
- 熟悉修改密码步骤
- 创建特定用户(图 1-1 OpenStack 界面管理实验流程图)
1.2 登录 OpenStack Dashboard
1.2.1 操作步骤
- 在浏览器中输入:
http://192.168.108.10(OpenStack主机地址),输入用户名(默认admin)和密码,单击"登入"。 - 登录成功后,默认进入
admin项目概况界面,可自行查看admin项目中计算、卷、网络等界面。 - 单击左侧导航栏中的"管理员",选择"概览",可查看系统使用情况的摘要界面。
- 单击左侧导航栏中的"身份管理",选择"项目",可查看项目的界面,包括身份管理的项目、用户、组、角色、应用程序凭证等。
- 修改用户"admin"的登录密码:单击右上角"admin",在弹出框中选择"设置"。
- 在弹出界面中,选择"修改密码",按要求输入原密码,自定义新密码,单击"修改"。
- 返回 OpenStack 登录界面,输入用户名和步骤 6 自定义的登录密码,单击"登入"。
- 本实验以项目"admin"为例创建业务员:打开"身份管理"。
- 单击"用户",可先单击左上角"admin"切换至"admin"项目。
- 在左边界面中,单击右上角的"创建用户",在创建用户框中设置用户名为
user1,自定义登录密码,主项目选择"admin",角色选择 "member",单击下方的"创建用户",右上角提示成功(成功:用户 "user1" 成功创建)。 - 单击右上角"admin",在弹出框中单击"退出",退回登录界面。
- 在登录界面中,输入新创建的用户名(
user1)和步骤 10 自定义的密码,单击"登入"。 - 进入项目"admin"下用户名"user1"、角色为"member"的主界面。
思考 :user1 和 admin 用户登录界面有何区别?
1.3 登录 OpenStack 客户端 (命令行)
1.3.1 操作步骤
-
使用 MobaXterm 远程登录:
-
输入:
root -
密码进行连接。
-
会话设置:
- Basic SSH settings :远程主机
192.168.108.10,指定用户名root,端口 22。 - Advanced SSH settings :会话名称
controller,其他默认。
- Basic SSH settings :远程主机
-
点击"OK"开始会话。
-
-
直接执行
keystonerc_admin,进入管理员视图:bashsource keystonerc_admin [root@controller~]# source keystonerc_admin -
输入命令,查看当前 OpenStack 中的项目列表,验证是否登录成功:
bashopenstack project list-
若显示如下列表,表示导入环境变量成功:
ID | Name | ------------------------------------ |-----------| 849ccdf6e95c41f7857bee41d6252cb1 | services | 9dfc7c9839ea4ff387fc223cd4d61823 | admin | -
若显示
-bash: openstack: command not found等回显,表示导入环境变量失败,需检查keystonerc_admin中是否存在错误信息。
-
-
若要切换其他用户登录(以
user1为例),创建keystonerc_user1文件并编辑:bash[root@controller (keystone_admin)]# cp keystonerc_admin keystonerc_user1 [root@controller ~(keystone_admin)]# vim keystonerc_user1-
写入以下内容:
bashunset OS_SERVICE_TOKEN export OS_USERNAME=user1 export OS_PASSWORD='huawei' export OS_REGION_NAME=RegionOne export OS_AUTH_URL=http://192.168.108.10:5000/v3 export PS1='[\u@\h \W(keystone_user1)]\$ ' export OS_PROJECT_NAME=admin export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_DOMAIN_NAME=Default export OS_IDENTITY_API_VERSION=3
-
-
执行文件并查看项目列表:
bash[root@controller ~(keystone_admin)]# source keystonerc_user1 [root@controller ~(keystone_user1)]# openstack project list ID | Name | ------------------------------------ |-----------| 9dfc7c9839ea4ff387fc223cd4d61823 | admin |
2 OpenStack 认证管理
2.1 实验介绍
2.1.1 关于本实验
本实验主要介绍如何通过 OpenStack Dashboard 和 OpenStack CLI 两种方式创建角色、用户、用户组及项目等,并验证不同角色用户的权限区别,最后介绍通过 OpenStack CLI 创建服务和服务的 API 端点。
2.1.2 实验目的
- 熟悉 OpenStack Dashboard 和 OpenStack CLI 创建角色、用户及用户组的方法。
- 熟悉 OpenStack Dashboard 和 OpenStack CLI 禁用和删除用户的方法。
- 熟悉 OpenStack Dashboard 和 OpenStack CLI 创建项目并修改项目配额的方法。
2.1.3 实验流程
- 登录 OpenStack
- 创建项目
- 创建角色
- 创建用户并添加角色
- 创建用户组并添加用户
- 验证不同角色用户的权限
- 禁用 / 删除用户
- 修改项目配额
2.2 OpenStack Dashboard 操作
2.2.1 创建角色、用户及用户组
操作步骤
- 使用
admin用户登录 OpenStack Dashboard 界面,在左侧导航栏选择 "身份管理> 角色",进入角色列表,单击页面右上角的 "创建角色"。 - 弹出创建角色对话框,输入角色名称 "Role_web",单击"提交",完成角色创建,可在角色列表查看结果。
- 在左侧导航栏选择 "身份管理> 用户",进入用户列表,单击页面右上角的 "创建用户"。
- 弹出创建用户对话框,填写如下信息:
- 用户名:
User_web_01 - 密码:自行设置并记录
- 项目:选择 "admin"
- 角色:选择刚创建的 "Role_web"
- 其他保持默认
- 单击 "创建用户",在用户列表查看结果。
- 用户名:
- 参考步骤 3~4,创建用户 "User_web_02",角色选择 "admin",其他信息同上,在用户列表查看结果。
- 在左侧导航栏选择 "身份管理> 组",进入用户组列表,单击页面右上角的 "创建组"。
- 弹出创建用户组对话框,输入用户组名称 "Group_web",单击"创建组",完成用户组创建。
- 返回用户组列表,单击待操作的用户组 "Group_web" 所在行的 "管理成员"。
- 进入用户组成员列表,单击页面右上角的"添加用户"。
- 弹出添加组用户对话框,在下方用户列表中勾选 "User_web_01" 和 "User_web_02",单击右上角的"添加用户"。
- 返回用户组成员列表,查看添加的用户。
- 选择"身份管理> 用户",进入用户列表,单击用户名称"User_web_01",进入用户"概览"页面。
- 选择"角色分配"页签,查看用户的角色分配信息。
- 选择"组"页签,查看用户的用户组分配信息。
- 单击页面右上角 "admin",在操作列表中选择"退出",注销
admin用户。 - 返回 OpenStack Dashboard 登录界面,分别输入 "User_web_01" 和 "User_web_02"的用户名和密码,登录后观察两者导航栏及菜单的不同之处。
2.2.2 禁用用户,删除用户
操作步骤
- 使用
admin用户登录 OpenStack Dashboard 界面,选择 "身份管理> 组",进入用户组列表,单击 "Group_web" 所在行的 "管理成员"。 - 进入用户组成员列表,勾选 "User_web_02" 前的复选框,单击页面右上方的 "删除用户"。
- 弹出确认信息提示框,单击 "删除用户"。
- 说明:此操作仅将用户从组中删除,不会在系统中删除用户(可验证:使用 "User_web_02" 密码登录 Dashboard 仍可成功)。
- 在左侧导航栏选择"身份管理> 用户",进入用户列表,在"User_web_02"所在行"编辑"后的下拉框中,单击"禁用用户"。
- 返回用户列表,查看"User_web_02"所在行"Enabled"列,状态由"Yes"变为"No"。
- 勾选"User_web_02"所在行前的复选框,单击页面右上角的"删除用户"。
- 弹出确认信息提示框,单击"删除用户",完成用户删除。
2.2.3 创建项目,修改项目配额
操作步骤
- 使用
admin用户登录 OpenStack Dashboard 界面,选择"身份管理> 项目",进入项目列表,单击页面右上角"创建项目"。 - 弹出创建项目对话框,选择"项目信息"页签,填写项目名称"Project_web",其他保持默认。
- 选择"项目成员"页签,在左侧用户列表单击"User_web_01"后面的"+",右侧显示选择的用户;单击用户后面的角色列表,只勾选"admin"。
- 单击"创建项目",完成项目创建。
- 返回项目列表,单击项目名称"Project_web",进入项目概览页面,选择"用户"页签,查看项目中的用户及角色分配信息。
- 注销
admin用户,使用"User_web_01"登录 Dashboard,切换页面上方项目为"Project_web",观察导航栏及菜单的变化。 - 使用
admin用户登录 Dashboard,选择"身份管理> 项目",进入项目列表,在"Project_web"所在行"Actions"列,单击"管理成员"后的下拉框,选择"修改配额"。 - 弹出编辑配额对话框,在"计算""卷""网络"页签分别修改配额:
- 计算:实例数量 = 5
- 卷:卷数量 = 5
- 网络:网络数量 = 5
- 单击"保存"。
- 使用"User_web_01"登录 Dashboard,切换项目为"Project_web",在左侧导航栏选择"项目 > 计算 > 概况",查看配额变化。
2.3 OpenStack CLI 操作
2.3.1 创建角色、用户及用户组
操作步骤
-
远程登录
controller节点,导入admin用户的环境变量:bash[root@controller ~]# source keystonerc_admin [root@controller ~(keystone_admin)]# -
创建角色 "Role_cli":
bashopenstack role create Role_cli -
创建用户 "User_cli_01" 并设置密码:
bashopenstack user create --domain default --project admin --password-prompt User_cli_01 -
为 "User_cli_01" 在项目 "admin" 中添加角色 "Role_cli":
bashopenstack role add --project admin --user User_cli_01 Role_cli -
参考步骤 3~4,创建用户 "User_cli_02":
bashopenstack user create --domain default --project admin --password-prompt User_cli_02为其添加"admin"角色:
bashopenstack role add --project admin --user User_cli_02 admin -
查看角色分配情况:
bashopenstack role assignment list --names | grep User_cli -
创建用户组 "Group_cli":
bashopenstack group create Group_cli -
为用户组 "Group_cli" 添加用户 "User_cli_01" 和 "User_cli_02":
bashopenstack group add user Group_cli User_cli_01 User_cli_02 -
编辑 "User_cli_01"的环境变量文件
keystonerc_User_cli_01:bash[root@controller ~(keystone_admin)]# cp keystonerc_admin keystonerc_User_cli_01 [root@controller ~(keystone_admin)]# vim keystonerc_User_cli_01修改内容如下:
bashunset OS_SERVICE_TOKEN export OS_USERNAME=User_cli_01 export OS_PASSWORD='huawei' export OS_REGION_NAME=RegionOne export OS_AUTH_URL=http://192.168.108.10:5000/v3 export PS1='[\u@\h \W(keystone_User_cli_01)]\$ ' export OS_PROJECT_NAME=admin export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_DOMAIN_NAME=Default export OS_IDENTITY_API_VERSION=3 -
导入环境变量并查看项目列表:
bash[root@controller ~(keystone_admin)]# source keystonerc_User_cli_01 [root@controller ~(keystone_User_cli_01)]# openstack project list ID | Name | ------------------------------------ |-----------| 9dfc7c9839ea4ff387fc223cd4d61823 | admin | -
参考步骤 9~10,编辑并导入"User_cli_02"的环境变量:
bash[root@controller ~(keystone_User_cli_01)]# cp keystonerc_User_cli_01 keystonerc_User_cli_02 [root@controller ~(keystone_User_cli_01)]# vim keystonerc_User_cli_02 (修改 OS_USERNAME 为 User_cli_02) [root@controller ~(keystone_User_cli_01)]# source keystonerc_User_cli_02 [root@controller ~(keystone_User_cli_02)]# openstack project list(可看到所有项目)
2.3.2 禁用用户,删除用户
操作步骤
-
导入
admin环境变量:bash[root@controller (keystone_User_cli_02)]# source keystonerc_admin [root@controller ~(keystone_admin)]# -
从用户组"Group_cli"中移除用户"User_cli_02":
bashopenstack group remove user Group_cli User_cli_02 -
验证用户是否移除:
bashopenstack group contains user Group_cli User_cli_02 [root@controller ~(keystone_admin)]# openstack group contains user Group_cli User_cli_02 User_cli_02 not in group Group_cli -
禁用用户"User_cli_02":
bashopenstack user set --disable User_cli_02 -
查看用户禁用状态:
bashopenstack user show User_cli_02 -
删除用户"User_cli_02":
bashopenstack user delete User_cli_02 -
查看用户列表,确认删除:
bashopenstack user list
2.3.3 创建项目,修改项目配额
操作步骤
-
创建项目"Project_cli":
bashopenstack project create --domain default Project_cli -
为"User_cli_01"在"Project_cli"中添加"admin"角色:
bashopenstack role add --project Project_cli --user User_cli_01 admin -
查看角色分配情况:
bashopenstack role assignment list --names | grep User_cli_01 -
修改"User_cli_01"的环境变量,将
OS_PROJECT_NAME改为"Project_cli":bashvim keystonerc_User_cli_01 # 修改行:export OS_PROJECT_NAME=Project_cli -
导入环境变量:
bash[root@controller ~(keystone_admin)]# source keystonerc_User_cli_01 [root@controller ~(keystone_User_cli_01)]# -
查看项目列表,验证切换:
bashopenstack project list -
(验证)为用户组"Group_cli"在"Project_cli"中添加"admin"角色:
bashopenstack role add --project Project_cli --group Group_cli admin openstack role assignment list --names | grep Group_cli -
查看"Project_cli"的默认配额:
bashopenstack quota show Project_cli -
修改配额(实例 = 5,卷 = 5,网络 = 10):
bashopenstack quota set --instance 5 --volumes 5 --networks 10 Project_cli -
查看配额变化:
bashopenstack quota show Project_cli | grep -E "instances|volumes|networks"
3 OpenStack 镜像管理
3.1 实验介绍
3.1.1 关于本实验
本实验主要介绍如何通过 OpenStack Dashboard 和 OpenStack CLI 两种方式进行镜像的下载、创建、注册、共享以及镜像格式转换等基本操作。
3.1.2 实验目的
- 了解下载镜像的方法。
- 熟悉 OpenStack Dashboard 和 OpenStack CLI 创建、注册以及修改镜像的方法。
- 熟悉 OpenStack Dashboard 和 OpenStack CLI 共享镜像、转换镜像格式以及导出和删除镜像的方法。
3.1.3 实验流程
- 下载镜像
- 创建并注册镜像
- 修改镜像属性
- 导出 / 删除镜像
3.2 OpenStack Dashboard 操作
3.2.1 下载镜像 (cirros)
操作步骤
- 在本机浏览器输入 cirros 镜像下载地址:
http://download.cirros-cloud.net/0.5.2/。 - 选择 "cirros-0.5.2-x86_64-disk.img",下载到本地(约 10 分钟)。
3.2.2 创建并注册镜像
操作步骤
- 使用
admin用户登录 Dashboard,在admin项目下,左侧导航栏选择 "项目> 计算 > 镜像",进入镜像列表,单击"创建镜像"。 - 弹出创建镜像对话框:
- 镜像名称:
Img_web - 镜像文件:单击"浏览",选择本地下载的
cirros-0.5.2-x86_64-disk.img - 镜像格式:选择 "QCOW2 - QEMU 模拟器"
- 最小磁盘:1 GB
- 最低内存:128 MB
- 可见性:私有
- 受保护性:是
- 镜像名称:
- 单击 "创建镜像",返回镜像列表,等待镜像状态变为 "运行中",表示注册成功。
- 查看镜像的可见性和受保护性(私有、受保护 = 是)。
3.2.3 修改镜像
操作步骤
- 使用
admin用户登录 Dashboard,选择 "项目> 计算 > 镜像",在 "Img_web" 所在行的 "Actions" 列,单击 "编辑镜像"。 - 弹出编辑镜像对话框,将 "可见性" 改为 "公有","受保护" 改为 "否",单击 "更新镜像"。
- 返回镜像列表,查看镜像属性变化(可见性 = 公有,受保护 = 否)。
- 单击镜像名称 "Img_web",查看镜像详细信息(如大小、格式、创建时间等)。
3.3 OpenStack CLI 操作
3.3.1 下载镜像 (cirros)
操作步骤
-
远程登录
controller节点,导入admin环境变量:bash[root@controller ~]# source keystonerc_admin [root@controller ~(keystone_admin)]# -
上传 cirros 镜像到
/root目录(通过 MobaXterm 直接拖动文件到/root文件夹)。 -
查看下载的镜像文件:
bash[root@controller ~(keystone_admin)]# ls -
查看镜像文件详细信息:
bashqemu-img info cirros-0.5.2-x86_64-disk.img
3.3.2 创建并注册镜像
操作步骤
-
导入
admin环境变量(若未导入):bashsource keystonerc_admin -
创建镜像
Img_cli(格式 QCOW2,私有):bashopenstack image create --disk-format qcow2 --container-format bare --min-disk 1 --min-ram 128 --private --file ./cirros-0.5.2-x86_64-disk.img Img_cli -
查看镜像列表,确认状态为"active":
bashopenstack image list -
(权限验证)移除
User_cli_01在Project_cli中的admin角色,添加Role_cli角色:bashopenstack role remove --project Project_cli --user User_cli_01 admin openstack role add --project Project_cli --user User_cli_01 Role_cli -
导入
User_cli_01环境变量,查看镜像列表(仅显示公有 / 共享镜像):bashsource keystonerc_User_cli_01 openstack image list
3.3.3 修改镜像
操作步骤
-
导入
admin环境变量:bashsource keystonerc_admin -
将"Img_cli"设置为公有:
bashopenstack image set --public Img_cli -
查看镜像详细信息,确认可见性变为"public":
bashopenstack image show Img_cli -
导入"User_cli_01"环境变量,查看镜像列表(可看到"Img_cli"):
bashsource keystonerc_User_cli_01 openstack image list
3.3.4 共享镜像
操作步骤
-
导入
admin环境变量:bashsource keystonerc_admin -
将"Img_cli"设置为"shared"(共享模式):
bashopenstack image set --shared Img_cli -
导入"User_cli_01"环境变量,查看镜像列表(仍无法看到"Img_cli",需指定共享项目):
bashsource keystonerc_User_cli_01 openstack image list -
导入
admin环境变量,查看镜像和项目 ID:bashsource keystonerc_admin openstack image list openstack project list -
将"Img_cli"共享给"Project_cli"项目:
bashopenstack image add project 36772705-1ef6-449e-88a2-6a463b09d425 2d309ab0933d47a78553f4b3c723fbc3 -
导入"User_cli_01"环境变量,接受共享镜像:
bashsource keystonerc_User_cli_01 openstack image set --accept 36772705-1ef6-449e-88a2-6a463b09d425 -
查看镜像列表,确认共享成功:
bashopenstack image list
结论:共享镜像需先设置"shared"模式,再指定共享项目,最后由目标项目用户"accept"后才能查看使用。
3.3.5 转换镜像格式
操作步骤
-
下载 VMDK 格式的 Ubuntu 镜像(下载地址:
http://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.vmdk)。 -
导入
admin环境变量,查看镜像文件:bashsource keystonerc_admin ls -
查看 VMDK 镜像详细信息:
bashqemu-img info bionic-server-cloudimg-amd64.vmdk -
转换为 QCOW2 格式(启用压缩,显示进度):
bashqemu-img convert -f vmdk -O qcow2 -c -p bionic-server-cloudimg-amd64.vmdk bionic-server-cloudimg-amd64.qcow2 -
查看转换后的 QCOW2 镜像信息:
bashqemu-img info bionic-server-cloudimg-amd64.qcow2 -
创建 Ubuntu 镜像
Ubuntu_cli(公有):bashopenstack image create --disk-format qcow2 --container-format bare --min-disk 1 --min-ram 128 --public --file ./bionic-server-cloudimg-amd64.qcow2 Ubuntu_cli
3.3.6 导出镜像
操作步骤
-
查看镜像列表,确认
Ubuntu_cli存在:bashopenstack image list -
导出
Ubuntu_cli到本地文件Ubuntu.qcow2:bashopenstack image save --file Ubuntu.qcow2 Ubuntu_cli -
查看导出的文件:
bashls
3.3.7 删除镜像
操作步骤
-
删除
Ubuntu_cli镜像:bashopenstack image delete Ubuntu_cli -
查看镜像列表,确认删除:
bashopenstack image list
4 OpenStack 计算管理
4.1 实验介绍
4.1.1 关于本实验
本实验主要介绍如何通过 OpenStack Dashboard 和 OpenStack CLI 两种方式管理 Hypervisor、主机聚合、规格、密钥对以及虚拟机组,最后介绍虚拟机实例的发放、生命周期管理以及快照和重建等基本操作。
4.1.2 实验目的
- 熟悉 OpenStack Dashboard 和 OpenStack CLI 主机聚合的创建和操作方法。
- 熟悉 OpenStack Dashboard 和 OpenStack CLI 规格的创建和操作方法。
- 熟悉 OpenStack Dashboard 和 OpenStack CLI 密钥对和虚拟机组的创建和操作方法。
- 熟悉 OpenStack Dashboard 和 OpenStack CLI 虚拟机实例的发放、生命周期管理以及快照和重建等基本操作方法。
4.1.3 实验流程
管理 Hypervisor / 主机聚合
→ 创建规格 / 密钥对 / 虚拟机组
→ 发放虚拟机实例
→ 实例生命周期管理(启动 / 关闭 / 重启 / 锁定 / 暂停等)
→ 创建实例快照 / 重建实例
→ 调整实例大小
→ 删除实例
4.2 OpenStack Dashboard 操作
4.2.1 Hypervisor 和主机聚合管理
操作步骤
- 使用
admin用户登录 Dashboard,在左侧导航栏选择 "管理员> 计算 > 虚拟机管理器",进入虚拟机管理器概述列表,查看 VCPU、内存、本地磁盘的使用情况。 - 选择 "计算主机" 页签,查看计算节点(如
controller、compute)的状态(激活、启动)。 - 左侧导航栏选择 "管理员> 计算 > 主机聚合",进入主机聚合列表,单击 "创建主机聚合"。
- 弹出创建主机聚合对话框,"主机聚合信息" 页签输入:
- 名称:
HostAggr_web - 可用域:
nova
- 名称:
- 选择 "管理聚合内的主机" 页签,在左侧可用主机中单击 "controller" 后面的 "+",右侧显示选择的主机,单击 "创建主机聚合"。
- 返回主机聚合列表,查看创建的 "HostAggr_web"。
验证操作
- 参考步骤 3~5,创建主机聚合 "HostAggr_web_test",可用域设置为 "AZ_web",添加主机 "controller":
- 结果:创建失败,提示 "向聚合中添加主机时出错",同一主机无法加入不同可用域(AZ)。
- 编辑 "HostAggr_web_test"的可用域为 "nova",再添加 "controller":
- 结果:添加成功,同一主机可加入不同主机聚合(同一 AZ 下)。
- 从 "HostAggr_web_test" 中移除 "controller",并删除该主机聚合。
4.2.2 实例类型 (规格) 管理
操作步骤
- 左侧导航栏选择 "管理员> 计算 > 实例类型",进入规格列表,单击 "创建实例类型"。
- 弹出创建实例类型对话框,"实例类型信息" 页签输入:
- 名称:
Flavor_web - VCPU 数量:1
- 内存 (MB):128
- 根磁盘 (GB):1
- 其他保持默认
- 名称:
- 选择 "实例类型使用权" 页签,在左侧项目列表中单击 "Project_web" 后面的 "+",右侧显示选择的项目,单击 "创建实例类型"。
- 参考步骤 2~3,创建规格 "Flavor_web_test",不选择任何项目(默认对所有项目可用,即 "Public")。
验证操作
- 编辑 "Flavor_web"的使用权,移除 "Project_web":
- 结果 :规格仍为 "Private",仅
admin角色用户可见但无法使用,其他用户不可见。说明 "移除所有项目" ≠ "Public"。
- 结果 :规格仍为 "Private",仅
- 结论:规格创建后无法变更 "Public/Private" 属性,需删除后重新创建。
- 删除 "Flavor_web" 和 "Flavor_web_test"。
4.2.3 密钥和虚拟机组管理
操作步骤(密钥对)
- 左侧导航栏选择 "项目> 计算 > 密钥对",进入密钥对列表,单击 "创建密钥对"。
- 弹出创建密钥对对话框:
- 密钥对名称:
KeyPair_web - 密钥类型:SSH 密钥
- 单击 "创建密钥对"。
- 密钥对名称:
- 弹出下载提示,下载密钥对文件
KeyPair_web.pem(保存到本地,用于 SSH 登录实例)。 - 返回密钥对列表,查看创建的 "KeyPair_web"。
操作步骤(虚拟机组)
- 左侧导航栏选择 "项目> 计算 > 主机组",进入虚拟机组列表,单击 "创建服务器组"。
- 弹出创建虚拟机组对话框:
- 名称:
ServerGroup_web - 策略:关联(亲和性,组内实例必须在同一主机)
- 其他策略说明:
- 不关联(反亲和性,组内实例不能在同一主机)
- 软关联 / 软不关联(资源不足时忽略规则)
- 单击 "提交"。
- 名称:
- 返回虚拟机组列表,查看创建的 "ServerGroup_web"。
4.2.4 创建网络
操作步骤(创建 shared 网络)
- 左侧导航栏选择 "项目> 网络 > 网络",单击 "创建网络"。
- 弹出创建网络对话框,"网络" 页签:
- 网络名称:
shared - 勾选 "共享的"
- 勾选 "创建子网"
- 单击 "下一项"。
- 网络名称:
- "子网" 页签:
-
子网名称:
shared_subnet -
网络地址:
192.168.233.0/24 -
网关 IP:
bash192.168.233.1 -
单击 "下一项"。
-
- "子网详情" 页签:
- 激活 DHCP(默认勾选)
- 分配地址池:默认(或自定义,如 192.168.233.100-192.168.233.200)
- 单击 "创建"。
- 返回网络列表,查看创建的 "shared" 网络。
4.2.5 虚拟机实例操作
4.2.5.1 发放虚拟机实例
- 使用
admin用户登录 Dashboard,左侧导航栏选择 "项目> 计算 > 实例",单击 "创建实例"。 - "详情" 页签:
- 实例名称:
Instance_web_01 - 可用域:
nova - 数量:1
- 单击 "下一项"。
- 实例名称:
- "源" 页签:
- 选择源:Image
- 创建新卷:否
- 可用镜像:选择 "Img_web"(单击后面的 "+")
- 单击 "下一项"。
- "实例类型" 页签:
- 可用规格:选择 "Flavor_web_test"(单击后面的 "+")
- 单击 "下一项"。
- "网络" 页签:
- 可用网络:选择 "shared"(单击后面的 "+")
- 单击 "下一项"(连续 3 次,跳过 "安全组""Key Pair""配置")。
- "服务器组" 页签:
- 可用服务器组:选择 "ServerGroup_web"(单击后面的 "+")
- 单击 "创建实例"。
- 返回实例列表,等待实例状态变为 "运行中",表示发放成功。
4.2.5.2 虚拟机实例开启、关闭与重启
- 进入实例列表,在 "Instance_web_01" 所在行的 "Actions" 列,单击 "关闭实例",确认关闭。
- 实例状态变为 "关机" 后,单击 "启动实例",确认启动,状态恢复为 "运行中"。
- 单击 "软重启实例"(优雅重启,类似
reboot命令),确认重启,状态短暂变为 "重启中" 后恢复 "运行中"。 - 参考步骤 3,执行 "硬重启实例"(强制重启,类似
power cycle)。
4.2.5.3 虚拟机实例锁定、解锁
- 进入实例列表,单击 "锁定实例",确认锁定(实例列表显示锁标志)。
- 验证:
admin用户仍可执行关闭 / 启动操作。- 普通用户(如
User_web_01)无法执行任何操作。
- 单击 "解锁实例",确认解锁,锁标志消失。
4.2.5.4 虚拟机实例暂停、挂起和恢复
- 进入实例列表,单击 "暂停实例",实例状态变为 "暂停",电源状态变为 "已暂停"(内存数据保留在主机内存)。
- 单击 "恢复实例",状态恢复为 "运行中"。
- 单击 "挂起实例",实例状态变为 "挂起",电源状态变为 "关闭"(内存数据写入磁盘,释放内存)。
- 单击 "恢复实例",状态恢复为 "运行中"。
思考:暂停(内存保留)适合短期临时停止,挂起(数据写入磁盘)适合长期停止以释放资源。
4.2.5.5 虚拟机实例废弃 (搁置) 和取消废弃 (解搁置)
- 进入实例列表,单击 "废弃实例",实例状态变为 "强制搁置",电源状态变为 "关闭"(实例磁盘数据保存为镜像,释放计算资源)。
- 单击 "取消废弃实例",实例从镜像恢复,状态变为 "运行中"。
思考:废弃比挂起更彻底(释放计算节点资源),适合长期不用但需保留数据的实例。
4.2.5.6 虚拟机实例快照和重建
- 进入实例列表,单击 "创建快照",输入快照名称 "Instance_Snap_web",单击 "创建快照"。
- 自动跳转到镜像列表,等待快照状态变为 "运行中"(类型为 "快照")。
- 进入实例列表,单击 "重建实例",选择快照 "Instance_Snap_web",单击 "重建实例"。
- 等待实例状态变为 "运行中",镜像名称变为 "Instance_Snap_web",表示重建成功。
思考:若实例损坏,可通过 "重建实例" 选择历史快照恢复数据。
4.2.5.7 调整实例大小
- 创建新规格 "Flavor_web_new"(VCPU=1,内存 = 156MB,根磁盘 = 1GB)。
- 进入实例列表,单击 "调整实例大小",选择 "Flavor_web_new",单击 "调整大小"。
- 实例状态变为 "确认或放弃 调整大小 / 迁移",单击 "确认 调整大小 / 迁移"。
- 等待实例状态恢复为 "运行中",查看规格已变为 "Flavor_web_new"。
4.2.5.8 虚拟机实例删除
- 进入实例列表,勾选 "Instance_web_01",单击 "删除实例",确认删除。
- 实例列表中该实例消失,表示删除成功。
4.3 OpenStack CLI 操作
4.3.1 Hypervisor、主机聚合和可用分区管理
-
远程登录
controller,导入admin环境变量:bashsource keystonerc_admin -
查看 Hypervisor 列表:
bashopenstack hypervisor list --long -
查看主机列表:
bashopenstack host list -
创建主机聚合 "HostAggr_cli":
bashopenstack aggregate create --zone nova HostAggr_cli -
为主机聚合添加主机 "controller":
bashopenstack aggregate add host HostAggr_cli controller -
(验证)尝试创建不同 AZ 的主机聚合并添加 "controller"(失败),修改 AZ 后添加(成功)。
-
移除主机并删除主机聚合:
bashopenstack aggregate remove host HostAggr_cli_test controller openstack aggregate delete HostAggr_cli_test
4.3.2 规格管理
-
创建私有规格 "Flavor_cli"(仅 "Project_cli" 可见):
bashopenstack flavor create --vcpus 1 --ram 128 --disk 1 --private --project Project_cli Flavor_cli -
移除规格对 "Project_cli" 的可见性(仍为私有):
bashopenstack flavor unset --project Project_cli Flavor_cli -
删除规格并重新创建公有规格:
bashopenstack flavor delete Flavor_cli openstack flavor create --vcpus 1 --ram 128 --disk 1 Flavor_cli # 默认为 Public
4.3.3 密钥对和虚拟机组管理
-
创建密钥对 "KeyPair_cli":
bashopenstack keypair create KeyPair_cli # 输出私钥,保存到本地 -
创建虚拟机组 "ServerGroup_cli"(亲和性策略):
bashopenstack server group create --policy affinity ServerGroup_cli
4.3.4 虚拟机实例操作
-
发放实例 "Instance_cli_01":
bashopenstack server create --availability-zone nova --image Img_cli --flavor Flavor_cli --network shared --key-name KeyPair_cli --hint group=SERVER_GROUP_ID Instance_cli_01(将
SERVER_GROUP_ID替换为 "ServerGroup_cli"的 ID) -
实例生命周期管理(命令示例):
bashopenstack server stop Instance_cli_01 # 关闭 openstack server start Instance_cli_01 # 启动 openstack server reboot Instance_cli_01 # 软重启 openstack server reboot --hard Instance_cli_01 # 硬重启 openstack server lock Instance_cli_01 # 锁定 openstack server unlock Instance_cli_01 # 解锁 openstack server pause Instance_cli_01 # 暂停 openstack server unpause Instance_cli_01 # 恢复 openstack server suspend Instance_cli_01 # 挂起 openstack server resume Instance_cli_01 # 恢复 openstack server shelve Instance_cli_01 # 废弃 openstack server unshelve Instance_cli_01 # 解除废弃 -
创建实例快照并重建:
bashopenstack server image create --name Instance_Snap_cli Instance_cli_01 # 创建快照 openstack server rebuild --image Instance_Snap_cli Instance_cli_01 # 重建 -
调整实例大小:
bashopenstack flavor create --vcpus 1 --ram 156 --disk 1 Flavor_cli_new # 创建新规格 openstack server resize --flavor Flavor_cli_new Instance_cli_01 # 调整大小 openstack server resize confirm Instance_cli_01 # 确认调整 -
删除实例:
bashopenstack server delete Instance_cli_01
5 OpenStack 存储管理
5.1 实验介绍
5.1.1 关于本实验
本实验主要介绍如何通过 OpenStack Dashboard 和 OpenStack CLI 两种方式创建并管理卷类型和 QOS,最后介绍卷的创建、挂载及卸载、上传卷到镜像、创建卷快照并基于卷快照创建卷、基于卷发放虚拟机实例、卷扩容、更新卷状态以及删除卷等基本操作。
5.1.2 实验目的
- 熟悉 OpenStack Dashboard 和 OpenStack CLI 创建并管理卷类型和 QOS。
- 熟悉 OpenStack Dashboard 和 OpenStack CLI 卷的创建、挂载及卸载以及卷快照、卷扩容、更新卷状态、卷删除等基本操作方法。
- 熟悉 OpenStack Dashboard 和 OpenStack CLI 上传卷到镜像、基于卷快照创建卷、基于卷发放虚拟机实例等基本操作方法。
5.1.3 实验流程
创建卷类型 / QOS
→ 创建卷
→ 卷挂载 / 卸载
→ 卷快照 / 扩容
→ 基于卷快照创建卷
→ 基于卷发放实例
→ 更新卷状态
→ 删除卷
5.2 OpenStack Dashboard 操作
5.2.1 卷类型和 QoS 管理
操作步骤
- 使用
admin用户登录 Dashboard,左侧导航栏选择 "管理员> 卷 > 卷类型",进入卷类型列表,单击 "创建卷类型"。 - 弹出创建卷类型对话框:
- 名称:
VolumeType_web - 勾选 "公有"
- 单击 "创建卷类型"。
- 名称:
- 单击页面下方的 "创建 QoS 规格",弹出创建 QoS 规格对话框:
- 名称:
QoS_web - 消费者:后端(QoS 策略作用于存储后端)
- 单击 "创建"。
- 名称:
- 返回卷类型列表,在 "VolumeType_web" 所在行的 "Actions" 列,单击 "管理 QoS 规格关联"。
- 弹出分配 QoS 规格对话框,选择 "QoS_web",单击 "关联"。
- 返回卷类型列表,查看 "VolumeType_web" 的 "Associated QoS Spec" 为 "QoS_web"。
5.2.2 卷管理
5.2.2.1 创建卷
- 左侧导航栏选择 "项目> 卷 > 卷",进入卷列表,单击 "创建卷"。
- 弹出创建卷对话框,输入如下信息:
-
卷名称:
Volume_web_01 -
卷来源:镜像(选择 "Img_web")
-
类型:
VolumeType_web -
大小:1 GB
-
可用域:
bashnova -
单击 "创建卷"。
-
- 返回卷列表,等待卷状态变为 "可用"。
5.2.2.2 挂载和卸载卷
- 进入卷列表,在 "Volume_web_01" 所在行的 "Actions" 列,单击 "管理连接"。
- 弹出管理卷挂载对话框,选择实例 "Instance_web_01",单击 "连接卷"。
- 返回卷列表,卷状态变为 "正在使用","Attached To" 显示 "Instance_web_01 上的 /dev/vdb"。
- 卸载卷:再次进入 "管理连接",单击 "分离卷",确认分离,卷状态恢复为 "可用"。
5.2.2.3 上传卷到镜像
- 进入卷列表,在 "Volume_web_01" 所在行的 "Actions" 列,单击 "上传镜像"。
- 弹出上传卷到镜像对话框:
- 镜像名称:
Volume_Img_web - 磁盘格式:QCOW2 - QEMU 模拟器
- 单击 "上传"。
- 镜像名称:
- 左侧导航栏选择 "项目> 计算 > 镜像",查看创建的 "Volume_Img_web"(类型为 "Image")。
5.2.2.4 创建卷快照
- 进入卷列表,在 "Volume_web_01" 所在行的 "Actions" 列,单击 "创建快照"。
- 弹出创建卷快照对话框,输入名称 "Volume_Snap_web",单击 "创建卷快照"。
- 自动跳转到卷快照列表,查看创建的 "Volume_Snap_web"(状态为 "可用")。
验证:卷挂载状态下仍可创建快照,但可能存在数据一致性风险(建议先暂停实例或确保数据已落盘)。
5.2.2.5 卷扩容
- 进入卷列表,在 "Volume_web_01" 所在行的 "Actions" 列,单击 "扩展卷"。
- 弹出扩容卷对话框,输入新大小 "2"(GB),单击 "扩展卷"。
- 返回卷列表,查看卷大小变为 "2 GiB"。
5.2.2.6 基于卷快照创建卷
- 左侧导航栏选择 "项目> 卷 > 快照",进入卷快照列表,在 "Volume_Snap_web" 所在行的 "Actions" 列,单击 "创建卷"。
- 弹出创建卷对话框,输入名称 "Volume_web_02"("使用快照作为源" 已默认选择 "Volume_Snap_web"),单击 "创建卷"。
- 自动跳转到卷列表,查看创建的 "Volume_web_02"(状态为 "可用")。
5.2.2.7 基于卷发放虚拟机实例
- 进入卷列表,在 "Volume_web_02" 所在行的 "Actions" 列,单击 "创建实例"。
- "详情" 页签输入实例名称 "Instance_web_02",单击 "下一项"。
- "源" 页签选择 "Volume",可用卷选择 "Volume_web_02",单击 "下一项"。
- "实例类型" 页签选择 "Flavor_web_test",单击 "下一项"。
- "网络" 页签选择 "shared",单击 "创建实例"。
- 返回卷列表,"Volume_web_02" 状态变为 "正在使用";实例列表中 "Instance_web_02" 状态为 "运行中"。
验证:仅 "可启动" 的卷可用于发放实例。若取消卷的 "可启动" 属性(编辑卷时取消勾选 "可启动"),则无法基于该卷创建实例。