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://www.pswp.cn/bicheng/98046.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/98046.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/98046.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

直接查找試卷且可以免費下載

有什么網站可以直接查找試卷且可以免費下載? SearXNG開源元搜索引擎 This website shows the SearXNG public instances searx一個可定制的搜索引擎 分享一個基于Blockstack的DApp-searx,一個可定制的搜索引擎。 1- 鏈接 官網地址:https://searx.worl…

【獨立版】智創云享知識付費小程序 v5.0.23+小程序 搭建教程

介紹智創云享知識付費小程序v5.0.23 含PC、小程序、H5 、前端,系統獨立版已修復已知bug問題。框架是一款基于ThinkPHP框架開發的虛擬資源知識付費小程序,為廣大創業者、自媒體及培訓機構提供知識付費、內容付費、資源變現等領域的行業解決方案&#xff1…

布爾運算-區間dp

面試題 08.14. 布爾運算 - 力扣(LeetCode) Solution 這題的思路比較直接,就是枚舉最后一個進行計算的運算符,但是在實現過程中需要注意,定義范式f(l,r)表示l到r范圍,l和r必須為數字,l1,r-1為運…

MyBatis-Plus 擴展全局方法

1.文件內容package com.ruoyi.business.mybatisplus.base;import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.extension.service.IService;import java.util.List;/*** 擴展的 Service 接口* 所有自定義 Service 接口都需要繼承此接口…

13.Linux OpenSSH 服務管理

文章目錄Linux OpenSSH 服務管理環境準備OpenSSH 服務介紹SSH 介紹SSH 建立連接的過程加密類型雙向加密過程使用 ssh 訪問遠端CLIssh 工具演示ssh工具配置文件配置 ssh 密鑰認證ssh 故障模擬故障模擬排故故障自定義 SSH 服務配置文件禁止 root 登錄禁止密碼登錄只允許特定用戶登…

速通ACM省銅第五天 賦源碼(MEX Count)

目錄 引言: MEX Count 題意分析 邏輯梳理 代碼實現 結語: 引言: 本來,今天我是想著出倆題或三題題解的,但是在打第一題的時候就天塌了,導致今天就只搓了一道題,這題的難度在CF中為1300的水準&…

【數據結構與算法-Day 27】堆的應用:從堆排序到 Top K 問題,一文徹底搞定!

Langchain系列文章目錄 01-玩轉LangChain:從模型調用到Prompt模板與輸出解析的完整指南 02-玩轉 LangChain Memory 模塊:四種記憶類型詳解及應用場景全覆蓋 03-全面掌握 LangChain:從核心鏈條構建到動態任務分配的實戰指南 04-玩轉 LangChai…

企業即時通訊保障企業通訊安全,提升企業部門協作效率

在當今數字化轉型的大潮中,企業即時通訊軟件已從單純的溝通工具,逐步演變為保障企業數據安全的核心基礎設施。吱吱企業即時通訊軟件通過“私有化部署全流程加密”的雙重機制,為企業構建了一套集“通訊安全”與“部門協作”于一體的數字化解決…

《華為變革法:打造可持續進步的組織》讀書筆記

推薦序一:變革是企業活下去的基礎(胡彥平)華為前常務副總裁、變革指導委員會成員胡彥平在序言中強調,企業存續的核心命題是應對不確定性,而變革能力是破解這一命題的唯一答案。他以華為 30 余年的發展歷程為例&#xf…

第二篇:排序算法的簡單認識【數據結構入門】

排序算法的分類標準 時間復雜度分類 a. 簡單排序算法:時間復雜度O(n),冒泡排序、選擇排序、插入排序; b. 高級排序算法:時間復雜度O(n logn),快速排序、歸并排序、堆排序; c. 線性排序算法:時間…

快速掌握Dify+Chrome MCP:打造網頁操控AI助手

你是否曾經希望那些強大的開源大模型能更貼合你的專業領域,或者學會模仿你的行文風格?其實,實現這個目標的關鍵就在于“微調”。曾幾何時,微調模型是大公司的專屬游戲——動不動就需要幾十張GPU和復雜的分布式訓練技術。 而現在&…

單詞記憶-輕松記憶10個實用英語單詞(15)

1. repaint含義:重新油漆 讀音標注:/?ri??pe?nt/ 例句:We need to repaint the walls after the repairs. 譯文:修理完成后需要重新粉刷墻壁。 衍生含義:重新繪制(圖像場景);翻新…

visual studio快捷鍵

1.visual studio代碼格式化快捷鍵 1.CtrlA(全選) 2.CtrlK 3.CtrlF2.多行注釋 1.Ctrlk 2.Ctrlc2.多行取消注釋 1.Ctrlk 2.Ctrlu

Django全棧班v1.04 Python基礎語法 20250913 下午

練習:個人信息收集器 任務:創建一個個人信息收集和展示程序 要求: 收集用戶的姓名,年齡,城市,愛好驗證年齡輸入,必須是正數格式化輸出用戶信息計算用戶出生年份 name input("請輸入姓名&a…

學習海康VisionMaster之字符缺陷檢測

前言:差不多三個月沒更新了,天天碼代碼,實在是太忙了,有時候也在想這么忙到底是不是工作方法的問題,怎么樣才能變成大師呢! 一:進一步學習 今天學習下VisionMaster中的字符缺陷檢測&#xff1…

若依4.8.1打包war后在Tomcat無法運行,404報錯的一個解決方法

背景 最近使用若依4.8.1進行二次開發,接著嘗試打包成war包進行部署,結果出現了404,提示“HTTP狀態 404 - 未找到,請求的資源[/ruoyi-admin/]不可用”,翻了網上的教程,包括看了官方的解疑都沒有說到該情況。…

華清遠見25072班網絡編程學習day6

重點內容:數據庫基本概念:數據(Data):能夠輸入計算機并能被計算機程序識別和處理的信息集合數據 (Database)數據庫是在數據庫管理系統管理和控制之下,存放在存儲介質上的數據集合重要概念&#…

機器學習-網絡架構搜索

Neural Architecture Search(NAS) 一個神經網絡有不同類型的超參數 拓撲結構:resnet,mobilenet 單獨層:核大小,卷積層的通道,輸出隱藏單元的個數NAS自動設計神經網絡 如何設計搜索空間 如何探索…

云手機在辦公領域中自動化的應用

云手機在辦公自動化領域正逐漸展現出強大的潛力,以下是其在辦公中自動化應用的多方面介紹:企業借助云手機搭載的辦公軟件,可實現文檔處理自動化,對于重復性文檔任務,如制作每月固定格式的銷售報告、財務報表等&#xf…

c++多線程(3)------休眠函數sleep_for和sleep_until

操作系統:ubuntu22.04 IDE:Visual Studio Code 編程語言:C11 算法描述 這兩個函數都定義在 頭文件中,屬于 std::this_thread 命名空間,用于讓當前線程暫停執行一段時間。函數功能sleep_for(rel_time)讓當前線程休眠一段相對時間&…