OpenStack部署(一)

news2024/12/23 22:57:29

OpenStack部署

    • 1. 流程介绍
      • 1.1 模块关联
      • 1.2 虚拟机创建流程
    • 2. 部署
      • 2.1 服务器规划
      • 2.2 环境整备
        • 1. 配置控制节点域名/计算节点解析
        • 2. 关闭控制节点/计算节点selinux和防火墙
        • 3. 安装与配置控制节点/计算节点的时间同步服务
        • 4. 在控制节点/计算节点执行命令验证时间同步服务
        • 5. 在控制节点/计算节点添加yum源
        • 6. 在控制节点安装MySQL数据库服务并配置
        • 7. 在控制节点安装RabbitMQ消息队列并配置
    • 3. KeyStone
      • 3.1 创建KeyStone数据库并授权
      • 3.2 yum安装KeyStone和Memcached
      • 3.3 启动Memcached并设置开机自启
      • 3.4 生成一个admin_token
      • 3.5 配置keystone.conf文件
      • 3.6 初始化身份认证服务的数据库
      • 3.7 初始化Fernet keys
      • 3.8 配置Apache HTTP服务器
      • 3.9 启动Apache HTTP并设置开机自启
      • 3.10 设置OpenStack环境变量
      • 3.11 创建服务实体和身份认证服务
      • 3.12 创建认证服务的 API 端点
      • 3.13 创建default域
      • 3.14 创建admin项目
      • 3.15 创建admin用户并设置密码
      • 3.16 创建admin角色
      • 3.17 添加admin角色到admin项目和用户上
      • 3.18 创建service项目
      • 3.19 创建demo项目
      • 3.20 创建demo用户并设置密码
      • 3.21 创建user角色
      • 3.22 添加user角色到demo项目和用户
      • 3.23 验证操作
      • 3.24 创建 OpenStack 客户端环境脚本
      • 3.25 **常用命令**

在这里插入图片描述

OpenStack它是一个开源云计算管理平台项目,由几个主要组件组合而成。OpenStack支持几乎所有类型的云环境,项目目标是提供简单、大规模扩展、丰富、统一的云计算管理平台。OpenStack基础设施即服务通过各种互补服务提供(IaaS)每项服务提供的解决方案API集成。常见组件:

  • Dashboard(web又名控制台Horizon)
  • Keystone(权限管理为各组件提供认证和授权功能)
  • Nova(管理虚拟机)
  • Nova-network(Neutron,管理网络流量和ip)
  • Glance(镜像管理,提供安装镜像)
  • Cinder(磁盘管理,云盘)
  • Swift(网盘,对象存储)

1. 流程介绍

1.1 模块关联

在这里插入图片描述

1.2 虚拟机创建流程

在这里插入图片描述

虚拟机创建流程:
第一阶段

    1. 通过登录界面或命令行通过RESTful API向keystone获取认证信息。
    1. keystone通过用户要求认证信息并生成auth-token返回相应的认证请求。
    1. 界面或命令通过RESTful API向nova-api发送一个boot instance请求(携带auth-token)。
    1. nova-api接受请求后向keystone发送认证请求,查看token是否为有效用户和token。
    1. keystone验证token是否有效,如果有效,返回有效的认证和相应的角色(注:有些操作需要角色权限)。

第二阶段

    1. 通过认证后nova-api与数据库通信。
    1. 新建虚拟机的初始数据库记录。
    1. nova-api通过rpc.call向nova-scheduler请求是否有创建虚拟机的资源(Host ID)。
    1. nova-scheduler进程侦听消息队列获取nova-api的请求。
    1. nova-scheduler通过查询nova在数据库中计算资源,并通过调度算法计算满足虚拟机创建需要的主机。
    1. 有符合虚拟机创建的主机,nova-scheduler在数据库中更新虚拟机对应的物理主机信息。
    1. nova-scheduler通过rpc.cast向nova-compute发送创建虚拟机请求的相应信息。
    1. nova-compute创建虚拟机请求的消息将从相应的消息队列中获取。
    1. nova-compute通过rpc.call向nova-conductor请求获取虚拟机信息(Flavor)。
    1. nova-conductor从消息队列中获得nova-compute请求消息。
    1. nova-conductor查询虚拟机对应的信息。
    1. nova-conductor虚拟机对应的信息从数据库中获取。
    1. nova-conductor通过消息将虚拟机信息发送到消息队列。
    1. nova-compute从相应的信息队列中获取虚拟机信息。

