当前位置: 首页 > news >正文

OpenStack 管理与基础操作学习笔记(一):角色、用户及项目管理实践

OpenStack实验

OpenStack命令

admin-openrc.sh 进入管理员视图

在这里插入图片描述

查看当前 OpenStack 中的项目列表,验证是否已经登录成功

在这里插入图片描述

切换用户

修改文件切换用户

在这里插入图片描述

在这里插入图片描述

上传文件切换用户

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

OpenStack 认证管理

实验介绍

通过 OpenStack Dashboard 和 OpenStack CLI 两种方式创建角色、用户、用户组以及项 目等,并验证不同角色的用户的权限区别

实验流程:

在这里插入图片描述

OpenStack Dashboard 操作

创建角色、用户及用户组

先登录进来

在这里插入图片描述
在这里插入图片描述

弹出创建角色对话框,输入角色名称“Role_web”,单击“提交”,完成角色的创建。

在这里插入图片描述

在左侧导航栏选择“身份管理 > 用户”,进入用户列表,单击页面右上角的“创建用 户”。

在这里插入图片描述

创建用户“User_web_01”,如下图

在这里插入图片描述

创建用户“User_web_02”,选择角色“admin”。如下图

在这里插入图片描述

查看用户

在这里插入图片描述

在左侧导航栏选择“身份管理>组”,进入用户组列表,单击页面右上角的“创建组”。

弹出创建用户组对话框,输入用户组名称,如“Group_web”,单击“创建组”,完成用 户组的创建。

在这里插入图片描述

返回用户组列表,单击待操作的用户组所在行的“管理成员”。

进入用户组成员列表,单击页面右上角的“添加用户”。

弹出添加组用户对话框,在下方的用户列表中,选择待加入用户组的用户,如 “User_web_01”和“User_web_02”,单击右上角的“添加用户”。

在这里插入图片描述

选择“身份管理>用户”,进入用户列表,单击用户名称“User_web_01”,进入用户“概览”页面。

选择“角色分配” 和 “组”页签,分别查看用户的相关信息。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

返回 OpenStack Dashboard 登录界面,分别输入用户“User_web_01”和“User_web_02” 的用户名和密码,登录后观察两者导航栏及菜单的不同之处。

如下图:

左边01右边02

在这里插入图片描述

禁用用户,删除用户

使用 admin 用户登录 OpenStack Dashboard 界面,选择“身份管理>组”,进入用户组列 表,单击待操作的用户组“Group_web”所在行的“管理成员”。

进入用户组成员列表,勾选待移除的用户“User_web_02”前的 ,单击页面右上方的 “删除用户”。

会发现用户还在,所以在对应组中,删除用户,仅能将该用户从该组中删除,并不能真正在系统中删除 该用户。

在这里插入图片描述
在这里插入图片描述

此时还能登陆上去

在页面左侧导航栏,选择“身份管理>用户”,进入用户列表,在待操作的用户 “User_web_02”,所在行“编辑”后的 ,在弹出框中,单击“禁用用户”,禁用用 户“User_web_02”。

在这里插入图片描述

此时就登陆不上去了

勾选待删除的用户“User_web_02”所在行前的 ,单击页面右上角的“删除用户”, 删除用户“User_web_02”。

在这里插入图片描述
在这里插入图片描述

会发现依旧登陆不上

创建项目,修改项目配额

使用 admin 用户登录 OpenStack Dashboard 界面,选择“身份管理>项目”,进入项目列 表,单击页面右上角“创建项目”。

弹出创建项目对话框,选择“项目信息”页签,填写项目名称,如“Project_web”,其他 保持默认。

在这里插入图片描述

选择“项目成员”页签,在左侧用户列表,单击待加入项目的用户“User_web_01”后面 的 ,右侧将显示选择的用户。

在这里插入图片描述

单击项目成员用户后面方框中的 “ ”,在角色列表中选择用户在项目中所属的角色,只勾选 “admin”。

在这里插入图片描述

返回项目列表,单击项目名称“Project_web”,进入项目概览页面。

选择“用户”页签,查看项目中的用户及角色分配信息。

在这里插入图片描述

注销 admin 用户,返回 OpenStack Dashboard 登录界面,分别输入用户“User_web_01” 的用户名和密码,登录后切换页面上方用户所属的项目“Project_web”,观察导航栏及 菜单的变化。

在这里插入图片描述
在这里插入图片描述

使用 admin 用户登录 OpenStack Dashboard 界面,在页面左侧导航栏,选择“身份管理> 项目”,进入项目列表,查看刚刚创建的项目“Project_web”,在待操作的项目所在行 的“Actions”列,单击“管理成员”后的 ,在操作列表中选择“修改配额”。

在这里插入图片描述

弹出编辑配额对话框,可分别在“计算”,“卷”和“网络”页签,修改项目的默认配 额,如将实例数量修改为“5”,卷数量修改为“5”,网络修改为“5”,并保存。

在这里插入图片描述

使用 User_web_01 用户登录 OpenStack Dashboard 界面,并在页面左上方单击项目,选择 项目“Project_web”为当前所在项目。

在左侧导航栏,选择“项目>计算>概况”,查看 Project_web 项目配额的变化。

在这里插入图片描述

OpenStack CLI 操作

