OpenStack 學習筆記

OpenStack

1. 什么是 OpenStack

1.1 OpenStack 發展史

2006 年亞馬遜推出 AWS,正式開啟云計算的新紀元

2010 年 7 月美國國家航空航天局(NASA)與 Rackspace 合作,共同宣布 OpenStack 開放源碼計劃,由此開啟了屬于 OpenStack 的時代

OpenStack 從誕生之初對標 AWS,一直在向 AWS 學習,同時開放接口去兼容各種 AWS 服務

1.2 OpenStack 是什么

OpenStack 是虛擬機、裸金屬和容器的云基礎架構,其可控制整個數據中心的大型計算、存儲和網絡資源池,所有資源都通過 API 或 Web 界面進行管理

OpenStack 本質是由一系列叫腳本的命令組成,這些腳本會被捆綁到名為項目的軟件包中,這些軟件包則用于傳遞創建云環境的任務

為了創建這些環境,OpenStack 還會使用 2 種其他類型的軟件:

  • 虛擬化軟件,用于創建從硬件中抽象出來的虛擬資源層
  • 基礎操作系統(OS),用于執行 OpenStack 腳本發出的命令

OpenStack 本身不會虛擬化資源,但會使用虛擬化資源來構建云,OpenStack、虛擬化和基礎操作系統,這 3 種技術協同工作服務用戶

1.3 OpenStack 版本

OpenStack 每年兩個大版本,一般在 4 月和 10 月中旬發布,版本命名首字母按照 A-Z 循環更替

在這里插入圖片描述

1.4 OpenStack 與虛擬化

OpenStack 不是虛擬化,OpenStack 只是系統的控制面,不包括系統的數據面組件,如Hypervisor、存儲和網絡設備等。虛擬化只是 OpenStack 底層的技術實現手段之一,但并非核心關注點

OpenStack 與虛擬化的關鍵區別在于

  • OpenStack 本身不提供虛擬化技術,其通過調用多種技術實現多資源池管理,對外提供統一管理接口
  • 虛擬化使虛擬與物理環境隔離,實現資源復用、降低隔離損耗、提升運行效率、提供高級虛擬化特性

2. OpenStack 架構

在這里插入圖片描述

每個 OpenStack 服務內部是由多個進程組成。所有服務(Keystone除外)都至少有一個 API 進程,負責監聽 API 請求,對請求進行預處理并將它們傳遞給服務的其他部分

每個 OpenStack 服務的進程之間的通信,使用 AMQP 消息代理。服務的狀態存儲在數據庫中。在部署和配置 OpenStack 云時,管理員可以在多種消息代理和數據庫解決方案中進行選擇,例如 RabbitMQ、MySQL、MariaDB 和 SQLite

用戶可以通過 Web 用戶界面、命令行客戶端以及通過瀏覽器插件或 curl 等工具發出 API 請求來訪問 OpenStack

在這里插入圖片描述

OpenStack 的核心服務如下:

服務名服務類型作用
HORIZON界面管理服務提供基于 Web 的控制界面,使云管理員和用戶能夠管理各種 OpenStack 資源和服務
KEYSTONE認證服務提供身份驗證,服務發現和分布式多租戶授權,支持 LDAP、OAuth、OpenID Connect、SAML 和 SQL
GLANCE鏡像服務提供發現、注冊和檢索虛擬機鏡像功能,提供的虛擬機實例鏡像可以存放在不同地方,例如本地文件系統、Swift對象存儲、Cinder塊存儲等
NOVA計算服務提供大規模、可擴展、按需自助服務的計算資源,支持管理裸機,虛擬機和容器
CINDER塊存儲服務提供塊存儲服務,為虛擬機實例提供持久化存儲,調用不同存儲接口驅動,將存儲設備轉化成塊存儲池,用戶無需了解存儲實際部署位置或設備類型
SWIFT對象存儲服務提供高度可用、分布式、最終一致的對象存儲服務,可以高效、安全且廉價地存儲大量數據,非常適合存儲需要彈性擴展的非結構化數據
NEUTRON網絡服務負責管理虛擬網絡,專注于為 OpenStack 提供網絡即服務,依賴 Keystone 認證服務
HEAT編排服務為云應用程序編排 OpenStack 基礎架構資源,提供 OpenStack 原生 REST API 和 CloudFormation 兼容的查詢 API
CEILOMETER計量服務Ceilometer項目是一項數據收集服務,提供跨當前 OpenStack 核心組件規范化和轉換數據的能力,其數據可為所有 OpenStack 核心組件提供客戶計費、資源跟蹤和警報功能