第三阶段

    1. nova-compute通过keystone的RESTfull API拿到认证的token,并通过HTTP请求glance-api获取创建虚拟机所需的镜像。
    1. glance-api向keystone认证token是否有效,并返回验证结果。
    1. token验证通过,nova-compute获取虚拟机镜像信息(URL)。
    1. nova-compute通过keystone的RESTfull API获得认证k的token,并通过HTTP请求neutron-server获取创建虚拟机所需的网络信息。
    1. neutron-server向keystone认证token是否有效,并返回验证结果。
    1. token验证通过,nova-compute获取虚拟机网络信息。
    1. nova-compute通过keystone的RESTfull API拿到认证的token,并通过HTTP请求cinder-api获取创建虚拟机所需的持久存储信息。
    1. cinder-api向keystone认证token是否有效,并返回验证结果。
    1. token验证通过,nova-compute获取虚拟机持久存储信息。
    1. nova-compute根据instance创建虚拟机的信息调用配置的虚拟驱动。

https://www.cnblogs.com/Studywith/p/17069263.html

2. 部署

本教程使用的是Openstack Queens版本,其他版本也大致与之相同

Openstack版本

OpenStack版本发布时间及其组件
Austin2010.10Nova、Glance、Keystone、Horizon、Swift、Quantum
Bexar2011.02Nova、Glance、Keystone、Horizon、Swift、Quantum
Cactus2011.04Nova、Glance、Keystone、Horizon、Swift、Quantum
Diablo2011.09Nova、Glance、Keystone、Horizon、Swift、Quantum、Cinder
Essex2012.04Nova、Glance、Keystone、Horizon、Swift、Quantum、Cinder、OpenStack Dashboard、Ceilometer
Folsom2012.09Nova、Glance、Keystone、Horizon、Swift、Quantum、Cinder、OpenStack Dashboard、Ceilometer
Grizzly2013.04Nova、Glance、Keystone、Horizon、Swift、Quantum、Cinder、OpenStack Dashboard、Heat、Ceilometer
Havana2013.10Nova、Glance、Keystone、Horizon、Swift、Quantum、Cinder、OpenStack Dashboard、Heat、Ceilometer、Trove、Savanna
Icehouse2014.04Nova、Glance、Keystone、Horizon、Swift、Neutron、Cinder、OpenStack Dashboard、Heat、Ceilometer、Trove、Savanna、Manila
Juno2014.10Nova、Glance、Keystone、Horizon、Swift、Neutron、Cinder、OpenStack Dashboard、Heat、Ceilometer、Trove、Savanna、Manila、Ironic
Kilo2015.04Nova、Glance、Keystone、Horizon、Swift、Neutron、Cinder、OpenStack Dashboard、Heat、Ceilometer、Trove、Savanna、Manila、Ironic、Designate、Barbican
Liberty2015.10Nova、Glance、Keystone、Horizon、Swift、Neutron、Cinder、OpenStack Dashboard、Heat、Ceilometer、Trove、Savanna、Manila、Ironic、Designate、Barbican、Magnum、Murano
Mitaka2016.04Nova、Glance、Keystone、Horizon、Swift、Neutron、Cinder、OpenStack Dashboard、Heat、Ceilometer、Trove、Savanna、Manila、Ironic、Designate、Barbican、Magnum、Murano、Zaqar
Newton2016.10Nova、Glance、Keystone、Horizon、Swift、Neutron、Cinder、OpenStack Dashboard、Heat、Ceilometer、Trove、Savanna、Manila、Ironic、Designate、Barbican、Magnum、Murano、Zaqar、Congress、Searchlight
Ocata2017.02Nova、Glance、Keystone、Horizon、Swift、Neutron、Cinder、OpenStack Dashboard、Heat、Ceilometer、Trove、Savanna、Manila、Ironic、Designate、Barbican、Magnum、Murano、Zaqar、Congress、Searchlight、Freezer
Pike2017.08Nova、Glance、Keystone、Horizon、Swift、Neutron、Cinder、OpenStack Dashboard、Heat、Ceilometer、Trove、Savanna、Manila、Ironic、Designate、Barbican、Magnum、Murano、Zaqar、Congress、Searchlight、Freezer、Masakari
Queens2018.02Nova、Glance、Keystone、Horizon、Swift、Neutron、Cinder、OpenStack Dashboard、Heat、Ceilometer、Trove、Savanna、Manila、Ironic、Designate、Barbican、Magnum、Murano、Zaqar、Congress、Searchlight、Freezer、Masakari、Cyborg、Blazar
Rocky2018.08Nova、Glance、Keystone、Horizon、Swift、Neutron、Cinder、OpenStack Dashboard、Heat、Ceilometer、Trove、Savanna、Manila、Ironic、Designate、Barbican、Magnum、Murano、Zaqar、Congress、Searchlight、Freezer、Masakari、Cyborg、Blazar、Watcher
Stein2019.04Nova、Glance、Keystone、Horizon、Swift、Neutron、Cinder、OpenStack Dashboard、Heat、Ceilometer、Trove、Savanna、Manila、Ironic、Designate、Barbican、Magnum、Murano、Zaqar、Congress、Searchlight、Freezer、Masakari、Cyborg、Blazar、Watcher、Airship
Train2019.10Nova、Glance、Keystone、Horizon、Swift、Neutron、Cinder、OpenStack Dashboard、Heat、Ceilometer、Trove、Savanna、Manila、Ironic、Designate、Barbican、Magnum、Murano、Zaqar、Congress、Searchlight、Freezer、Masakari、Cyborg、Blazar、Watcher、Airship、Octavia、Karbor
Ussuri2020.05Nova、Glance、Keystone、Horizon、Swift、Neutron、Cinder、OpenStack Dashboard、Heat、Ceilometer、Trove、Savanna、Manila、Ironic、Designate、Barbican、Magnum、Murano、Zaqar、Congress、Searchlight、Freezer、Masakari、Cyborg、Blazar、Watcher、Airship、Octavia、Karbor、Dragonflow、Vitrage
Victoria2020.10Nova、Glance、Keystone、Horizon、Swift、Neutron、Cinder、OpenStack Dashboard、Heat、Ceilometer、Trove、Savanna、Manila、Ironic、Designate、Barbican、Magnum、Murano、Zaqar、Congress、Searchlight、Freezer、Masakari、Cyborg、Blazar、Watcher、Airship、Octavia、Karbor、Dragonflow、Vitrage、StarlingX
Wallaby2021.04Nova、Glance、Keystone、Horizon、Swift、Neutron、Cinder、OpenStack Dashboard、Heat、Ceilometer、Trove、Savanna、Manila、Ironic、Designate、Barbican、Magnum、Murano、Zaqar、Congress、Searchlight、Freezer、Masakari、Cyborg、Blazar、Watcher、Airship、Octavia、Karbor、Dragonflow、Vitrage、StarlingX、Xena
Yocto2021.10Nova、Glance、Keystone、Horizon、Swift、Neutron、Cinder、OpenStack Dashboard、Heat、Ceilometer、Trove、Savanna、Manila、Ironic、Designate、Barbican、Magnum、Murano、Zaqar、Congress、Searchlight、Freezer、Masakari、Cyborg、Blazar、Watcher、Airship、Octavia、Karbor、Dragonflow、Vitrage、StarlingX、Xena、Zun

