OpenStack系列第二期:认证与镜像管理
OpenStack系列第二期:认证与镜像管理
本期是OpenStack学习笔记的第二期,聚焦于认证服务(Keystone)和镜像服务(Glance)。你将掌握:域、用户、组、项目、角色的完整管理流程,以及镜像的上传、注册、共享、格式转换和导出删除操作。所有操作均同时提供Dashboard和CLI两种方式。
一、认证管理(Keystone)
1.1 核心概念回顾
| 概念 | 说明 |
|---|---|
| Domain(域) | 用户、项目、组的容器,可以代表一个组织或数据中心 |
| User(用户) | 使用OpenStack的实体(人、服务或系统) |
| Group(组) | 用户的集合,可以对组统一授权 |
| Project(项目) | 资源(计算、存储、网络)的隔离单元,旧称Tenant |
| Role(角色) | 定义用户或组的权限集合(如admin、member) |
| Service(服务) | 如nova、cinder、glance等,通过Endpoint暴露API |
| Endpoint(端点) | 服务访问的URL(admin/public/internal) |
| Token(令牌) | 认证后获得的临时凭证 |
1.2 Dashboard操作
1.2.1 创建角色、用户及用户组
使用admin用户登录Dashboard。
① 创建角色
导航:身份管理 → 角色 → 创建角色
- 角色名称:
Role_web - 单击“提交”
② 创建用户并分配角色
导航:身份管理 → 用户 → 创建用户
- 用户名:
User_web_01 - 密码:自行设置(记住)
- 项目:
admin - 角色:
Role_web
再创建第二个用户User_web_02,角色选择admin。
③ 创建用户组
导航:身份管理 → 组 → 创建组
- 组名称:
Group_web
④ 管理组成员
在组列表中找到Group_web,点击“管理成员” → “添加用户”,勾选User_web_01和User_web_02。
⑤ 查看用户详情
在用户列表中点击用户名,进入“概览”页面,可查看“角色分配”和“组”页签。
⑥ 验证不同角色的权限差异
退出admin,分别使用User_web_01(Role_web)和User_web_02(admin)登录,观察导航栏差异:
User_web_01:看不到“管理员”菜单,身份管理中也缺少“域”“组”“角色”等选项。
1.2.2 禁用与删除用户(在组内移除 vs 真正删除)
- 从组中移除用户:在组的管理成员页面,勾选用户后点击“删除用户”。这只是移出组,用户仍存在于系统中。
- 禁用用户:在用户列表,点击用户所在行的“编辑”→“禁用用户”。禁用后该用户无法登录。
- 删除用户:勾选用户前的复选框,点击“删除用户”。需确保用户未被任何资源引用。
1.2.3 创建项目并修改配额
① 创建项目
导航:身份管理 → 项目 → 创建项目
- 项目信息页签:名称
Project_web - 项目成员页签:将
User_web_01加入项目,角色选择admin - 单击“创建项目”
② 修改项目配额
在项目列表中,找到Project_web,点击“管理成员”后的下拉菜单 → “修改配额”。可分别修改:
- 计算:实例数量、VCPU数量、RAM大小
- 卷:卷数量、快照数量、备份数量
- 网络:网络数、子网数、路由数、浮动IP数
例如:实例数量改为
5,卷数量改为5,网络数改为5,保存。
③ 验证配额
使用User_web_01登录,在左上角切换当前项目为Project_web,进入“项目 → 计算 → 概况”,即可看到修改后的配额。
1.3 CLI操作
1.3.1 创建角色、用户及用户组
远程登录controller,导入admin环境变量:
bash
sourcekeystonerc_admin① 创建角色
bash
openstack role create Role_cli② 创建用户
bash
openstack user create--domaindefault--projectadmin --password-prompt User_cli_01# 按提示输入密码(如huawei)并确认openstack user create--domaindefault--projectadmin --password-prompt User_cli_02③ 为用户添加角色
bash
openstack roleadd--projectadmin--userUser_cli_01 Role_cli openstack roleadd--projectadmin--userUser_cli_02 admin④ 查看角色分配
bash
openstack role assignment list--names|grepUser_cli输出示例:
text
admin|User_cli_02@Default|admin@Default|False Role_cli|User_cli_01@Default|admin@Default|False⑤ 创建用户组并添加成员
bash
openstack group create Group_cli openstack groupadduser Group_cli User_cli_01 User_cli_02⑥ 为用户创建独立的环境变量文件
bash
cpkeystonerc_admin keystonerc_User_cli_01vimkeystonerc_User_cli_01# 修改 OS_USERNAME=User_cli_01# 修改 OS_PASSWORD=你设置的密码# 可选修改 PS1 中的提示标识使用该文件登录并测试:
bash
sourcekeystonerc_User_cli_01 openstack project list# 只能看到admin项目User_cli_02同理,但由于其角色为admin,登录后可以看到所有项目。
1.3.2 禁用用户、删除用户
bash
sourcekeystonerc_admin# 从组中移除用户openstack group remove user Group_cli User_cli_02# 确认用户不在组中openstack group contains user Group_cli User_cli_02# 禁用用户openstack userset--disableUser_cli_02# 查看禁用状态openstack user show User_cli_02|grepenabled# 删除用户openstack user delete User_cli_02# 查看用户列表确认openstack user list1.3.3 创建项目,修改项目配额
bash
# 创建项目openstack project create Project_cli# 为用户添加项目角色openstack roleadd--projectProject_cli--userUser_cli_01 admin# 查看角色分配openstack role assignment list--names|grepUser_cli# 修改用户环境变量文件中的 OS_PROJECT_NAME=Project_clivimkeystonerc_User_cli_01# 将 OS_PROJECT_NAME=admin 改为 OS_PROJECT_NAME=Project_cli# 重新加载环境变量sourcekeystonerc_User_cli_01 openstack project list# 现在只能看到 Project_cli 项目# 修改项目配额(需admin权限)sourcekeystonerc_admin openstackquotaset--instances5--cores5--ram5000--volumes5--networks10Project_cli# 验证配额修改openstackquotashow Project_cli二、镜像管理(Glance)
2.1 镜像基本概念
- 镜像:包含操作系统和必要配置的模板,用于创建虚拟机实例。
- 镜像格式:raw、qcow2、vmdk、vdi、iso等。
- 容器格式:bare、ovf、aki、ari、ami等(一般用bare)。
- 可见性:
public:所有项目可见private:仅所属项目可见shared:可分享给其他项目community:社区共享
- 状态机:queued → saving → active(成功) / killed(失败) / deleted(删除)
2.2 Dashboard操作
2.2.1 下载测试镜像(cirros)
cirros是一个极小的Linux镜像(约12MB),适合测试。下载地址:
text
http://download.cirros-cloud.net/0.5.2/cirros-0.5.2-x86_64-disk.img在本机下载后备用。
2.2.2 创建并注册镜像
导航:项目 → 计算 → 镜像 → 创建镜像
填写信息:
- 镜像名称:
Img_web - 镜像文件:选择本地的cirros镜像
- 镜像格式:
QCOW2-QEMU模拟器 - 最小磁盘:
1GB - 最低内存:
128MB - 可见性:
私有 - 受保护性:
是(不可删除)
单击“创建镜像”。等待状态变为运行中,表示注册成功。
2.2.3 修改镜像属性
在镜像列表中,点击Img_web所在行的下拉菜单 →编辑镜像:
- 将可见性改为
公有 - 将受保护性改为
否 - 单击“更新镜像”
2.3 CLI操作
2.3.1 下载镜像到控制器
bash
sourcekeystonerc_admin# 使用wget下载cirros镜像到/root目录cd/rootwgethttp://download.cirros-cloud.net/0.5.2/cirros-0.5.2-x86_64-disk.img# 查看文件ls-lhcirros-0.5.2-x86_64-disk.img2.3.2 创建并注册镜像
bash
openstack image create --disk-format qcow2 --container-format bare\--min-disk1--min-ram128--private\--file./cirros-0.5.2-x86_64-disk.img Img_cli查看镜像列表:
bash
openstack image list2.3.3 修改镜像
bash
# 设置为公有openstack imageset--publicImg_cli# 查看详情openstack image show Img_cli2.3.4 共享镜像
若要将镜像Img_cli共享给项目Project_cli:
bash
# 记录镜像ID和项目IDopenstack image list openstack project list# 添加共享成员(状态为pending)openstack imageaddproject Img_cli Project_cli# 作为项目成员,接受共享(需切换环境变量或使用member角色)sourcekeystonerc_User_cli_01 openstack imageset--acceptImg_cli2.3.5 转换镜像格式
若有一个VMDK格式的Ubuntu镜像,可转换为qcow2:
bash
# 安装qemu-img(如未安装)yuminstall-yqemu-img# 转换(-f 源格式,-O 目标格式,-c 压缩,-p 显示进度)qemu-img convert-fvmdk-Oqcow2-c-pbionic-server-cloudimg-amd64.vmdk bionic-server-cloudimg-amd64.qcow2# 创建qcow2格式镜像openstack image create --disk-format qcow2 --container-format bare\--min-disk1--min-ram128--public\--file./bionic-server-cloudimg-amd64.qcow2 Ubuntu_cli2.3.6 导出镜像
bash
# 保存镜像到本地文件openstack image save--file./ubuntu_backup.img Ubuntu_cli2.3.7 删除镜像
bash
openstack image delete Ubuntu_cli# 确认删除openstack image list三、综合验证案例
案例:为研发团队创建隔离环境
- 创建域
RD_Domain(可选) - 创建项目
RD_Project - 创建用户
zhangsan、lisi,加入组RD_Group - 为组分配项目
RD_Project的角色_member_ - 创建一个私有镜像
RD_CentOS,仅共享给RD_Project - 设置项目配额:最多10个实例、50核、200GB内存
CLI快速实现:
bash
sourcekeystonerc_admin openstack domain create RD_Domain openstack project create--domainRD_Domain RD_Project openstack user create--domainRD_Domain--passwordhuawei zhangsan openstack user create--domainRD_Domain--passwordhuawei lisi openstack group create--domainRD_Domain RD_Group openstack groupadduser RD_Group zhangsan lisi openstack roleadd--projectRD_Project--groupRD_Group _member_ openstack image create --disk-format qcow2 --container-format bare\--file./centos.qcow2--privateRD_CentOS openstack imageaddproject RD_CentOS RD_Project openstackquotaset--instances10--cores50--ram204800RD_Project📊 知识点一览表(第二期)
| 类别 | 操作 | Dashboard路径/CLI命令 |
|---|---|---|
| 角色管理 | 创建角色 | 身份管理→角色→创建角色 /openstack role create |
| 用户管理 | 创建用户并分配角色 | 身份管理→用户→创建用户 /openstack user create+role add |
| 组管理 | 创建组、添加成员 | 身份管理→组 /openstack group create、group add user |
| 项目管理 | 创建项目、修改配额 | 身份管理→项目 /openstack project create、quota set |
| 用户状态 | 禁用/启用/删除用户 | 编辑用户勾选禁用 /openstack user set --disable、user delete |
| 镜像上传 | 创建并注册镜像 | 项目→计算→镜像→创建镜像 /openstack image create |
| 镜像共享 | 共享给其他项目 | 镜像→编辑→共享 /openstack image add project、set --accept |
| 格式转换 | qemu-img转换 | qemu-img convert -f vmdk -O qcow2 |
| 镜像导出 | 保存到文件 | openstack image save |
| 镜像删除 | 删除镜像 | 镜像列表→删除 /openstack image delete |
下一期预告:计算(Nova)与存储(Cinder)管理,涵盖虚拟机实例的全生命周期(创建、启动、关闭、暂停、挂起、快照、重建、迁移)、规格管理、密钥对、主机聚合,以及卷的创建、挂载、扩容、快照和基于卷创建实例。
有任何问题欢迎讨论,我们第三期再见