在這里插入圖片描述

3. 安裝 OpenStack

3.1 配置模板機

從模板機中克隆一臺虛擬機作為 OpenStack 模板機使用,配置信息如下:

  • CPU: 不低于 4 核
  • 內存: 不低于 8 GB
  • 磁盤: 不低于 100 GB
  • 網卡: 1 張,NAT 模式
  • 操作系統: CentOS 8 Stream(可視情況而定)
  1. 配置 yum 源
[root@localhost ~]# rm -rf /etc/yum.repos.d/*
[root@localhost ~]# cat <<EOF > /etc/yum.repos.d/openstack.repo
[centos-openstack-victoria]
name=CentOS 8 - OpenStack victoria
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/cloud/x86_64/openstack-victoria/
gpgcheck=0
enabled=1[highavailability]
name=CentOS Stream 8 - HighAvailability
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/HighAvailability/x86_64/os/
gpgcheck=0
enabled=1[nfv]
name=CentOS Stream 8 - NFV
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/NFV/x86_64/os/
gpgcheck=0
enabled=1[rt]
name=CentOS Stream 8 - RT
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/RT/x86_64/os/
gpgcheck=0
enabled=1[resilientstorage]
name=CentOS Stream 8 - ResilientStorage
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/ResilientStorage/x86_64/os/
gpgcheck=0
enabled=1[extras-common]
name=CentOS Stream 8 - Extras packages
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/extras/x86_64/extras-common/
gpgcheck=0
enabled=1[extras]
name=CentOS Stream $releasever - Extras
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/extras/x86_64/os/
gpgcheck=0
enabled=1[centos-ceph-pacific]
name=CentOS - Ceph Pacific
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/storage/x86_64/ceph-pacific/
gpgcheck=0
enabled=1[centos-rabbitmq-38]
name=CentOS-8 - RabbitMQ 38
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/messaging/x86_64/rabbitmq-38/
gpgcheck=0
enabled=1[centos-nfv-openvswitch]
name=CentOS Stream 8 - NFV OpenvSwitch
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/nfv/x86_64/openvswitch-2/
gpgcheck=0
enabled=1[baseos]
name=CentOS Stream 8 - BaseOS
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/BaseOS/x86_64/os/
gpgcheck=0
enabled=1[appstream]
name=CentOS Stream 8 - AppStream
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/AppStream/x86_64/os/
gpgcheck=0
enabled=1[powertools]
name=CentOS Stream 8 - PowerTools
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/PowerTools/x86_64/os/
gpgcheck=0
enabled=1
EOF[root@localhost ~]# yum clean all
[root@localhost ~]# yum makecache
  1. 安裝基本軟件包
yum install -y bash-completion open-vm-tools net-tools chrony.x86_64
source /usr/share/bash-completion/bash_completion
  1. 配置 Hosts
echo '10.1.8.10 controller' >> /etc/hosts
echo '10.1.8.11 compute' >> /etc/hosts
  1. 關閉 SELinux
sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
  1. 清除密鑰信息
rm -rf /etc/ssh/ssh_host_*
  1. 清除 Machine ID
cat /dev/null > /etc/machine-id
cat /etc/machine-id
  1. 關機,打快照

3.2 配置控制節點與計算節點

根據模板機快照克隆出控制節點主機與計算節點主機:

控制節點主機計算節點主機
主機名controllercompute
IP 地址10.1.8.1010.1.8.11
  1. 配置主機基本信息
# ===== Controller =====
hostnamectl set-hostname controller
nmcli connection modify ens160 ipv4.method manual ipv4.addresses 10.1.8.10/24 ipv4.gateway 10.1.8.2 ipv4.dns 10.1.8.2
nmcli connection up ens160# ===== Compute =====
hostnamectl set-hostname compute
nmcli connection modify ens160 ipv4.method manual ipv4.addresses 10.1.8.11/24 ipv4.gateway 10.1.8.2 ipv4.dns 10.1.8.2
nmcli connection up ens160
  1. 配置時間服務器