创建角色、用户及用户组
[root@controller ~(keystone_admin)]# openstack role list
+----------------------------------+------------------+
| ID                               | Name             |
+----------------------------------+------------------+
| 11905eb496ca43aca1c7f37a7052204e | Role_web         |
| 2b8de7e9b66c4848a0572b20ef25c360 | reader           |
| 2d4eca03781045d588fca237aab5aeef | _member_         |
| 45fb4e96714e4b78a477c804df9d8128 | heat_stack_user  |
| 54676e70a4cd4fb0becd4e6931d2f415 | admin            |
| 65a4311a3a5a439193d9268c9c381785 | member           |
| c79ce7b910fe4c9f8818bc444c32e78c | SwiftOperator    |
| c81840774a25411aa06f9dd4fa2f81e7 | ResellerAdmin    |
| cb08a7170d8b4bbf9d9ce5dc9fdf8233 | heat_stack_owner |
+----------------------------------+------------------+# 创建角色“Role_cli”
[root@controller ~(keystone_admin)]# openstack role create Role_cli
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | None                             |
| domain_id   | None                             |
| id          | 259aadcbe1054a7fbc34e6b12167ab17 |
| name        | Role_cli                         |
| options     | {}                               |
+-------------+----------------------------------+# 创建用户“User_cli_01”,并设置密码
[root@controller ~(keystone_admin)]# openstack user create --domain default --project admin --password-prompt User_cli_01
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| default_project_id  | bbe6a457a15b48d792da334eb27a5d7b |
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 92eac73b862348648337ab93b53da161 |
| name                | User_cli_01                      |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+# 为用户“User_cli_01”在项目“admin”中添加角色“Role_cli”
[root@controller ~(keystone_admin)]# openstack role add --project admin --user User_cli_01 Role_cli# 创建用户“User_cli_02”
[root@controller ~(keystone_admin)]# openstack user create --domain default --project admin --password-prompt User_cli_02
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| default_project_id  | bbe6a457a15b48d792da334eb27a5d7b |
| domain_id           | default                          |
| enabled             | True                             |
| id                  | b56a553ca3ce43d59c317b80db24632c |
| name                | User_cli_02                      |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+# 为“User_cli_02”在项目“admin”中添加角色“admin”
[root@controller ~(keystone_admin)]# openstack role add --project admin --user User_cli_02 admin# 查看角色的分配情况
[root@controller ~(keystone_admin)]# openstack role assignment list --names | grep User_cli
| Role_cli      | User_cli_01@Default |       | admin@Default       |        |        | False     |
| admin         | User_cli_02@Default |       | admin@Default       |        |        | False     |# 创建用户组“Group_cli”
[root@controller ~(keystone_admin)]# openstack group create Group_cli
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description |                                  |
| domain_id   | default                          |
| id          | 84a9dbbbd8fd4cd9bc9fe4c0efdfce89 |
| name        | Group_cli                        |
+-------------+----------------------------------+# 为用户组“Group_cli”添加用户成员“User_cli_01”和“User_cli_02”
[root@controller ~(keystone_admin)]# openstack group add user Group_cli User_cli_01 User_cli_02# 编辑用户“User_cli_01”的环境变量“User_cli_01-openrc.sh”
[root@controller ~(keystone_admin)]# cp keystonerc_admin keystonerc_User_cli_01
[root@controller ~(keystone_admin)]# vim keystonerc_User_cli_01
[root@controller ~(keystone_admin)]# cat keystonerc_User_cli_01
unset OS_SERVICE_TOKENexport OS_USERNAME=User_cli_01export OS_PASSWORD='123'export OS_REGION_NAME=RegionOneexport OS_AUTH_URL=http://192.168.108.10:5000/v3export 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# 导入用户“User_cli_01”的环境变量“Keystonerc_User_cli_01”
[root@controller ~(keystone_admin)]# source keystonerc_User_cli_01# 查看项目列表
[root@controller ~(keystone_User_cli_01)]# openstack project list
+----------------------------------+-------+
| ID                               | Name  |
+----------------------------------+-------+
| bbe6a457a15b48d792da334eb27a5d7b | admin |
+----------------------------------+-------+# 编辑并导入用户“User_cli_02”的环境变量“Keystonerc_User_cli_02”,查看项目列表
[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
[root@controller ~(keystone_User_cli_01)]# cat keystonerc_User_cli_02
unset OS_SERVICE_TOKENexport OS_USERNAME=User_cli_02export OS_PASSWORD='123'export OS_REGION_NAME=RegionOneexport OS_AUTH_URL=http://192.168.108.10:5000/v3export PS1='[\u@\h \W(keystone_User_cli_02)]\$ 'export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3[root@controller ~(keystone_User_cli_01)]# source keystonerc_User_cli_02
[root@controller ~(keystone_User_cli_02)]# openstack project list
+----------------------------------+-------------+
| ID                               | Name        |
+----------------------------------+-------------+
| 716c695a1f0d4183ab1e07523ea2202e | services    |
| bbe6a457a15b48d792da334eb27a5d7b | admin       |
| cc5300b2842c4f5d8df2239d4c3f6a88 | Project_web |
+----------------------------------+-------------+
禁用用户,删除用户
# 导入 keystonerc_admin 环境变量
[root@controller ~(keystone_User_cli_02)]# source keystonerc_admin# 从用户组“Group_cli”中移除用户“User_cli_02”
[root@controller ~(keystone_admin)]# openstack group remove user Group_cli User_cli_02# 查看用户组“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”
[root@controller ~(keystone_admin)]# openstack user set --disable User_cli_02# 查看用户“User_cli_02”的禁用状态
[root@controller ~(keystone_admin)]# openstack user show User_cli_02
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| default_project_id  | bbe6a457a15b48d792da334eb27a5d7b |
| domain_id           | default                          |
| enabled             | False                            |
| id                  | b56a553ca3ce43d59c317b80db24632c |
| name                | User_cli_02                      |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+# 删除用户“User_cli_02”
[root@controller ~(keystone_admin)]# openstack user delete User_cli_02# 查看用户列表
[root@controller ~(keystone_admin)]# openstack user list
+----------------------------------+-------------+
| ID                               | Name        |
+----------------------------------+-------------+
| 722b5603717a4a0baba50852a085a104 | heat_admin  |
| 80354aafb046474f931356ddce88fb3a | glance      |
| 74554775208f45d396e01c2054e6c83f | cinder      |
| 1ea73e661a4d43c2a4cbced599775568 | nova        |
| 90c8a920dd434345bea83c659d9bbcb9 | placement   |
| f2d69fe6f9ed49beb48591b17d2e1eef | neutron     |
| 99946d41b00d4168a57102ac54fe704b | swift       |
| 42e30d73a9874392a870dcdb533fc51d | heat        |
| 42d6a375038441298863c94ab27be75b | heat-cfn    |
| 62201562bf6a4a22863715f46d344711 | gnocchi     |
| 11e070c3d0ab4c1bbd5872146f054ec2 | ceilometer  |
| d2b30f698e334853908ce7a34d35e7e9 | aodh        |
| 98bc613c84094ac28b2bec39305394ed | user1       |
| af704f24dc304c09a051f19c9f4d4efe | admin       |
| d8b2f14b850c44f3a295b65285ad8e63 | User_web_01 |
| 92eac73b862348648337ab93b53da161 | User_cli_01 |
+----------------------------------+-------------+
创建项目,修改项目配额
# 创建项目“Project_cli”
[root@controller ~(keystone_admin)]# openstack project create --domain default Project_cli
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description |                                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 94883d4c6d624e5892ee7ead7c50c4c8 |
| is_domain   | False                            |
| name        | Project_cli                      |
| options     | {}                               |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+# 为用户“User_cli_01”在项目“Project_cli”中添加角色“admin”
[root@controller ~(keystone_admin)]# openstack role add --project Project_cli --user User_cli_01 admin# 查看角色的分配情况
[root@controller ~(keystone_admin)]# openstack role assignment list --names | grep User_cli_01
| admin         | User_cli_01@Default |       | Project_cli@Default |        |        | False     |
| Role_cli      | User_cli_01@Default |       | admin@Default       |        |        | False     |# 修改用户“User_cli_01”的环境变量“keystonerc_User_cli_01”,修改“OS_PTOJECT_NAME”参数为“Project_cli”
[root@controller ~(keystone_admin)]# vim keystonerc_User_cli_01
[root@controller ~(keystone_admin)]# cat keystonerc_User_cli_01
unset OS_SERVICE_TOKENexport OS_USERNAME=User_cli_01export OS_PASSWORD='123'export OS_REGION_NAME=RegionOneexport OS_AUTH_URL=http://192.168.108.10:5000/v3export PS1='[\u@\h \W(keystone_User_cli_01)]\$ 'export OS_PROJECT_NAME=Project_cli
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3# 导入用户“User_cli_01”的环境变量
[root@controller ~(keystone_admin)]# source keystonerc_User_cli_01# 查看项目列表
[root@controller ~(keystone_User_cli_01)]# openstack project list
+----------------------------------+-------------+
| ID                               | Name        |
+----------------------------------+-------------+
| 716c695a1f0d4183ab1e07523ea2202e | services    |
| 94883d4c6d624e5892ee7ead7c50c4c8 | Project_cli |
| bbe6a457a15b48d792da334eb27a5d7b | admin       |
| cc5300b2842c4f5d8df2239d4c3f6a88 | Project_web |
+----------------------------------+-------------+# # # 查看项目“Project_cli”的默认配额
[root@controller ~(keystone_User_cli_01)]# openstack quota show Project_cli
+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field                 | Value                                                                                                                                     
+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| backup-gigabytes      | 1000                                                                                                                                     
| backups               | 10                                                                                                                                      
| cores                 | 20                                                                                                                                       
| fixed-ips             | -1                                                                                                                                       
| floating-ips          | 50                                                                                                                                       
| gigabytes             | 1000                          
......# 修改项目“Project_cli”的默认配额,如将实例数量修改为“5”,卷数量修改为“5”,网络修改为“10”
[root@controller ~(keystone_User_cli_01)]# openstack quota set --instances 5 --networks 10 Project_cli# 查看项目“Project_cli”配额的变化
[root@controller ~(keystone_User_cli_01)]# openstack quota show Project_cli | grep -E "instances|volumes|networks"
| instances             | 5                                                                               
| networks              | 10                                                                             
| volumes               | 10                                                                             
| volumes___DEFAULT__   | -1                                                                             
| volumes_iscsi         | -1                                                                             

OpenStack管理

OpenStack认证管理-Keystone

Keystone基本概念

查看domain:

[root@controller ~]# source keystonerc_admin[root@controller ~(keystone_admin)]# openstack domain list
+----------------------------------+---------+---------+--------------------+
| ID                               | Name    | Enabled | Description        |
+----------------------------------+---------+---------+--------------------+
| 6ad6299115e74253a30e0d3f98447454 | heat    | True    |                    |
| default                          | Default | True    | The default domain |
+----------------------------------+---------+---------+--------------------+

创建domain并验证:

[root@controller ~(keystone_admin)]# openstack domain create domain-test
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description |                                  |
| enabled     | True                             |
| id          | 54a2a5bb1c40447d82eb7ae7e9e5c505 |
| name        | domain-test                      |
| options     | {}                               |
| tags        | []                               |
+-------------+----------------------------------+
[root@controller ~(keystone_admin)]# openstack domain list
+----------------------------------+-------------+---------+--------------------+
| ID                               | Name        | Enabled | Description        |
+----------------------------------+-------------+---------+--------------------+
| 54a2a5bb1c40447d82eb7ae7e9e5c505 | domain-test | True    |                    |
| 6ad6299115e74253a30e0d3f98447454 | heat        | True    |                    |
| default                          | Default     | True    | The default domain |
+----------------------------------+-------------+---------+--------------------+

删除domain:

[root@controller ~(keystone_admin)]# openstack domain set --disable domain-test
[root@controller ~(keystone_admin)]# openstack domain delete domain-test
[root@controller ~(keystone_admin)]# openstack domain list
+----------------------------------+---------+---------+--------------------+
| ID                               | Name    | Enabled | Description        |
+----------------------------------+---------+---------+--------------------+
| 6ad6299115e74253a30e0d3f98447454 | heat    | True    |                    |
| default                          | Default | True    | The default domain |
+----------------------------------+---------+---------+--------------------+

开启多域登录界面:

[root@controller ~(keystone_admin)]# cd /etc/openstack-dashboard/
[root@controller openstack-dashboard(keystone_admin)]# ls
cinder_policy.json  keystone_policy.json  local_settings.d     nova_policy.d
glance_policy.json  local_settings        neutron_policy.json  nova_policy.json
[root@controller openstack-dashboard(keystone_admin)]# vim local_settings
[root@controller openstack-dashboard(keystone_admin)]# systemctl restart httpd

在这里插入图片描述

测试,Default要大写,小写也有可能能进去

在这里插入图片描述

在这里插入图片描述

列出所有用户:

[root@controller openstack-dashboard(keystone_admin)]# openstack user list
+----------------------------------+------------+
| ID                               | Name       |
+----------------------------------+------------+
| af704f24dc304c09a051f19c9f4d4efe | admin      |
| 722b5603717a4a0baba50852a085a104 | heat_admin |
| 80354aafb046474f931356ddce88fb3a | glance     |
| 74554775208f45d396e01c2054e6c83f | cinder     |
| 1ea73e661a4d43c2a4cbced599775568 | nova       |
| 90c8a920dd434345bea83c659d9bbcb9 | placement  |
| f2d69fe6f9ed49beb48591b17d2e1eef | neutron    |
| 99946d41b00d4168a57102ac54fe704b | swift      |
| 42e30d73a9874392a870dcdb533fc51d | heat       |
| 42d6a375038441298863c94ab27be75b | heat-cfn   |
| 62201562bf6a4a22863715f46d344711 | gnocchi    |
| 11e070c3d0ab4c1bbd5872146f054ec2 | ceilometer |
| d2b30f698e334853908ce7a34d35e7e9 | aodh       |
+----------------------------------+------------+

创建新用户:user1

[root@controller openstack-dashboard(keystone_admin)]# openstack user create --password 123 user1
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 91086361c3404451b9533da51567f51b |
| name                | user1                            |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+# 可以看到最后一行有新创建的用户
[root@controller openstack-dashboard(keystone_admin)]# openstack user list
+----------------------------------+------------+
| ID                               | Name       |
+----------------------------------+------------+
| af704f24dc304c09a051f19c9f4d4efe | admin      |
| 722b5603717a4a0baba50852a085a104 | heat_admin |
| 80354aafb046474f931356ddce88fb3a | glance     |
| 74554775208f45d396e01c2054e6c83f | cinder     |
| 1ea73e661a4d43c2a4cbced599775568 | nova       |
| 90c8a920dd434345bea83c659d9bbcb9 | placement  |
| f2d69fe6f9ed49beb48591b17d2e1eef | neutron    |
| 99946d41b00d4168a57102ac54fe704b | swift      |
| 42e30d73a9874392a870dcdb533fc51d | heat       |
| 42d6a375038441298863c94ab27be75b | heat-cfn   |
| 62201562bf6a4a22863715f46d344711 | gnocchi    |
| 11e070c3d0ab4c1bbd5872146f054ec2 | ceilometer |
| d2b30f698e334853908ce7a34d35e7e9 | aodh       |
| 91086361c3404451b9533da51567f51b | user1      |
+----------------------------------+------------+

创建组group1,并将user1加入group1:

#创建组group1
[root@controller ~(keystone_admin)]# openstack group create group1
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description |                                  |
| domain_id   | default                          |
| id          | 34d9437240224d3e9bee84e5c91b8fc1 |
| name        | group1                           |
+-------------+----------------------------------+#查看group1组详细信息
[root@controller ~(keystone_admin)]# openstack group show group1
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description |                                  |
| domain_id   | default                          |
| id          | 34d9437240224d3e9bee84e5c91b8fc1 |
| name        | group1                           |
+-------------+----------------------------------+#列出所有的组
[root@controller ~(keystone_admin)]# openstack group list
+----------------------------------+--------+
| ID                               | Name   |
+----------------------------------+--------+
| 34d9437240224d3e9bee84e5c91b8fc1 | group1 |
+----------------------------------+--------+#将user1加入group1
[root@controller ~(keystone_admin)]#  openstack group add user group1 user1#查看user1是否隶属于group1
[root@controller ~(keystone_admin)]# openstack group contains user group1 user1
user1 in group group1

查看角色role:

[root@controller ~(keystone_admin)]# openstack role list
+----------------------------------+------------------+
| ID                               | Name             |
+----------------------------------+------------------+
| 2b8de7e9b66c4848a0572b20ef25c360 | reader           |
| 2d4eca03781045d588fca237aab5aeef | _member_         |
| 45fb4e96714e4b78a477c804df9d8128 | heat_stack_user  |
| 54676e70a4cd4fb0becd4e6931d2f415 | admin            |
| 65a4311a3a5a439193d9268c9c381785 | member           |
| c79ce7b910fe4c9f8818bc444c32e78c | SwiftOperator    |
| c81840774a25411aa06f9dd4fa2f81e7 | ResellerAdmin    |
| cb08a7170d8b4bbf9d9ce5dc9fdf8233 | heat_stack_owner |
+----------------------------------+------------------+

给group1赋予角色admin:

[root@controller ~(keystone_admin)]# openstack role add --project admin --group group1 admin

验证group1角色:

[root@controller ~(keystone_admin)]# openstack role assignment list --names --group group1
+-------+------+----------------+---------------+--------+--------+-----------+
| Role  | User | Group          | Project       | Domain | System | Inherited |
+-------+------+----------------+---------------+--------+--------+-----------+
| admin |      | group1@Default | admin@Default |        |        | False     |
+-------+------+----------------+---------------+--------+--------+-----------+

在这里插入图片描述
创建ProjectA:

# 创建项目
[root@controller ~(keystone_admin)]# openstack project create ProjectA
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description |                                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | d5688b50c2e44446a2e95d296cb39e68 |
| is_domain   | False                            |
| name        | ProjectA                         |
| options     | {}                               |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+# ProjeectA分配给用户user1
[root@controller ~(keystone_admin)]# openstack user set --project ProjectA user1# 给项目ProjectA里的用户user1赋予角色admin
[root@controller ~(keystone_admin)]# openstack role add --user user1 --project ProjectA admin

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

修改ProjectA配额:

#将Project配额设置为实例3,vcpu 5,内存5000MB
[root@controller ~(keystone_admin)]# openstack quota set --instance 3 --cores 5 --ram 5000 ProjectA

在这里插入图片描述

通过命令直接查看

[root@controller ~(keystone_admin)]# openstack quota show ProjectA

在这里插入图片描述

查看OpenStack有哪些服务:

[root@controller ~(keystone_admin)]# openstack service list
+----------------------------------+------------+----------------+
| ID                               | Name       | Type           |
+----------------------------------+------------+----------------+
| 121782ebe4b049ecacb9b791bb13df18 | glance     | image          |
| 13bd574cafa44350a22b99a508ab3554 | cinderv2   | volumev2       |
| 1def18b4581349c39d81f12c56e05c6a | gnocchi    | metric         |
| 1f15d96c0e4f4ee5819dba94b0b8e04c | keystone   | identity       |
| 435c65c9e7a24d7ea6e3e2135bcba73c | ceilometer | metering       |
| 4e602636205947f680d94b86e39b49f8 | neutron    | network        |
| 5bcb0e5bf76040ddbeea2b14cc9eefa9 | swift      | object-store   |
| 601d6141de604cf880f73db65fef16a8 | nova       | compute        |
| 74aa195726f14d0c89246e9fe2486ef5 | heat       | orchestration  |
| 7a9389af49e44202b153935b6bc365c5 | heat-cfn   | cloudformation |
| a263b55ea6f046379c754b1ec26d7682 | aodh       | alarming       |
| b0892edfc68d433ba35945c015012e13 | placement  | placement      |
| cdcb39f19c5742bda56166a228f8b331 | cinderv3   | volumev3       |
+----------------------------------+------------+----------------+

查看OpenStack endpoint:

[root@controller ~(keystone_admin)]# openstack endpoint list[root@controller ~(keystone_admin)]# openstack endpoint list | grep nova

在这里插入图片描述

查看catalog:

[root@controller ~(keystone_admin)]# openstack catalog list

Keystone核心概念

作为 OpenStack 的基础支持服务,Keystone 做下面这几件事情:

  1. 管理用户及其权限
  2. 维护 OpenStack Services 的 Endpoint
  3. Authentication(认证)和 Authorization(鉴权)

Credentials(凭证)

定义:用户用于证明自身身份的 “信物”,是发起认证请求的前提。
作用:Keystone 通过验证 Credentials 的有效性,判断用户是否有权限进入下一步认证流程(类似 “钥匙” 或 “身份证”)。
常见类型

  • 密码(Password):最常用的凭证,如用户设置的账号密码。
  • 令牌(Token):二次认证时使用(如已通过密码认证后,用 Token 访问其他服务)。
  • 密钥对(Access Key/Secret Key):用于 API 调用的长期凭证(适合自动化脚本、服务间通信)。
  • 多因素认证(MFA):额外安全层,如手机验证码、U 盾等。

Authentication(认证)

定义:Keystone 验证用户身份的过程,核心是 “确认‘你是谁’”。
作用:防止未授权用户访问 OpenStack 系统,是权限控制的第一道防线。
核心流程

  1. 用户向 Keystone 提交 Credentials(如 “用户名 + 密码”);
  2. Keystone 校验 Credentials 有效性(如查询数据库中存储的用户密码哈希);
  3. 校验通过:生成并返回 Token(后续访问的 “临时通行证”);
  4. 校验失败:拒绝请求并返回错误(如 “密码错误”)。

Token(令牌)

定义:Keystone 认证通过后发放的临时访问凭证,相当于用户在 OpenStack 内的 “临时身份证”。
作用:避免用户每次访问服务都重复提交 Credentials(如密码),同时限定访问范围和有效期。
关键特性

  • 临时性:默认有效期较短(如几小时),过期后需重新认证获取新 Token(降低泄露风险)。
  • 包含元数据:Token 内封装用户身份、所属 Project、拥有的 Role 等信息,服务可直接解析 Token 确认权限(无需再次请求 Keystone)。
  • 两种类型:
    • 菲亚特令牌(Fernet Token):OpenStack 主流类型,加密的短字符串,无需存储在 Keystone 数据库(轻量化);
    • UUID 令牌:长随机字符串,需存储在 Keystone 数据库(已逐步被 Fernet 替代)。

Project(项目)

定义:OpenStack 中用于隔离资源和权限的逻辑单元(早期称为 Tenant,租户),可理解为 “资源容器” 或 “团队空间”。
作用

  • 资源隔离:不同 Project 间的资源(如虚拟机、云硬盘、网络)完全独立,A Project 的用户无法直接访问 B Project 的资源;
  • 权限边界:用户的权限(如创建虚拟机、删除云硬盘)必须绑定到具体 Project,不存在 “全局无边界权限”。
    常见场景
  • 企业内按部门划分 Project(如 “研发部 Project”“市场部 Project”);
  • 云服务商按客户划分 Project(每个客户一个独立 Project,隔离数据和资源)。

Service(服务)

定义:OpenStack 中的核心功能模块,即用户需要访问的 “业务能力”(如计算、存储、网络服务)。
作用:Keystone 通过统一管理 Service,实现 “一站式认证”—— 用户只需通过 Keystone 认证一次,即可访问所有已授权的 Service,无需重复登录。
OpenStack 典型 Service

Service 名称英文全称核心功能
NovaCompute Service虚拟机创建与管理(计算服务)
CinderBlock Storage云硬盘创建与管理(块存储)
NeutronNetworking虚拟网络配置(网络服务)
SwiftObject Storage海量文件存储(对象存储)
GlanceImage Service虚拟机镜像管理(镜像服务)

Endpoint(端点)

定义:Service 的网络访问地址,即用户 / 其他服务调用该 Service API 的 “入口 URL”。
作用:Keystone 作为 “服务注册表”,存储所有 Service 的 Endpoint;用户通过 Token 向 Keystone 请求 “某 Service 的 Endpoint” 后,即可直接访问该 Service(无需记住复杂的 IP/URL)。
三种类型

  • Public Endpoint:公开可访问的地址(如互联网用户访问云服务的入口);
  • Internal Endpoint:OpenStack 内部服务间通信的地址(如 Nova 调用 Neutron 的地址,不对外暴露);
  • Admin Endpoint:管理员专用地址(如执行服务配置、用户管理等操作,仅管理员可访问)。

Role(角色)

定义:预先定义的权限集合,用于批量分配权限(类似 “权限模板”),核心是 “定义‘你能做什么’”。
作用:避免对每个用户单独分配权限(如 “允许创建虚拟机”“允许删除云硬盘”),通过 “角色绑定” 实现权限的批量管理,简化权限维护。

安全包含两部分:Authentication(认证)和 Authorization(鉴权)

  • Authentication 解决的是“你是谁?”的问题
    Authorization 解决的是“你能干什么?”的问题

核心逻辑:Role Binding(角色绑定)
权限的生效必须满足 “用户 - 角色 - 项目” 三者绑定(即 “在某个 Project 中,给某个用户分配某个 Role”),三者缺一不可:

  • 例 1:给用户 “Alice” 在 “研发部 Project” 绑定 “Admin” 角色 → Alice 可在研发部 Project 执行所有操作(如删除资源、管理用户);
  • 例 2:给用户 “Bob” 在 “市场部 Project” 绑定 “Member” 角色 → Bob 仅可在市场部 Project 执行基础操作(如创建虚拟机、查看资源)。

OpenStack 默认 Role

  • Admin:项目内最高权限,可执行所有操作(如管理用户、删除资源);
  • Member:项目内普通权限,可使用资源(如创建虚拟机、上传镜像),但无法管理用户或删除他人资源;
  • Reader:只读权限,仅可查看资源(如列表虚拟机、查看网络配置),无法修改或创建资源。

OpenStack镜像管理-glance

公有云(华为云)镜像概念

解释说明
  • 镜像

    是一个包含了操作系统及必要配置的弹性云服务器模板,使用镜像可以创建弹性云服务器。

  • 公共镜像

    公共镜像是云平台提供的常见的标准操作系统镜像,所有用户可见,包括操作系统以及预装的公共应用。公共镜像具有高度稳定性,皆为正版授权,您也可以根据实际需求自助配置应用环境或相关软件。

  • 私有镜像

    基于云服务器或外部镜像文件等方式创建的个人镜像,仅用户自己可见。包含操作系统、预装的公共应用以及用户的私有应用。选择私有镜像创建云服务器,可以节省您重复配置云服务器的时间。

    更多信息,请参见怎样制作私有镜像?

  • 共享镜像

    您可以接受云平台其他用户共享的私有镜像,作为自己的镜像进行使用。

    更多信息,请参见怎样共享镜像?

  • 市场镜像

    提供预装操作系统、应用环境和各类软件的优质第三方镜像。无需配置,可一键部署,满足建站、应用开发、可视化管理等个性化需求。

Glance在OpenStack中的作用

在这里插入图片描述

Glance架构

在这里插入图片描述
在这里插入图片描述

查看glalnce-api配置文件,观察与database通信的部分:

glance的配置文件在/etc/glance目录下:

[root@controller ~]# cd /etc/glance/
[root@controller glance]# vim /etc/glance/glance-api.conf

在这里插入图片描述

连接数据库查看现象:

[root@controller ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 36545
Server version: 10.3.28-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| aodh               |
| cinder             |
| glance             |
| gnocchi            |
| heat               |
| information_schema |
| keystone           |
| mysql              |
| neutron            |
| nova               |
| nova_api           |
| nova_cell0         |
| performance_schema |
| placement          |
| test               |
+--------------------+
15 rows in set (0.010 sec)# 切换到指定的glance数据库
MariaDB [(none)]> use glance;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
# 查看所有当前数据库中的所有表
MariaDB [glance]> show tables;
+----------------------------------+
| Tables_in_glance                 |
+----------------------------------+
| alembic_version                  |
| image_locations                  |
| image_members                    |
| image_properties                 |
| image_tags                       |
| images                           |
| metadef_namespace_resource_types |
| metadef_namespaces               |
| metadef_objects                  |
| metadef_properties               |
| metadef_resource_types           |
| metadef_tags                     |
| migrate_version                  |
| task_info                        |
| tasks                            |
+----------------------------------+
15 rows in set (0.000 sec)

镜像image、实例instance、规格flavor三者区别

在这里插入图片描述

镜像、实例和规格的关系:

用户可以从同一个镜像启动任意数量的实例

每个启动的实例都是基于镜像的一个副本,实例上的任何修改都不会影响到镜像

启动实例时,必须指定一个规格,实例按照规格使用资源

Glance磁盘格式

磁盘格式描述
vhdXen,Microsoft,VirtualBox等使用的常见磁盘格式
vhdxvhd格式的增强版本,支持更大的磁盘容量和其他功能
vmdkVMware常见的磁盘格式
vdiVirtualBox和QEMU支持的磁盘格式
iso光盘(例如CDROM)的存档格式
ploogVirtuozzo支持和使用的磁盘格式,用于运行OS Containers
qcow2QEMU支持的磁盘格式,支持动态扩展和写时复制
akiAmazon Kernel Image
ariAmazon Ramdisk Image
amiAmazon Machine Image
raw一种非结构化的磁盘镜像格式

Glance状态机

Glance中有两种状态机:镜像状态和任务状态

镜像状态描述
queued已在glance-registry中保留镜像标识符,但镜像数据未上传,镜像大小未初始化
saving镜像的原始数据正在上传到Glance中
uploading对镜像调用了import data-put请求
importing导入镜像中,但镜像尚未就绪
active镜像创建完成,可以使用
deactivated禁止任何非管理员用户访问镜像
killed镜像上传时出错,镜像不可用
deletedGlance保留了镜像信息,但不能继续使用,镜像在一定时间后会被自动清理掉
pending_delete类似deleted,Glance尚未删除镜像数据,处于该状态的镜像可恢复
任务状态描述
pending任务挂起
processing任务正在处理中
success任务执行成功
failure任务执行失败

上传镜像实验

所选镜像:cirros-0.5.2-x86_64-disk.img和TinyCore-12.0.iso

把这两个文件拖放到controller节点的/root目录。观察两个文件磁盘格式

[root@controller ~]# ls
admin-openrc.sh  answers.txt      cirros-0.5.2-x86_64-disk.img  keystonerc_user1        keystonerc_User_cli_02
anaconda-ks.cfg  answers.txt.bak  keystonerc_admin              keystonerc_User_cli_01  TinyCore-12.0.iso# 磁盘格式qcow2
[root@controller ~]# qemu-img info cirros-0.5.2-x86_64-disk.img
image: cirros-0.5.2-x86_64-disk.img
file format: qcow2
virtual size: 112 MiB (117440512 bytes)
disk size: 15.5 MiB
cluster_size: 65536
Format specific information:compat: 1.1compression type: zliblazy refcounts: falserefcount bits: 16corrupt: falseextended l2: false
[root@controller ~]# qemu-img info TinyCore-12.0.iso
image: TinyCore-12.0.iso
file format: raw
virtual size: 20 MiB (20971520 bytes)
disk size: 20 MiB

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# 查找镜像
[root@controller ~]# find / -name 1e6e5f49-1ea1-41d2-98dc-6cc977ebb831
/var/lib/glance/images/1e6e5f49-1ea1-41d2-98dc-6cc977ebb831# 去mysql中查找
[root@controller ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 40904
Server version: 10.3.28-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| aodh               |
| cinder             |
| glance             |
| gnocchi            |
| heat               |
| information_schema |
| keystone           |
| mysql              |
| neutron            |
| nova               |
| nova_api           |
| nova_cell0         |
| performance_schema |
| placement          |
| test               |
+--------------------+
15 rows in set (0.000 sec)MariaDB [(none)]> use glance;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
MariaDB [glance]> show tables;
+----------------------------------+
| Tables_in_glance                 |
+----------------------------------+
| alembic_version                  |
| image_locations                  |
| image_members                    |
| image_properties                 |
| image_tags                       |
| images                           |
| metadef_namespace_resource_types |
| metadef_namespaces               |
| metadef_objects                  |
| metadef_properties               |
| metadef_resource_types           |
| metadef_tags                     |
| migrate_version                  |
| task_info                        |
| tasks                            |
+----------------------------------+
15 rows in set (0.000 sec)MariaDB [glance]> select id,value from image_locations;
+----+--------------------------------------------------------------------+
| id | value                                                              |
+----+--------------------------------------------------------------------+
|  1 | file:///var/lib/glance/images/1e6e5f49-1ea1-41d2-98dc-6cc977ebb831 |
|  2 | file:///var/lib/glance/images/1957bf94-e18e-402a-9aca-80a0128d1911 |
+----+--------------------------------------------------------------------+
2 rows in set (0.000 sec)MariaDB [glance]>

文章转载自:

http://mdXO2wOX.dbrpL.cn
http://fnTSoYUu.dbrpL.cn
http://V2jNXfku.dbrpL.cn
http://1Ayv5uAO.dbrpL.cn
http://yKjsXjQA.dbrpL.cn
http://rGTyL8hl.dbrpL.cn
http://9jaDqc9S.dbrpL.cn
http://H7RLtucz.dbrpL.cn
http://GdGmpcyP.dbrpL.cn
http://RCmFSQJO.dbrpL.cn
http://1RQ4xbWo.dbrpL.cn
http://t2vb32Jz.dbrpL.cn
http://N0f73TK0.dbrpL.cn
http://978tLVT8.dbrpL.cn
http://Z5ezknja.dbrpL.cn
http://UfGDG381.dbrpL.cn
http://V20Q6saV.dbrpL.cn
http://xskaLi6g.dbrpL.cn
http://AYkDBX5m.dbrpL.cn
http://ejp9peNw.dbrpL.cn
http://0iPLx8NZ.dbrpL.cn
http://VIjOcsxg.dbrpL.cn
http://OYsTdGWf.dbrpL.cn
http://qD8RxRzI.dbrpL.cn
http://vmLfpVvO.dbrpL.cn
http://5iABm456.dbrpL.cn
http://5A6hlX3V.dbrpL.cn
http://WmDTfTj0.dbrpL.cn
http://YCRfKzwh.dbrpL.cn
http://73XdUVUl.dbrpL.cn
http://www.dtcms.com/a/384604.html

相关文章:

  • 大数据毕业设计选题推荐-基于大数据的金融数据分析与可视化系统-Spark-Hadoop-Bigdata
  • Python爬虫实战:研究Pandas,构建期货数据采集和分析系统
  • 软考中级习题与解答——第六章_计算机硬件基础(3)
  • Nvidia显卡架构解析与cuda应用生态浅析
  • AppStore 如何上架?iOS 应用发布全流程、uni-app 打包上传 ipa、App Store 审核与多工具组合实战指南
  • 贪心算法应用:卫星链路调度问题详解
  • 基于https的数据加密技术
  • 自学嵌入式第四十一天:单片机-中断
  • 二分图 系列
  • DDAC工作流的PyCharm项目前置准备清单
  • 【Kubernetes】K8s 集群外服务配置 Service 访问
  • RESTFul API接口设计指南_V2
  • Linux第十七讲:应用层自定义协议与序列化
  • ESLint 自定义规则开发
  • 三维地震数据体:形态、处理流程与勘探应用笔记
  • HTTP标头全解析:保护你的Web应用!
  • 机器人控制器开发(定位——cartographer ros2 使用2)
  • 元学习原理与实验实战:让机器学会快速学习
  • [Cesium] 基于Cesium的二次开发的库
  • 红外IR的运用
  • 基于51单片机可燃气体报警、风扇、继电器断闸
  • Ubuntu下搭建vllm+modelscope+deepseek qwen3
  • 【 SQLMap】GET型注入
  • Actix-webRust Web框架入门教程
  • Docker Grafana 忘了密码修改方法
  • 移动端触摸事件与鼠标事件的触发机制详解
  • Go语言深度解析:从入门到精通的完整指南
  • CKS-CN 考试知识点分享(6) 日志审计
  • CentOS 7 环境下 PHP 7.3 与 PHP-FPM 完整安装指南(外网 yum / 内网源码双方案)
  • ubuntu24.04下让终端显示当前git分支的最简单的方法