2.1 服务器规划

D主机名角色系统信息IPPORT组件配置
1controller控制节点centos7192.168.71.2518022->22MariaDB、身份认证、镜像服务、网络服务、SQL数据库、消息队列
2compute01计算节点centos7192.168.71.2528122->22-

2.2 环境整备

1. 配置控制节点域名/计算节点解析

[root@node-251 tmp]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.71.251 node-251
192.168.71.252 node-252

2. 关闭控制节点/计算节点selinux和防火墙

[root@openstack ~]# vim /etc/sysconfig/selinux 
SELINUX=disabled
SELINUXTYPE=targeted

[root@openstack ~]# systemctl stop firewalld.service
[root@openstack ~]# systemctl disbale firewalld.service

3. 安装与配置控制节点/计算节点的时间同步服务

Chrony与NTP对比

[root@node-251 tmp]# yum install -y chrony
...
[root@node-251 tmp]# systemctl enable chronyd.service
[root@node-251 tmp]# systemctl start chronyd.service
[root@node-251 tmp]# timedatectl set-timezone Asia/Shanghai
[root@node-251 tmp]# date
Mon Jun  5 08:49:57 CST 2023

4. 在控制节点/计算节点执行命令验证时间同步服务

[root@node-251 tmp]# chronyc sources
210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^+ ntp8.flashdance.cx            2   6    37    45    +10ms[  +11ms] +/-  103ms
^- time.neu.edu.cn               1   6    17   110  -1169us[+1587us] +/- 1932us
^* stratum2-1.ntp.mow01.ru.>     2   6   253    37  -2841us[-2719us] +/-   57ms
^+ time.cloudflare.com           3   6    37    45  -3414us[-3167us] +/-   93ms
[root@node-251 tmp]# date
Mon Jun  5 08:51:48 CST 2023

5. 在控制节点/计算节点添加yum源

[root@node-251 openstack]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
...
2023-06-05 08:54:15 (358 KB/s) - ‘/etc/yum.repos.d/CentOS-Base.repo’ saved [2523/2523]

[root@node-251 openstack]# yum install -y centos-release-openstack-queens.noarch
...
Complete!

6. 在控制节点安装MySQL数据库服务并配置

[root@node-251 openstack]# yum install -y mariadb  mariadb-server MySQL-python
...

也可参考 MySQL

这里密码笔者设置为Admin@123

为了保证数据库服务的安全性,运行mysql_secure_installation脚本。特别需要说明的是,为数据库的root用户设置一个适当的密码,可以使用openssl rand -hex 10生成一个10位的密码(笔者这里跳过了)

7. 在控制节点安装RabbitMQ消息队列并配置