# ===== Controller =====
[root@controller ~]# vim /etc/chrony.conf
# pool 2.centos.pool.ntp.org iburst
server ntp.aliyun.com iburst
# Allow NTP client access from local network.
#allow 192.168.0.0/16
allow 10.1.8.0/24[root@controller ~]# systemctl restart chronyd
[root@controller ~]# systemctl enable chronyd# ===== Compute =====
[root@compute ~]# vim /etc/chrony.conf
# pool 2.centos.pool.ntp.org iburst
server controller iburst[root@compute ~]# systemctl restart chronyd
[root@compute ~]# systemctl enable chronyd

配置完成后關閉操作系統并打快照

  1. 安裝 OpenStack
# 安裝 OpenStack 軟件包
[root@controller ~]# yum install -y openstack-packstack# 生成應答文件
[root@controller ~]# packstack --gen-answer-file=answers.txt
Packstack changed given value  to required value /root/.ssh/id_rsa.pubAdditional information:* Parameter CONFIG_NEUTRON_L2_AGENT: You have chosen OVN Neutron backend. Note 
that this backend does not support the VPNaaS plugin. Geneve will be used as the 
encapsulation method for tenant networks# 更改應答文件
[root@controller ~]# sed -i '/^CONFIG_COMPUTE_HOSTS=/cCONFIG_COMPUTE_HOSTS=10.1.8.10,10.1.8.11' answers.txt
#                                                                          |--------|--------| 控制節點與存儲節點 IP 地址
[root@controller ~]# sed -i '/^CONFIG_PROVISION_DEMO=/cCONFIG_PROVISION_DEMO=n' answers.txt
[root@controller ~]# sed -i '/^CONFIG_HEAT_INSTALL=/cCONFIG_HEAT_INSTALL=y' answers.txt
[root@controller ~]# sed -i '/^CONFIG_NEUTRON_OVN_BRIDGE_IFACES=/cCONFIG_NEUTRON_OVN_BRIDGE_IFACES=brex:ens160' answers.txt
#                                                                                                       |----| 網卡設備名
[root@controller ~]# sed -i.bak -r 's/(.+_PW)=[0-9a-z]+/\1=huawei/g' answers.txt
#                                                          |----| 此處為密碼,可自行設置# 關閉網絡管理
[root@controller ~]# systemctl stop NetworkManager; systemctl disable NetworkManager; systemctl mask NetworkManager
[root@compute ~]# systemctl stop NetworkManager; systemctl disable NetworkManager; systemctl mask NetworkManager# 安裝 OpenStack
[root@controller ~]# packstack --answer-file=answers.txt
# 注:整個安裝過程會持續近 45 分鐘,且長時間處于一個頁面,屬于正常現象
**** Installation completed successfully ******

完成后可以在瀏覽器輸入控制節點的 IP 地址測試

在這里插入圖片描述

  1. 開啟網絡服務
[root@controller ~]# systemctl start network
[root@controller ~]# systemctl enable network[root@compute ~]# systemctl start network
[root@compute ~]# systemctl enable network
  1. 配置 OpenStack 命令補全
[root@controller ~]# openstack complete >> /etc/bash_completion.d/complete
The 'openstack bgp speaker show dragents' CLI is deprecated and will be removed 
in the future. Use 'openstack bgp dragent list' CLI instead.

關機,打快照

一定要打快照!!!
一定要打快照!!!
一定要打快照!!!

至此安裝結束

4. 界面管理:OpenStack - HORIZON

4.1 網頁端

打開瀏覽器,輸入 controller 主機的 IP 地址訪問 web 端網頁

輸入用戶名與密碼進行登錄,管理員用戶名默認為 admin

在這里插入圖片描述

完成登錄后,主頁面為 “項目-計算-概覽” 頁面,左側為管理選項,中間為管理界面,中上方為當前目錄,左上方為項目切換按鈕,右上角為用戶管理按鈕

在這里插入圖片描述

點擊導航欄的 “管理員”、“概覽”,可以看到整個系統的使用狀況摘要

在這里插入圖片描述

