OpenStack部署(一)

在这里插入图片描述

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
  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值