OpenStack部署(一)

news/2024/12/28 0:21:27/

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_clientcowlibcowboyrabbitmq_web_dispatchrabbitmq_management_agentrabbitmq_managementApplying 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-publicWSGIScriptAlias / /usr/bin/keystone-wsgi-publicWSGIApplicationGroup %{GLOBAL}WSGIPassAuthorization OnErrorLogFormat "%{cu}t %M"ErrorLog /var/log/httpd/keystone-error.logCustomLog /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-adminWSGIScriptAlias / /usr/bin/keystone-wsgi-adminWSGIApplicationGroup %{GLOBAL}WSGIPassAuthorization OnErrorLogFormat "%{cu}t %M"ErrorLog /var/log/httpd/keystone-error.logCustomLog /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.ppmy.cn/news/238505.html

相关文章

代码乱码问题

ide编码设置 vs studio默认编码使用unicode&#xff0c;qt creator编辑器代码在vs中不识别错误 页面>高级保存选项中设置&#xff0c;修改代码为unicode即可 vscode默认utf8&#xff0c;f1 change file encoding&#xff0c;切换代码编码方式 json json默认是utf8的编码…

C++ Primer Plus 第三章笔记

目录 1. 简单变量 1.1 变量名 1.2 整型 1.3 整型short、int、long和long long 1.4 变量初始化问题 1.5 无符号类型 1.6 整型字面值 1.7 char类型&#xff1a;字符和小整数 1.8 Bool类型 2. const限定符 3. 浮点数 3.1 为什么叫浮点数&#xff1f; 3.2 浮点数类型 …

安卓车机方案评述

转自&#xff1a;http://blog.sina.com.cn/s/blog_66ed3e0e0102uxgr.html 第一部分 安卓车机和WINCE车机的区别 1、 硬件要求不一样 Android 操作系统对CPU的要求比较高&#xff0c;已经从A8过渡到A9 &#xff0c;单核向四核发展 芯片 主频 内存 Android 至少Cortex A8 …

国内车联网行业 2015年发展趋势

本文全文转载自&#xff1a;http://forum.eet-cn.com/BLOG_ARTICLE_21510.HTM?click_from8800121758,9950093147,2015-01-07,EECOL,FORUM_ALERT&utm_sourceForum_Alert&utm_mediumNewsletter&utm_campaignGroup2 如有需要&#xff0c;请前往深度阅读。 ----------…

【车联网】车联网产业发展报告(2019)

5G智联车 目 录 一. 产业定义范畴 二. 产业政策分析 三. 产业链全景图 四. 价值链及创新 五. 产业地图布局 六. 行业龙头动向 七. 市场规模预测 八. 研判与建议 九. 资本市场动向 十. 三十强潜力企业 一、产业定义或范畴 车联网概念引申于物联网&#xff08;Internet of Things…

2019车联网产业发展报告

【转自】智车科技 1月30日 车联网概念引申于物联网&#xff08;Internet of Things&#xff09;&#xff0c;根据行业背景不同&#xff0c;对车联网的定义也不尽相同。传统的车联网定义是指装载在车辆上的电子标签通过无线射频等识别技术&#xff0c;实现在信息网络平台上对所有…

拿下东风!从家居到汽车,DuerOS为中国AI探索出一种智能新生态

今天&#xff08;4月23日&#xff09;&#xff0c;百度DuerOS和东风风神、博泰联合发布了AI车机系统WindLink3.0&#xff0c;可以为用户提供各种面向汽车场景的智能交互功能和服务。现场&#xff0c;东风宣布WindLink3.0将在东风风神即将上市的下一款全新产品上全系标配&#x…

安卓导航车机root方法_飞歌Xenon2互联网音乐车机:震撼发“声”,再定义黄金音质...

从G8到X1,再到X2,在车载导航黄金音质的研发上,Flyaudio飞歌一步一步创造经典、超越经典,如今重构经典! 作为行车途中两大头部功能——导航能力和音乐播放,Flyaudio飞歌再度带来全新一代音乐车机,大幅度提升两大优质功能—— 从全球四大卫星导航系统,到独创飞歌『音效PR…