點擊導航欄的 “身份管理”、“項目”,可以看到項目的界面

在這里插入圖片描述

如需修改用戶名與密碼,可以點擊右上方用戶名、“設置”、“修改密碼”,即可打開密碼重置頁面

在這里插入圖片描述

創建用戶

點擊 “身份管理”、“用戶”、“創建用戶”,填寫必要信息,即可創建一個新用戶

示例:為 admin 項目創建一個普通用戶 user1

在這里插入圖片描述

創建完成后可自行嘗試以新用戶身份登錄

4.2 命令行

遠程連接到 OpenStack Controller 主機

4.2.1 登入 OpenStack 命令行

使用命令 source 命令可以進入 OpenStack 命令行,語法如下:

source 認證文件# 示例
[root@controller ~ 19:05:17]# source keystonerc_admin 
[root@controller ~(keystone_admin)]# # OpenStack 管理命令行

完成登錄后,可以執行一條命令驗證登錄,如

[root@controller ~(keystone_admin)]# openstack project list
+----------------------------------+----------+
| ID                               | Name     |
+----------------------------------+----------+
| 4f1858067e5741aca8c7ce11ec53f9cb | admin    |
| 6bfedc999fec49f99cf3805f1dc64096 | services |
+----------------------------------+----------+
# Success

如果想要以別的用戶角色進入 OpenStack 命令行,需要為對應的用戶創建一個驗證文件,以剛剛創建的 user1 用戶為例,操作如下:

# 1. 復制 admin 用戶的認證文件,并將用戶名更改為 user1
[root@controller ~(keystone_admin)]# cp keystonerc_admin keystonerc_user1# 2. 更改文件內與用戶信息相關的內容
[root@controller ~(keystone_admin)]# vim keystonerc_user1 
unset OS_SERVICE_TOKENexport OS_USERNAME=user1    # 用戶名export OS_PASSWORD='huawei' # 密碼export OS_REGION_NAME=RegionOneexport OS_AUTH_URL=http://10.1.8.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# 3. 以 user1 用戶身份登錄
[root@controller ~(keystone_admin)]# source keystonerc_user1 
[root@controller ~(keystone_user1)]# # Success

5. 認證管理:OpenStack - KEYSTONE

5.1 KEYSTONE 基本概念

Keystone 是 OpenStack 的核心身份認證服務,負責管理用戶身份驗證、服務目錄管理以及訪問權限控制。它為整個云平臺提供了統一的認證機制,確保只有經過授權的用戶和服務才能訪問相應資源。

理解 Keystone 的核心概念是掌握 OpenStack 身份管理的基礎,以下為關鍵術語及其含義的詳細說明:

關鍵字含義
Domain,Keystone 中一個虛擬概念,一個域是一組 User、Group 或 Project 的容器
User用戶,是可以通過 Keystone 訪問 OpenStack 服務的個人、系統或某個服務
Group用戶組,是一組 User 的容器,可以向 Group 中添加用戶,并直接給 Group 分配角色
Project項目,是各個服務中一些可以訪問的資源集合,項目只需在某個域下唯一即可
Role角色,具有一組定義的用戶權限和特權以執行一組特定操作,角色不同,被賦予的權限不同
Service服務,一種 OpenStack 服務,服務會對外暴露一個或多個端點,用戶可以通過這些端點訪問資源并執行操作
Endpoint端點,是指一個可以用來訪問某個具體服務的網絡地址
Token令牌,是允許訪問特定資源的憑證
Credential憑證,確認用戶身份的數據,如用戶的用戶名和密碼

5.2 域 Domain

一個域可以對應一個大的機構、一個數據中心,并且必須全局唯一

云的終端用戶可以在自己的Domain中創建多個 Project、User、Group 和 Role。具備對多個 Project 進行統一管理的能力

在 OpenStack 命令行中,使用 openstack domain 命令對域進行管理

5.2.1 查看域

使用命令 openstack domain list 查看當前系統的域列表

示例:

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

5.2.2 創建域

使用 openstack domain create 命令創建新的域,語法如下:

openstack domain create 域名# 示例
[root@controller ~(keystone_admin)]# openstack domain create domain-test
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description |                                  |
| enabled     | True                             |
| id          | dfe813d348db481eaacbf42bc57d6e86 |
| name        | domain-test                      |
| options     | {}                               |
| tags        | []                               |
+-------------+----------------------------------+
[root@controller ~(keystone_admin)]# openstack domain list # 查看列表驗證結果
+----------------------------------+-------------+---------+--------------------+
| ID                               | Name        | Enabled | Description        |
+----------------------------------+-------------+---------+--------------------+
| default                          | Default     | True    | The default domain |
| dfe813d348db481eaacbf42bc57d6e86 | domain-test | True    |                    | # 創建成功
| ef4dc053cfcb41f38d496152f8c82be4 | heat        | True    |                    |
+----------------------------------+-------------+---------+--------------------+

Keystone 會通過認證信息(Credential,如密碼等)驗證用戶請求的合法性,通過驗證的用戶將會分配到一個特定的令牌,該令牌可以被當作后續資源訪問的一個通行證,并非全局唯一,只需要在域內唯一即可。

5.2.3 開啟多域登錄

開啟多域登錄需要將位于 /etc/openstack-dashboard 目錄下的 openstack 配置文件 local_settings 中的 OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT 參數值設置為 True

[root@controller ~(keystone_admin)]# vim /etc/openstack-dashboard/local_settings
# 配置項在第 83 行附近
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True

完成后配置后,重啟 httpd 服務,然后就可以在網頁端看到登錄時有域選項

[root@controller ~(keystone_admin)]# systemctl restart httpd

在這里插入圖片描述

進入系統后,也可以在左上角顯示當前項目的位置切換當前域

在這里插入圖片描述

5.2.4 刪除域

使用 openstack domain delete 命令刪除域,再刪除之前,還需要先將域停用,語法如下:

# 1. 停用域
openstack domain set --disable 域名
# 2. 刪除域
openstack domain delete 域名# 示例
# ===== 1. 停用域 =====
[root@controller ~(keystone_admin)]# openstack domain set --disable domain-test# ===== 2. 刪除域 =====
[root@controller ~(keystone_admin)]# openstack domain delete domain-test# ===== 3. 查看結果 =====
[root@controller ~(keystone_admin)]# openstack domain list
+----------------------------------+---------+---------+--------------------+
| ID                               | Name    | Enabled | Description        |
+----------------------------------+---------+---------+--------------------+
| default                          | Default | True    | The default domain |
| ef4dc053cfcb41f38d496152f8c82be4 | heat    | True    |                    |
+----------------------------------+---------+---------+--------------------+

5.3 用戶 User

Keystone 會通過認證信息(Credential,如密碼等)驗證用戶請求的合法性,通過驗證的用戶將會分配到一個特定的令牌,該令牌可以被當作后續資源訪問的一個通行證,并非全局唯一,只需要在域內唯一即可

在 OpenStack 命令行中,使用 openstack user 命令對用戶進行管理

5.3.1 查看用戶

使用命令 openstack user list 可以查看系統中的所有用戶

[root@controller ~(keystone_admin)]# openstack user list
+----------------------------------+------------+
| ID                               | Name       |
+----------------------------------+------------+
| 9185e1a6e1104d599800b8dc991648fa | admin      |
| 2691dc95f3904149b4b68c622a5f8fb3 | heat_admin |
| a16a1b2282854db7a3a67401e065efb0 | glance     |
| 1b6c73cd0f1a46b39d38d428242c9536 | cinder     |
| 4801377f70af47029d24de21327d0163 | nova       |
| 1eafa4f84fba40ba9a7c5d84adc0f7d2 | placement  |
| 488261f809784873b881a4ce95562557 | neutron    |
| 47b260ab202a4e6ea9e76bfb16fe9693 | swift      |
| 510e37e577fa43409ab9d294b8a4f163 | heat       |
| 4f40959cd70a4bc69f4c2ea1d1d1b92d | heat-cfn   |
| cb70cc5072144949a94fc7f413c2d372 | gnocchi    |
| 2e5877e2b9124e85b0e552c085beb0ac | ceilometer |
| a00ae338fcc04c2db3d3a23e06ab4e1b | aodh       |
| 43b88044bfcf47ed9efdaeee22dd2b2f | user1      |
+----------------------------------+------------+