yum install -y rabbitmq-server
[root@node-251 ~]# systemctl enable rabbitmq-server.service
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.
[root@node-251 ~]# systemctl start rabbitmq-server.service
[root@node-251 ~]# rabbitmqctl add_user openstack 1735e32955b2ef18362e
Creating user "openstack"
[root@node-251 ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/"
[root@node-251 ~]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
  amqp_client
  cowlib
  cowboy
  rabbitmq_web_dispatch
  rabbitmq_management_agent
  rabbitmq_management

Applying plugin configuration to rabbit@node-251... started 6 plugins.
[root@node-251 ~]# systemctl restart rabbitmq-server.service

访问:http://192.168.71.251:15672,账号/密码:guest/guest
在这里插入图片描述

3. KeyStone

keystone的主要功能

  • 身份认证(Authentication):令牌的发放和校验
  • 用户授权(Authorization):授予用户在一个服务中所拥有权限
  • 用户管理(Account):管理用户账户
  • 服务目录(Service Catalog):提供可用服务的API端点

keystone相关概念

  • user:指使用openstack service的用户
  • Project(Tenant):可以理解为一个人或者服务所拥有的资源集合
  • Role:用户划分权限。通过给user指定role,使user获得role对应操作权限
  • Authentication:确定用户身份的过程
  • Token:是一个字符串表示,作为访问资源的令牌。Token包含了在指定范围和有效时间内,可以被访问的资源Credentials:用于确认用户身份的凭证,用户的用户名和密码,或者是用户名和API密钥,或者身份管理服务提供的认证令牌
  • Service:openstack service,即openstack中运行的组件服务,如nova、swif、glance、neutron、cinder等
  • Endpoint:一个可以通过网络来访问和定位某个openstack service的地址,通常是一个URL 小结下:因为组件点到点的交互是通过API来完成的,API是由Apache所承载的,Apache提供了一个URL,所以说API和API的对接,也可以认为是URL与URL的对接

认证流程
在这里插入图片描述

3.1 创建KeyStone数据库并授权

[root@node-251 ~]# openssl rand -hex 10
caf482c375233aa2e42b
[root@openstack ~]# mysql -u root -p
MariaDB [(none)]> CREATE DATABASE keystone;

use mysql;

CREATE USER keystone@'%' IDENTIFIED BY 'caf482c375233aa2e42b';

Grant all privileges on keystone.* to 'keystone'@'%';

flush privileges;
mysql> select user,host from user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| keystone         | %         |
| root             | %         |
| zsr2             | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
+------------------+-----------+
6 rows in set (0.00 sec)

3.2 yum安装KeyStone和Memcached

[root@openstack ~]# yum install -y openstack-keystone python-openstackclient httpd mod_wsgi memcached python-memcached

Memcached是一款开源、高性能、分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序。它是一个基于内存的“键值对”存储,用于存储数据库调用、API调用或页面引用结果的直接数据,如字符串、对象等。
Memcached是一款开发工具,它既不是一个代码加速器,也不是数据库中间件。其设计哲学思想主要反映在如下方面:

  • 简单key/value存储:服务器不关心数据本身的意义及结构,只要是可序列化数据即可。存储项由“键、过期时间、可选的标志及数据”四个部分组成;
  • 功能的实现一半依赖于客户端,一半基于服务器端:客户负责发送存储项至服务器端、从服务端获取数据以及无法连接至服务器时采用相>- 应的动作;服务端负责接收、存储数据,并负责数据项的超时过期;
  • 各服务器间彼此无视:不在服务器间进行数据同步;
  • O(1)的执行效率;
  • 清理超期数据:默认情况下,Memcached是一个LRU缓存,同时,它按事先预订的时长清理超期数据;但事实上,memcached不会删除任何已缓存数据,只是在其过期之后不再为客户所见;而且,memcached也不会真正按期限清理缓存,而仅是当get命令到达时检查其时长。

LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰

如果出现包兼容问题,例如

Error: Package: python2-qpid-proton-0.22.0-1.el7.x86_64 (centos-openstack-queens)
Requires: qpid-proton-c(x86-64) = 0.22.0-1.el7
Available: qpid-proton-c-0.14.0-2.el7.x86_64 (extras)
qpid-proton-c(x86-64) = 0.14.0-2.el7
Available: qpid-proton-c-0.17.0-4.el7.x86_64 (centos-openstack-queens)
qpid-proton-c(x86-64) = 0.17.0-4.el7
Available: qpid-proton-c-0.22.0-1.el7.x86_64 (centos-openstack-queens)
qpid-proton-c(x86-64) = 0.22.0-1.el7
Installing: qpid-proton-c-0.35.0-1.el7.x86_64 (epel)
qpid-proton-c(x86-64) = 0.35.0-1.el7
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

包冲突导致的兼容错误,单独选定需要的版本进行安装即可

yum install -y python2-qpid-proton-0.22.0-1.el7.x86_64

版本兼容,安装后重新安装报错上一步代码即可

3.3 启动Memcached并设置开机自启

systemctl enable memcached.service
systemctl start memcached.service

3.4 生成一个admin_token

[root@node-251 ~]# openssl rand -hex 10
40f04375888cf2554840

3.5 配置keystone.conf文件

[root@node-251 ~]# vim /etc/keystone/keystone.conf
[DEFAULT]    #定义初始管理令牌的值
admin_token = 40f04375888cf2554840

[database]    #配置数据库访问
connection = mysql+pymysql://keystone:caf482c375233aa2e42b@127.0.0.1/keystone

[revoke]    #配置回滚驱动
driver = sql

[token]    #配置Fernet UUID令牌的提供者
provider = fernet    

3.6 初始化身份认证服务的数据库

[root@node-251 ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone

3.7 初始化Fernet keys

[root@node-251 ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

3.8 配置Apache HTTP服务器

openstack的各个组件,包括API都是用python写的,但访问的是apache,apache会把请求转发给python去处理,这些包只安装在controler节点

[root@openstack ~]# vim /etc/httpd/conf/httpd.conf
ServerName node-251

[root@openstack ~]# vim /etc/httpd/conf.d/wsgi-keystone.conf
Listen 5000
Listen 35357

<VirtualHost *:5000>
    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-public
    WSGIScriptAlias / /usr/bin/keystone-wsgi-public
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined

    <Directory /usr/bin>
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:35357>
    WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-admin
    WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined

    <Directory /usr/bin>
        Require all granted
    </Directory>
</VirtualHost>

3.9 启动Apache HTTP并设置开机自启

systemctl enable httpd.service
systemctl start httpd.service

3.10 设置OpenStack环境变量

export OS_TOKEN=40f04375888cf2554840
export OS_URL=http://192.168.71.251:35357/v3
export OS_IDENTITY_API_VERSION=3

域名解析里面加上openstack.if010.com

[root@node-251 ~]# cat /etc/hosts
...
192.168.71.251 openstack.if010.com

3.11 创建服务实体和身份认证服务

[root@node-251 ~]# openstack service create --name keystone --description "OpenStack Identity" identity
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Identity               |
| enabled     | True                             |
| id          | 922a955e70904b409e0cebff36f5f764 |
| name        | keystone                         |
| type        | identity                         |
+-------------+----------------------------------+

3.12 创建认证服务的 API 端点

[root@node-251 ~]# openstack endpoint create --region RegionOne identity public http://openstack.if010.com:5000/v3
+--------------+------------------------------------+
| Field        | Value                              |
+--------------+------------------------------------+
| enabled      | True                               |
| id           | 5909adff4f7b462686c57c0080825e8e   |
| interface    | public                             |
| region       | RegionOne                          |
| region_id    | RegionOne                          |
| service_id   | 922a955e70904b409e0cebff36f5f764   |
| service_name | keystone                           |
| service_type | identity                           |
| url          | http://openstack.if010.com:5000/v3 |
+--------------+------------------------------------+
[root@node-251 ~]# openstack endpoint create --region RegionOne identity internal http://openstack.if010.com:5000/v3
+--------------+------------------------------------+
| Field        | Value                              |
+--------------+------------------------------------+
| enabled      | True                               |
| id           | 1fdfdd82539c4dbf982c5916b67850ed   |
| interface    | internal                           |
| region       | RegionOne                          |
| region_id    | RegionOne                          |
| service_id   | 922a955e70904b409e0cebff36f5f764   |
| service_name | keystone                           |
| service_type | identity                           |
| url          | http://openstack.if010.com:5000/v3 |
+--------------+------------------------------------+
[root@node-251 ~]# openstack endpoint create --region RegionOne identity admin http://openstack.if010.com:35357/v3
+--------------+-------------------------------------+
| Field        | Value                               |
+--------------+-------------------------------------+
| enabled      | True                                |
| id           | 8c60ca51800e444884e031346e2db11b    |
| interface    | admin                               |
| region       | RegionOne                           |
| region_id    | RegionOne                           |
| service_id   | 922a955e70904b409e0cebff36f5f764    |
| service_name | keystone                            |
| service_type | identity                            |
| url          | http://openstack.if010.com:35357/v3 |
+--------------+-------------------------------------+

3.13 创建default域

[root@node-251 ~]# openstack domain create --description "Default Domain" default
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Default Domain                   |
| enabled     | True                             |
| id          | f4e5187c3aef4288b6b2d97c292a69a2 |
| name        | default                          |
| tags        | []                               |
+-------------+----------------------------------+

3.14 创建admin项目

[root@node-251 ~]# openstack project create --domain default --description "Admin Project" admin
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Admin Project                    |
| domain_id   | f4e5187c3aef4288b6b2d97c292a69a2 |
| enabled     | True                             |
| id          | 2aaf4155b00749b0a333a039c17c131c |
| is_domain   | False                            |
| name        | admin                            |
| parent_id   | f4e5187c3aef4288b6b2d97c292a69a2 |
| tags        | []                               |
+-------------+----------------------------------+

3.15 创建admin用户并设置密码

[root@node-251 ~]# openstack user create --domain default --password-prompt admin
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | f4e5187c3aef4288b6b2d97c292a69a2 |
| enabled             | True                             |
| id                  | 063ef7b979334fa5a86420952a141d32 |
| name                | admin                            |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

密码:123456

3.16 创建admin角色

[root@node-251 ~]# openstack role create admin
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | 25045c151e6e4642bd5b9c61ec56ac6f |
| name      | admin                            |
+-----------+----------------------------------+

3.17 添加admin角色到admin项目和用户上

[root@node-251 ~]# openstack role add --project admin --user admin admin

3.18 创建service项目

[root@node-251 ~]# openstack project create --domain default --description "Service Project" service
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | f4e5187c3aef4288b6b2d97c292a69a2 |
| enabled     | True                             |
| id          | a541e3766c284cb9b1a3ee77467309d4 |
| is_domain   | False                            |
| name        | service                          |
| parent_id   | f4e5187c3aef4288b6b2d97c292a69a2 |
| tags        | []                               |
+-------------+----------------------------------+

3.19 创建demo项目

[root@node-251 ~]# openstack project create --domain default --description "Demo Project" demo
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Demo Project                     |
| domain_id   | f4e5187c3aef4288b6b2d97c292a69a2 |
| enabled     | True                             |
| id          | 97ecef33235f473ba5f252af76bb89bb |
| is_domain   | False                            |
| name        | demo                             |
| parent_id   | f4e5187c3aef4288b6b2d97c292a69a2 |
| tags        | []                               |
+-------------+----------------------------------+

3.20 创建demo用户并设置密码

[root@node-251 ~]# openstack user create --domain default --password-prompt demo
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | f4e5187c3aef4288b6b2d97c292a69a2 |
| enabled             | True                             |
| id                  | 93913e9669f34ea8a5db74256da105ec |
| name                | demo                             |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

密码:123456

3.21 创建user角色

[root@node-251 ~]# openstack role create user
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | f3ce47e14e0141daada5c405b0db68d5 |
| name      | user                             |
+-----------+----------------------------------+

3.22 添加user角色到demo项目和用户

[root@node-251 ~]# openstack role add --project demo --user demo user

3.23 验证操作

[root@node-251 ~]# unset OS_TOKEN OS_URL
[root@node-251 ~]# openstack --os-auth-url http://openstack.if010.com:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue
Password:
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                                                                                   |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires    | 2023-06-05T11:04:52+0000                                                                                                                                                                |
| id         | gAAAAABkfbNEhCAyAi8qLO7DejIkLnJ3-3nK7NU-HCVwRrDniTGWtrRE0sw40bgGZkeD1KIB1BaVDwJPes2rLhb4ym_LkbnaWWKWGIrA-YJ9-ywUaN6E-X9ICQ3-FdpeVyx6GfP8KlB93oYZ-dtmEuLIFEV3JULnw6tBFnOIrMDEQKp0vD-mmkA |
| project_id | 2aaf4155b00749b0a333a039c17c131c                                                                                                                                                        |
| user_id    | 063ef7b979334fa5a86420952a141d32                                                                                                                                                        |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
[root@node-251 ~]# openstack --os-auth-url http://node-251:5000/v3   --os-project-domain-name default --os-user-domain-name default   --os-project-name demo --os-username demo token issue
Password:
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                                                                                   |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires    | 2023-06-05T11:05:50+0000                                                                                                                                                                |
| id         | gAAAAABkfbN-qCLdLdphBmQeZS1Laqf9K4lKW8jLBPB2kt9OjEGuPBZ72FcfN0oK4FbJ1hQyAe7297O4W3Sof_QHGONJby4vSeHSmfMM1dR4tOHDtEwfKtQRJfoaXSV2f9OyPDycaW4_NLrlHMoCvrjXF2MXO-CUrYOHNnyDmHGQ_LvBHP_TxkE |
| project_id | 97ecef33235f473ba5f252af76bb89bb                                                                                                                                                        |
| user_id    | 93913e9669f34ea8a5db74256da105ec                                                                                                                                                        |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

3.24 创建 OpenStack 客户端环境脚本

[root@node-251 openstack]# vim admin-openrc
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=123456
export OS_AUTH_URL=http://openstack.if010.com:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

[root@node-251 openstack]# vim demo-openrc
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=123456
export OS_AUTH_URL=http://openstack.if010.com:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

[root@node-251 openstack]# source admin-openrc
[root@node-251 openstack]# openstack token issue
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                                                                                   |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires    | 2023-06-06T02:09:25+0000                                                                                                                                                                |
| id         | gAAAAABkfodFFSQac25fPoUWNxyjSrJCS1FvonrWqe2-q_LL2ZV2A1TpwqPVAJuFO3pOpRIVCWxO4uzTCtVsLSdhUBnN6iOd_ATHy0nDycwYUiIcmDPxPUPz_s1_HpmRTh2hMd30dCCQKhcnHWwyBmyW8dqb5BYoQMx0Xw3P1xxAKC4YAOSmKWA |
| project_id | 2aaf4155b00749b0a333a039c17c131c                                                                                                                                                        |
| user_id    | 063ef7b979334fa5a86420952a141d32                                                                                                                                                        |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

3.25 常用命令

创建一个项目(project),创建在指定的domain(域)中,指定描述信息,project名称为service(可使用openstack domain list 查询)

openstack project create --domain default --description "Service Project" service 

创建角色(可使用openstack role list查看)

openstack role create user

查看openstack 角色列表

[root@node-251 openstack]# openstack role list
+----------------------------------+-------+
| ID                               | Name  |
+----------------------------------+-------+
| 25045c151e6e4642bd5b9c61ec56ac6f | admin |
| f3ce47e14e0141daada5c405b0db68d5 | user  |
+----------------------------------+-------+

查看是否可以不指定密码就可以获取到token信息(验证认证服务)

openstack token issue

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/615243.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI文本生成视频,根据文字就能一键生成视频的模型

const name "AI生成视频";console.log(name); 可以从给定的文字内容就能生成短视频&#xff0c;基于文本到图像生成技术&#xff0c;该技术旨在实现文本到视频的生成&#xff0c;可以通过文本生成独一无二的视频&#xff0c;将无限的想象力带入生活。 我们来看看文…

XShell 7 中文版一键安装激活教程

Xshell 7是一款功能强大的终端模拟器&#xff0c;支持SSh2&#xff0c;SSh3&#xff0c;SFTP&#xff0c;TELNET&#xff0c;RLOGIN和SERIAL。通过提供业界先进的性能&#xff0c;Xshell包含了其他SSH客户端无法发现的功能和优势。 Xshell是一款功能强大且安全的终端模拟器&…

12 【nextTick 过渡与动画】

1.nextTick 这是一个生命周期钩子 语法&#xff1a;this.$nextTick(回调函数)作用&#xff1a;在下一次 DOM 更新结束后执行其指定的回调。什么时候用&#xff1a;当改变数据后&#xff0c;要基于更新后的新DOM进行某些操作时&#xff0c;要在nextTick所指定的回调函数中执行…

工厂智慧能源-AcrelCloud-5000智慧能源综合解决方案

功能&#xff1a; AcrelCloud-5000能耗管理云平台采用泛在物联、云计算、大数据、移动通讯、智能传感等技术手段可为用户提供能源数据、统计分析、能效分析、用能预警、设备管理等服务&#xff0c;平台可以广泛应用于多种领域。 ​ 应用场所&#xff1a; 云平台结构&#xf…

xshell是什么软件,xshells7使用教程安装及连接linux的使用方法

Xshell是一款功能强大的终端模拟器&#xff0c;用户可以通过Xshell来查看编辑各种服务器上的文件和执行各类脚本&#xff0c;其基于SSH协议进行登录&#xff0c;安全性非常高&#xff0c;被广泛应用于企业的日常开发运维工作中。它支持SSH1, SSH2, 以及Microsoft Windows 平台的…

阿里java一面凉经

目录 1.Java中int跟integer的区别2.integer在Java中有个缓存的概念&#xff0c;有了解吗3.跟equals的区别&#xff0c;equals的重写怎么进行比较4.在实际开发中为什么不能用浮点类型来存金钱的数据&#xff0c;浮点类不精确的本质是什么5.构造器能被重写吗6.反射相关&#xff1…

Excel VBA代码密码破解

1.查看VBA代码&#xff0c;有密码 2.破解密码&#xff1a; 2.1&#xff1a;修改文件名后缀&#xff0c;修改为压缩包格式 2.2&#xff1a;打开压缩包文件&#xff0c;找到文件&#xff1a;vbaProject.bin 2.3&#xff1a;把这个文件从压缩包中拖出来 2.4&#xff1a;打开.bi…

Leetcode154. 寻找旋转排序数组中的最小值 II

Every day a Leetcode 题目来源&#xff1a;154. 寻找旋转排序数组中的最小值 II 解法1&#xff1a;二分查找 一个包含重复元素的升序数组在经过旋转之后&#xff0c;可以得到下面可视化的折线图&#xff1a; 其中横轴表示数组元素的下标&#xff0c;纵轴表示数组元素的值。…

TDengine3.0与2.0版本的差异

TDengine3.0与2.0版本的差异 一、TDEnigne3.0相关环境构建及使用二、3.0与2.0的版本差异2.1 mnode及集群创建2.2 创建数据库2.3 数据库和超级表的详细查询2.4 查看超级表下有多少子表2.5 RESTful 不兼容2.6 无法修改副本数2.7 消失的时间戳 一、TDEnigne3.0相关环境构建及使用 …

ArgoCD(一): 架构及其模型

1.1 ArgoCD 概览 Argo项目2017年由Applatix公司成立&#xff0c;2018年被Intuit收购&#xff0c;之后&#xff0c;BlackRock为Argo项目贡献了Argo Events这一项目&#xff1b; Argo所有组件都通过kubernetes CRD实现 Argo生态目前主要由四个子项目组成 Argo Workflows &#xf…

Godot引擎 4.0 文档 - 手册 - 最佳实践

本文为Google Translate英译中结果&#xff0c;DrGraph在此基础上加了一些校正。英文原版页面&#xff1a;Best practices — Godot Engine (stable) documentation in English 介绍 本系列是一系列最佳实践&#xff0c;可帮助您高效地使用 Godot。 Godot 在构建项目代码库并…

图漾相机—windows- C# SDK(官网下载编译)

文章目录 一、 安装依赖&#xff1a;二. 下载swig和SDK&#xff1a;swig下载连接&#xff1a;[https://www.swig.org/](https://www.swig.org/)下载C# SDK下载 Windows Camport3 SDK 三、配置C#和swig环境变量编译前&#xff0c;请先&#xff1a;安装 Python。 安装 NumPy 和 O…

华为 HCU 硬改教程 真实参数,华为改串号 改机教程 登录异常 设备异常 环境异常Qv

华为 HCU 硬改教程 真实参数&#xff0c;华为改串号 改机教程 登录异常 设备异常 环境异常Qv HCU基础版硬改教程 须知&#xff1a;使用需要关闭所有杀毒软件 华为手机支持这些型号硬改 ------------------------------操作前准备---------------------------------- 确保手机能…

05SpringCloud 分布式事务seata

分布式事务seata 1.前言 务必要知道&#xff0c;分布式事务不可能100%完美解决问题&#xff01;只能尽量提高成功概率&#xff01;让这个成功概率尽量接近99.999%&#xff0c;为了达到这个目的&#xff0c;甚至加入人工。 2.场景 有如下业务场景&#xff1a;当我们添加订单…

“AI Earth”人工智能创新挑战赛:助力精准气象和海洋预测Baseline[2]:数据探索性分析(温度风场可视化)、CNN+LSTM模型建模

【机器学习入门与实践】入门必看系列,含数据挖掘项目实战:模型融合、特征优化、特征降维、探索性分析等,实战带你掌握机器学习数据挖掘 专栏详细介绍:【机器学习入门与实践】合集入门必看系列,含数据挖掘项目实战:数据融合、特征优化、特征降维、探索性分析等,实战带你掌…

vue3-实战-05-管理后台顶部tabbar开发-全局守卫

目录 1-顶部tabbar组件静态搭建与拆分 2-菜单折叠效果 3-顶部面包屑动态展示 4-刷新和全屏 4.1-点击刷新操作 4.2-全屏 4.3-退出登录 5-路由鉴权 1-顶部tabbar组件静态搭建与拆分 分析一下&#xff0c;顶部分为左右两侧&#xff0c;左侧是面包屑&#xff0c;右边是 刷新…

物联网行业的发展的趋势、现状与挑战

随着物联网技术的不断发展&#xff0c;越来越多的行业正在积极拥抱物联网&#xff0c;进行物联网开发。在这些行业中&#xff0c;有大量的产品和服务都在使用物联网技术。事实上&#xff0c;目前有超过1000亿个设备在运行着联网设备。全球智能传感器市场预计将从2021年的272亿美…

Codeforces Round 877 div2 C No Prime Differences

目录 一、题目 二、题目分析 三、 一、题目 传送门 C. No Prime Differences time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given integers n and m. Fill an n by m grid with the…

分布式理论 - CAP

tip: 作为程序员一定学习编程之道&#xff0c;一定要对代码的编写有追求&#xff0c;不能实现就完事了。我们应该让自己写的代码更加优雅&#xff0c;即使这会费时费力。 文章目录 一、简介深入理解三、CAP的应用应用 一、简介 CAP理论是分布式系统中最重要的理论之一&#xf…

windows编译CTK

文章目录 windows编译CTK环境准备使用cmake-gui编译CTK测试VTK windows编译CTK 环境准备 CTK源码 &#xff1a;https://github.com/commontk/CTK CTKData 源码&#xff1a;https://github.com/commontk/CTKData 最新版本的不用下载CTKData 相关的下载会在编译的时候去下载&…