使用命令 openstack user show 用戶名 可以查看指定用戶的詳細信息

[root@controller ~(keystone_admin)]# openstack user show admin
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| email               | root@localhost                   |
| enabled             | True                             |
| id                  | 9185e1a6e1104d599800b8dc991648fa |
| name                | admin                            |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

5.3.2 創建用戶

使用 openstack user create 創建用戶,語法如下:

openstack user create [選項及參數] 用戶名
# 常用選項
# --password PASSWORD: 指定用戶通過 PASSWORD 密碼進行登錄
# --domain DOMAIN: 將用戶加入 DOMAIN 域,默認加入 Default 域
# --email EMAIL: 郵箱地址,默認為 root@localhost
# --description TEXT: 描述
# --password-Prompt: 交互式輸入密碼
# --enable: 啟用用戶(默認)
# --disable: 禁用用戶# 示例 1:創建一個用戶 user1,密碼為 huawei
[root@controller ~(keystone_admin)]# openstack user create --password huawei user1
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 43b88044bfcf47ed9efdaeee22dd2b2f |
| name                | user1                            |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+# 示例 2:創建一個用戶 user2,密碼為 huawei,隸屬于 domain-test 域,默認為禁用狀態
[root@controller ~(keystone_admin)]# openstack user create --password huawei --domain domain-test --disable user2
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | 468eedb41b254a70b337d64f3c9ce24a | # domain-test 域 ID
| enabled             | False                            | # 默認狀態為禁用
| id                  | 323b966bd1f1453cb8f85279e9dbce37 |
| name                | user2                            |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+# 查看結果
[root@controller ~(keystone_admin)]# openstack user list
+----------------------------------+------------+
| ID                               | Name       |
+----------------------------------+------------+
| 9185e1a6e1104d599800b8dc991648fa | admin      |
| ...                              | ...        |
| 43b88044bfcf47ed9efdaeee22dd2b2f | user1      | # HERE
| 323b966bd1f1453cb8f85279e9dbce37 | user2      | # HERE
+----------------------------------+------------+

5.3.3 修改用戶信息

使用 openstack user set 命令修改用戶信息,語法如下:

openstack user set 選項與參數 用戶名
# 常用選項
# --password PASSWORD: 修改用戶密碼為 PASSWORD
# --email EMAIL: 修改用戶郵箱地址為 EMAIL
# --description TEXT: 修改描述
# --password-Prompt: 交互式修改密碼
# --enable: 啟用用戶
# --disable: 禁用用戶# 示例:修改 user2 的登錄密碼為 centos,設置其郵箱地址為 abc@123.com,啟用賬戶
[root@controller ~(keystone_admin)]# openstack user set --password centos --email abc@123.com --enable user2
[root@controller ~(keystone_admin)]# openstack user show user2
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | 468eedb41b254a70b337d64f3c9ce24a |
| email               | abc@123.com                      | # 郵箱地址已修改
| enabled             | True                             | # 賬號已啟用
| id                  | 323b966bd1f1453cb8f85279e9dbce37 |
| name                | user2                            |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

5.3.4 刪除用戶

使用命令 openstack user delete 用戶名 可以刪除用戶

# 示例:刪除用戶 user2
[root@controller ~(keystone_admin)]# openstack user delete user2
[root@controller ~(keystone_admin)]# openstack user list
+----------------------------------+------------+
| ID                               | Name       |
+----------------------------------+------------+
| 9185e1a6e1104d599800b8dc991648fa | admin      |
| ...                              | ...        |
| 43b88044bfcf47ed9efdaeee22dd2b2f | user1      |
+----------------------------------+------------+

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/97869.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/97869.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/97869.shtml

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

相關文章

mysql小數取整

1 向下取整 SELECT FLOOR(123.456); -- 結果: 1232 向上取整 SELECT CEIL(123.001); -- 結果: 1243 四舍五入 SELECT ROUND(123.456); -- 結果: 123 SELECT ROUND(123.556); -- 結果: 1244 截斷&#xff08;不四舍五入&#xff0c;直接截斷小數位&#xff09; SELECT …

Day43 PHP(mysql不同注入類型、mysql不同注入點、mysql傳輸不同數據類型 )

一、不同注入類型實際&#xff1a;我們未知sql是哪種類型&#xff0c;只能靠試/使用sql工具原理&#xff1a;閉合程序員寫的sql語句&#xff0c;并且執行我們所需要的sql語句&#xff0c;最后將閉合后多余的 用-- 或者#注釋掉。 總結一下就是先閉合&#xff0c;后注釋。共四種…

Linux應用開發(君正T23):三網智能切換及配網功能

前段時間接手了一個監控項目&#xff0c;其中甲方對于設備的要求有一條就是實現網口eth、WiFi、4G三種手段的聯網方式并且當某一個網絡不好的時候就去切換到下一個能用的網絡&#xff0c;讓監控設備持續不斷的有網絡&#xff0c;保證監控數據的上傳。這個部分的功能就交由我來實…

IvorySQL 4.6:DocumentDB+FerretDB 實現 MongoDB 兼容部署指南

背景 MongoDB 誕生之初&#xff0c;便以出色的易用性與詳盡的驅動程序文檔脫穎而出&#xff0c;堪稱對傳統關系型數據庫的一次重要革新&#xff0c;也正因如此&#xff0c;它迅速成為開發者社區的熱門之選。 然而&#xff0c;隨著其許可模式從開源轉向 SSPL 許可證&#xff0…

論文閱讀:arixv 2025 One Token to Fool LLM-as-a-Judge

總目錄 大模型相關研究&#xff1a;https://blog.csdn.net/WhiffeYF/article/details/142132328 https://arxiv.org/pdf/2507.08794 https://www.doubao.com/chat/20698287584991234 速覽 這篇文檔主要講了一個關于“大語言模型當裁判”的重要發現——很多我們以為靠譜的AI裁…

webrtc弱網-AlrDetector類源碼分析與算法原理

AlrDetector&#xff08;應用受限區域檢測器&#xff09;是WebRTC中用于檢測發送端是否處于應用層限速狀態的核心組件。它通過維護一個基于時間間隔的預算系統&#xff0c;監控實際發送數據量與網絡容量之間的關系。當發送速率持續低于網絡容量的設定比例&#xff08;如65%&…

ABP + Verify(快照) 驅動的 PDF/Excel 導出回歸

ABP + Verify(快照) 驅動的 PDF/Excel 導出回歸 ?? ?? 目錄 ABP + Verify(快照) 驅動的 PDF/Excel 導出回歸 ?? 0) TL;DR ? 1) 背景與目標 ?? 2) 架構與職責(解耦渲染器) ?? 3) “確定性”前置條件(去偽差異) ?? 4) PDF 回歸策略(以 QuestPDF 為例) ?? 4.…

SIFT特征匹配實戰:KNN算法實現指紋認證

這個利用了前面學到的SIFT特征檢測來實現的&#xff0c;然后這里主要就是引入了一個新的匹配器。這里匹配是用KNN算法進行匹配的。下面來看下細節。介紹函數由于要頻繁展示&#xff0c;所以這里定義了一個函數。def cv_show(name, img):cv2.imshow(name, img)cv2.waitKey(0)導入…

網絡安全滲透測試第一步信息收集

信息收集是滲透測試中最基礎且關鍵的一步&#xff0c;它直接影響后續漏洞發現和利用的成功率。本文將系統介紹信息收集的常用方法、工具和技巧&#xff0c;幫助你在實戰中高效定位目標弱點。 一、搜索引擎利用 1. Google Hacking 通過Google搜索語法快速定位敏感信息、后臺地…

C++——類和對象1

1.類的定義1.1 類定義格式class為定義類的關鍵字&#xff0c;Stack為類的名字&#xff0c;{ }中的內容是類的主題為了&#xff0c;注意類定義結束時后面的分號不能省略。類體中的內容稱為類的成員&#xff1a;類中的變量稱為類的屬性或成員變量&#xff1b;類中的函數稱為類的方…

動手學Agent:Agent設計模式——構建有效Agent的7種模型

Agent本身的定義也不是絕對的&#xff0c;從LLM到最高等級的Agent&#xff0c;中間是有大量灰度地帶的&#xff0c;在Anthropic看來&#xff0c;Agent可以以多種方式定義&#xff0c;有些人將完全自主系統定義為Agent&#xff0c;而另一些團隊則將預定義的工作流程定義為Agent。…

Windows 下 .venv 激活腳本深度定制:同時注入 PyTorch 調試日志與國內網絡加速通道——從“能跑”到“好調”的完整工程化方案

Windows 下 .venv 激活腳本深度定制&#xff1a;同時注入 PyTorch 調試日志與國內網絡加速通道 ——從“能跑”到“好調”的完整工程化方案 一、為什么非得改激活腳本&#xff1f; 重復勞動最耗時 每次打開終端都要敲四五行 set/export&#xff0c;人腦就是不可靠的剪貼板。 環…

[BX]和loop指令,debug和masm匯編編譯器對指令的不同處理,循環,大小寄存器的包含關系,操作數據長度與寄存器的關系,段前綴

[bx]是什么[bx]這個表達方式和[0]很像&#xff0c;他們倆的功能也很像。之前就提到了&#xff0c;[0]表示一個內存單元&#xff0c;他的偏移地址是0。從這邊我們可以引出內存單元的定義&#xff1a;要有內存單元的地址&#xff0c;要有內存單元的長度&#xff08;類型&#xff…

域格YM310 X09移芯CAT1模組HTTPS連接服務器

HTTPS連接服務器 本文檔介紹了HTTPS連接服務器的大致流程&#xff0c;測試服務器為httpbin.org。 HTTPS連接服務器流程 創建證書文件 創建一個文件 ATFSCREATE<filename>參數&#xff1a;<filename> 文件名 寫入CA證書 ATFSWRITE<filename>,<mode&…

【ManiSkill】常見envs學習筆記

1. StackCube-v1 用于模擬機器人在桌面場景中將紅色立方體&#xff08;cubeA&#xff09;堆疊到綠色立方體&#xff08;cubeB&#xff09;上的操作。該任務強調精確抓取、放置和穩定性控制。成功條件包括紅色立方體穩定堆疊在綠色立方體上且不被機器人抓取。 參數 (Arguments…

Java 網絡編程全解析

前言&#xff1a;網絡編程的意義與價值 前言&#xff1a;網絡編程的意義與價值 在當今互聯網時代&#xff0c;網絡編程是軟件開發的核心技能之一。無論是桌面應用、移動應用還是企業級系統&#xff0c;幾乎都需要與網絡交互。Java 作為一門跨平臺的編程語言&#xff0c;提供了完…

HarmonyOS應用拉起系列(三):如何直接拉起騰訊/百度/高德地圖進行導航

在鴻蒙應用開發中&#xff0c;經常需要跳轉第三方地圖應用&#xff08;如 騰訊地圖、百度地圖、高德地圖&#xff09;進行導航。無論是出行類 App、物流類 App&#xff0c;還是線下活動類應用&#xff0c;都存在“跳轉地圖導航”的實際需求。寫完HarmonyOS應用拉起系列一和二后…

PCGrad解決多任務沖突

論文解讀&#xff1a;"Gradient Surgery for Multi-Task Learning" 1. 論文標題直譯 Gradient Surgery: 梯度手術for Multi-Task Learning: 應用于多任務學習 合在一起就是&#xff1a;為多任務學習量身定制的梯度手術。這個名字非常形象地概括了它的核心思想。 …

Nvidia顯卡架構解析與cuda應用生態淺析

文章目錄 0. Nvidia顯卡簡介 一、主要顯卡系列 二、主要GPU架構與代表產品 1.main 1.1 CUDA 13.0 的重大變化 1.2 V100 的硬件短板已顯現 1.3 這意味著什么? 1.4 寫在后面 彩蛋:V100 0. Nvidia顯卡簡介 一、主要顯卡系列 GeForce 系列(消費級) 用途:游戲、創作、日常圖形…

開發指南:使用 MQTTNet 庫構建 .Net 物聯網 MQTT 應用程序

一、背景介紹 隨著物聯網的興起&#xff0c;.Net 框架在構建物聯網應用程序方面變得越來越流行。微軟的 .Net Core 和 .Net 框架為開發人員提供了一組工具和庫&#xff0c;以構建可以在 Raspberry Pi、HummingBoard、BeagleBoard、Pine A64 等平臺上運行的物聯網應用程序。 MQT…