一、构建实验:IdentityService(keystone)在controller节点安装和配置认证服务(实验专题)
### --- (controller节点)keystone部署:基础环境配置环境
~~~     yum源更新完成之后,yum官方的配置文件会重新覆盖在yum.repos.d目录下,
~~~     再次重新放在bak目录下[root@controller ~]# mv /etc/yum.repos.d/CentOS-* /etc/yum.repos.d/back/
[root@controller ~]# yum clean all

### --- 为controller节点安装数据库
~~~     安装mariadb软件包[root@controller ~]# yum install -y mariadb mariadb-server MySQL-python
Installed:MySQL-python.x86_64 0:1.2.3-11.el7                          mariadb.x86_64 1:5.5.37-1.el7_0                          mariadb-server.x86_64 1:5.5.37-1.el7_0
Dependency Installed:perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7      perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7      perl-DBD-MySQL.x86_64 0:4.023-5.el7      perl-DBI.x86_64 0:1.627-4.el7         perl-Data-Dumper.x86_64 0:2.145-3.el7             perl-IO-Compress.noarch 0:2.061-2.el7            perl-Net-Daemon.noarch 0:0.48-5.el7      perl-PlRPC.noarch 0:0.2020-14.el7
Complete!

~~~     编辑/etc/my.cnf软件,设置绑定IP,默认数据库引擎及默认字符集为UTF-8[root@controller ~]# vim /etc/my.cnf
[mysqld]
bind-address = 192.168.222.5
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8

~~~     启动数据库并设置为开机自启动[root@controller ~]# systemctl start mariadb.service
[root@controller ~]# systemctl enable mariadb.service

~~~     初始化数据库脚本[root@controller ~]# mysql_secure_installation
Enter current password for root (enter for none):       // 直接回车
Set root password? [Y/n] y                              // 是否设置root密码
New password:                                           // 123456
Re-enter new password:                                  // 123456
Remove anonymous users? [Y/n] y                         // 是否要移除匿名用户
Disallow root login remotely? [Y/n] y                   // 是否禁止远程登录,尽运行本地登录
Remove test database and access to it? [Y/n] y          // 是否移除测试数据库
Reload privilege tables now? [Y/n] y                    // 是否刷新权限

[root@controller ~]# mysql -u root -p
Enter password: 123456
MariaDB [(none)]> exit

### --- 安装Messaing Server服务
~~~     功能:协调操作和状态信息服务
~~~     常用的消息代理软件RabbitMQ:openstack官方推荐使用QpidZeroMQ

~~~     在controller节点安装RabbitMQ
~~~     安装RabbitMQ软件包[root@controller ~]#  yum install -y rabbitmq-server

~~~     启动服务并设置为开机自启动
[root@controller ~]# systemctl enable rabbitmq-server
[root@controller ~]# systemctl start rabbitmq-server~~~     rabbitmq默认用户名和密码是guest,可以通过下列命令修改
~~~     使用默认密码即可,若想修改可以修改下,此环境不修改
[root@controller ~]#  rabbitmqctl change_password guest new_password

### --- 配置时间同步服务器[root@controller ~]# yum install -y ntp
[root@compute ~]# vim /etc/ntp.conf
restrict 192.168.222.0 mask 255.255.255.0 nomodify notrap
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.127.1.0
fudge  127.127.1.0 stratum 10
[root@controller ~]# systemctl start ntpd.service
[root@controller ~]# systemctl enable ntpd.service
[root@controller ~]# ln -s '/usr/lib/systemd/system/ntpd.service' '/etc/systemd/system/multi-user.target.wants/ntpd.service'

### --- DNS解析添加,测试环境推荐使用hosts文件 [root@controller ~]# vim /etc/hosts
192.168.222.5   controller.nice.com
192.168.222.6   network.nice.com
192.168.222.10  compute1.nice.com
192.168.222.20  block1.nice.com

一、配置先决条件
### --- 创建认证服务数据库
~~~     登录MySQL数据库
[root@controller ~]# mysql -u root -p~~~     创建keystone数据库
MariaDB [(none)]> CREATE DATABASE keystone;
~~~     创建keystone数据库用户,使其可以对keystone数据库有完全控制权限
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.*TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.*TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';

### --- 生成一个随机值作为管理令牌在初始配置
~~~     作为管理员的令牌[root@controller ~]# openssl rand -hex 10:
f387c7cfa0ba649f7b3a

二、安装和配置认证组件
### --- 安装软件包[root@controller ~]# yum install openstack-keystone python-keystoneclient

### --- 编辑/etc/keystone/keyston.conf文件并作下列修改:
~~~     修改[DEFAULT]小节,定义初始管理令牌[root@controller ~]# vim /etc/keystone/keystone.conf
[DEFAULT]
......
admin_token=f387c7cfa0ba649f7b3a                # 管理员的token令牌环;
# 修改[database]小节,配置数据库访问
[database]
......
connection=mysql://keystone:KEYSTONE_DBPASS@controller.nice.com/keystone
# mysql数据库;用户是keystone密码是KEYSTONE_DBPASS连接的主机是controller.nice.com连接的库是keystone
# 修改[token]小节,配置UUID提供者和SQL驱动
[token]
......
provider=keystone.token.providers.uuid.Provider
driver = keystone.token.persistence.backends.sql.Token
# (可选)开启详细日志,协助故障排除
[DEFAULT]
......
verbose=True

### --- 常见通用证书的秘钥,并限制相关文件的访问权限[root@controller ~]# keystone-manage pki_setup --keystone-user keystone --keystone-group keystone
[root@controller ~]# chown -R keystone:keystone /var/log/keystone   // 给日志存放目录设置keystone用户权限
[root@controller ~]# chown -R keystone:keystone /etc/keystone/ssl   // 给秘钥存放目录设置keystone用户权限
[root@controller ~]# chmod -R o-rwx /etc/keystone/ssl               // 秘钥存放路径把其它的权限全部减去,这样秘钥会更加安全

### --- 初始化keystone数据库
~~~     还原keystone的数据库[root@controller ~]# su -s  /bin/sh -c "keystone-manage  db_sync" keystone

~~~     use到keystone的数据库[root@controller ~]# mysql -uroot -p
Enter password:
MariaDB [(none)]> USE keystone
MariaDB [keystone]> show tables;
+-----------------------+
| Tables_in_keystone    |
+-----------------------+
| assignment            |
| credential            |
| domain                |
| endpoint              |
| group                 |
| id_mapping            |
| migrate_version       |
| policy                |
| project               |
| region                |
| revocation_event      |
| role                  |
| service               |
| token                 |
| trust                 |
| trust_role            |
| user                  |
| user_group_membership |
+-----------------------+
18 rows in set (0.00 sec)

三、完成安装
### --- 完成安装
~~~     启动identity服务并设置开机启动[root@controller ~]# systemctl enable openstack-keystone.service // 设置开机自启keystone服务
[root@controller ~]# systemctl start openstack-keystone.service  // 开启keystone服务

~~~     默认情况下,服务器会无限存储到期的令牌,在资源有限的情况下严重影响服务器性能,
~~~     建议用计划任务,每小时删除过期的令牌[root@controller ~]# (crontab -l -u keystone 2>&1 | grep -q token_flush) || echo '@hourly /usr/bin/keystone-manage token_flush >/var/log/keystone/keystone-tokenflush.log 2>&1' >> /var/spool/cron/keystone
[root@controller ~]# vim /var/spool/cron/keystone                // 查看文件配置是否OK
@hourly /usr/bin/keystone-manage token_flush >/var/log/keystone/keystone-tokenflush.log 2>&1

四、创建tenants(租户)、(users)用户和(roles)角色
### --- 配置先决条件
~~~     配置管理员令牌
~~~     /export OS_SERVICE_TOKEN=刚才生成的字符串
[root@controller ~]# export OS_SERVICE_TOKEN=f387c7cfa0ba649f7b3a ~~~     配置端点
[root@controller ~]# export OS_SERVICE_ENDPOINT=http://controller.nice.com:35357/v2.0

### --- 创建用于管理的租户,用户和角色
### --- 创建租户,用户和角色
~~~     创建admin租户[root@controller ~]# keystone tenant-create --name  admin --description "Admin Tenant"
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description |           Admin Tenant           |
|   enabled   |               True               |
|      id     | 7bce6e7e6d724ad188e4f70ad9d51e17 |
|     name    |              admin               |
+-------------+----------------------------------+

~~~     创建admin用户[root@controller ~]# keystone user-create --name admin --pass ADMIN_PASS  --email EMALL_ADDRESS
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
|  email   |          EMALL_ADDRESS           |
| enabled  |               True               |
|    id    | ecc6ddd5697541388c24741d4634eff6 |
|   name   |              admin               |
| username |              admin               |
+----------+----------------------------------+

~~~     创建admin角色[root@controller ~]# keystone role-create --name admin
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
|    id    | 8b42b1db8489443b848b88a3d30d7696 |
|   name   |              admin               |
+----------+----------------------------------+

~~~     添加admin租户和用户到admin角色
[root@controller ~]# keystone user-role-add --tenant admin --user admin --role admin~~~     创建用于dashboard访问的“_member_"角色
~~~     dashboard是以BS结构访问它的主题程序,
~~~     所以在这里使用member去绑定的话就可以访问它的仪表盘套件
[root@controller ~]# keystone role-create --name _member_
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
|    id    | 3c686557c49945c694219ca8f1bc9db2 |
|   name   |             _member_             |
+----------+----------------------------------+

~~~     添加admin租户和用户到_member_角色
~~~     它俩就都可以去访问仪表盘套件[root@controller ~]# keystone user-role-add --tenant admin --user admin --role _member_

### --- 创建一个用于演示的demo租户和用户
~~~     创建demo租户[root@controller ~]# keystone tenant-create --name demo --description "Demo Tenant"
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description |           Demo Tenant            |
|   enabled   |               True               |
|      id     | 5f158b7cfb7448d18921158f9c92918f |
|     name    |               demo               |
+-------------+----------------------------------+

~~~     创建demo用户[root@controller ~]# keystone user-create --name demo --pass DEMO_PASS --email EMALL_ADDRESS
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
|  email   |          EMALL_ADDRESS           |
| enabled  |               True               |
|    id    | a98a737625214eadb3e19a80bc6f4011 |
|   name   |               demo               |
| username |               demo               |
+----------+----------------------------------+

~~~     添加demo租户和用户到_member_角色
~~~     他也可以访问仪表盘套件[root@controller ~]# keystone user-role-add --tenant demo --user demo --role _member_

### --- OpenStack服务也需要一个租户,用户和角色和其他服务进行交互,
~~~     因此我们创建一个service的租户,任何一个OpenStack服务都要和它关联[root@controller ~]# keystone tenant-create --name service --description "Service Tenant"
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description |          Service Tenant          |
|   enabled   |               True               |
|      id     | 48bee3be288e477889d404a41a0b6f33 |
|     name    |             service              |
+-------------+----------------------------------+

五、创建服务实体(keystone能够提供的服务的名称)和API端点(提供该服务的服务器)
### --- 创建服务实体(keystone能够提供的服务的名称)和API端点(提供该服务的服务器)
### --- 在openstack环境中,identity服务管理一个服务目录,
~~~     并使用这个目录在openstack环境中定位其他服务
~~~     为identity服务创建一个服务实体
~~~     名称为:keystone名称可以随便起的;只要--type为identity就可以代表这是一个认证服务。
~~~     --description描述信息为 "Openstack Identity"[root@controller ~]# keystone service-create --name keystone --type identity --description "Openstack Identity"
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description |        Openstack Identity        |
|   enabled   |               True               |
|      id     | 9349d2072a3b4e739eeaddd313790b89 |
|     name    |             keystone             |
|     type    |             identity             |
+-------------+----------------------------------+

### --- OpenStack环境中,identity服务管理目录以及与服务相关API断点,
~~~     服务使用这个目录来沟通其他服务
~~~     OpenStack为每个服务提供了三个API端点,admin(管理)internal(内部),
~~~     public(公共)为identity服务创建API端点
~~~     通过服务的ID好去绑定的,ID号查询:
~~~     测试,非操作环节[root@controller ~]# keystone service-list |awk '/identity/{print $2}'
9349d2072a3b4e739eeaddd313790b89

~~~     --publicurl:公共的访问端点:用于web用户
~~~     --internalurl:是内网的访问端点:用于组件之间
~~~     --adminurl:管理员访问端点:用于管理员
~~~     --region regionOne  [root@controller ~]# keystone endpoint-create \
> --service-id $(keystone service-list | awk '/ identity / {print $2}') \
> --publicurl http://controller.nice.com:5000/v2.0 \
> --internalurl http://controller.nice.com:5000/v2.0 \
> --adminurl http://controller.nice.com:35357/v2.0 \
> --region regionOne
+-------------+---------------------------------------+
|   Property  |                 Value                 |
+-------------+---------------------------------------+
|   adminurl  | http://controller.nice.com:35357/v2.0 |
|      id     |    34b1af6555d1405fa9139fcd752a8969   |
| internalurl |  http://controller.nice.com:5000/v2.0 |
|  publicurl  |  http://controller.nice.com:5000/v2.0 |
|    region   |               regionOne               |
|  service_id |    9349d2072a3b4e739eeaddd313790b89   |
+-------------+---------------------------------------+

六、确认操作
### --- 确认操作
### --- 删除OS_SERVICE_TOKEN和OS_SERVICE_ENDPOINT临时变量
~~~     删除刚才的环境变量[root@controller ~]# unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT

### --- 使用admin租户和用户请求认证令牌[root@controller ~]# keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller.nice.com:35357/v2.0 token-get
+-----------+----------------------------------+
|  Property |              Value               |
+-----------+----------------------------------+
|  expires  |       2021-01-10T01:23:06Z       |
|     id    | 50d83a396a184b2cbdf5e666c1eb417a |
| tenant_id | 7bce6e7e6d724ad188e4f70ad9d51e17 |
|  user_id  | ecc6ddd5697541388c24741d4634eff6 |
+-----------+----------------------------------+

### --- 以admin租户和用户的身份查看租户列表
~~~     有返回值的话说明权限是没有问题的[root@controller ~]# keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller.nice.com:35357/v2.0 tenant-list
+----------------------------------+---------+---------+
|                id                |   name  | enabled |
+----------------------------------+---------+---------+
| 7bce6e7e6d724ad188e4f70ad9d51e17 |  admin  |   True  |
| 5f158b7cfb7448d18921158f9c92918f |   demo  |   True  |
| 48bee3be288e477889d404a41a0b6f33 | service |   True  |
+----------------------------------+---------+---------+

### --- 以admin租户和用户的身份查看用户列表[root@controller ~]# keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller.nice.com:35357/v2.0 user-list
+----------------------------------+-------+---------+---------------+
|                id                |  name | enabled |     email     |
+----------------------------------+-------+---------+---------------+
| ecc6ddd5697541388c24741d4634eff6 | admin |   True  | EMALL_ADDRESS |
| a98a737625214eadb3e19a80bc6f4011 |  demo |   True  | EMALL_ADDRESS |
+----------------------------------+-------+---------+---------------+

### --- 以admin租户和用户的身份查看角色列表[root@controller ~]# keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller.nice.com:35357/v2.0 role-list
+----------------------------------+----------+
|                id                |   name   |
+----------------------------------+----------+
| 3c686557c49945c694219ca8f1bc9db2 | _member_ |
| 8b42b1db8489443b848b88a3d30d7696 |  admin   |
+----------------------------------+----------+

### --- 以demo租户和用户的身份请求认证令牌[root@controller ~]# keystone --os-tenant-name demo --os-username demo --os-password DEMO_PASS --os-auth-url http://controller.nice.com:35357/v2.0 token-get
+-----------+----------------------------------+
|  Property |              Value               |
+-----------+----------------------------------+
|  expires  |       2021-01-10T01:27:33Z       |
|     id    | 93441477f60a476faef77c7b17b4acec |
| tenant_id | 5f158b7cfb7448d18921158f9c92918f |
|  user_id  | a98a737625214eadb3e19a80bc6f4011 |
+-----------+----------------------------------+

### --- 以demo租户和用户的身份查看用户列表[root@controller ~]# keystone --os-tenant-name demo --os-username demo --os-password DEMO_PASS --os-auth-url https://controller.nice.com:35357/v2.0 user-list
Authorization Failed: SSL exception connecting to https://controller.nice.com:35357/v2.0/tokens     //报错,获取不到,说明正常,若可获取,说明配置错误

七、创建openstack客户端环境脚本
### --- 创建openstack客户端环境脚本
~~~     为了方便使用上面的环境变量和命令选项,我们为admin和demo租户和用户创建环境脚本
~~~     编辑admin-openrc.sh[root@controller ~]# vim admin-openrc.sh        // 教程命名为admin.sh
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller.nice.com:35357/v2.0

### --- 编辑demo-openrc.shexport OS_TENANT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://controller.nice.com:5000/v2.0

### --- 加载客户端环境脚本
~~~     加载admin的环境变量,这样我们的环境就切换到admin用户下了。[root@controller ~]# source admin-openrc.sh

CC00007.CloudOpenStack——|OpenStack组件.V02|——|openstack-keystone|controller节点下部署Key相关推荐

  1. CC00009.CloudOpenStack——|OpenStack组件.V02|——|openstack-glance|controller节点下部署glanc

    一.构建实验openstack-ImageServeice(glance):在controller节点安装并配置OpenStack镜像服务 ### --- 配置先决条件 ### --- 创建数据库 ~ ...

  2. CC00024.CloudOpenStack——|OpenStack组件.V02|——|OpenStack-Cinder块存储|配置block.V2|

    一.安装并配置block1节点(在openstack-block1下配置) ### --- 安装并配置block1节点(在openstack-block1下配置)~~~ 配置先决条件 ~~~ 安装并配 ...

  3. Openstack组件实现原理 — Keystone认证功能

    前言 Keystone实现始终围绕着Keystone所实现的功能来展开,所以在理解其实现之前,建议大家尝试通过安装Keystone这一个过程来感受Keystone在Openstack架构中所充当的角色 ...

  4. Openstack组件实现原理 — Nova 体系结构

    目录 目录 前文列表 Nova体系结构 虚拟机实例化流程 前文列表 Openstack组件部署 - Overview和前期环境准备 Openstack组建部署 - Environment of Con ...

  5. Openstack组件部署 — Keystone功能介绍与认证实现流程

    目录 目录 前文列表 Keystone认证服务 Keystone认证服务中的概念 Keystone的验证过程 简单来说 前文列表 Openstack组件部署 - Overview和前期环境准备 Ope ...

  6. OpenStack组件——Keystone身份认证

    1.keystone介绍 keystone 是OpenStack的组件之一,用于为OpenStack家族中的其它组件成员提供统一的认证服务,包括身份验证.令牌的发放和校验.服务列表.用户权限的定义等等 ...

  7. CC00022.CloudOpenStack——|OpenStack组件.V01|——|OpenStack-Dashboard|Dashboard基础条件配置|

    一.先决条件 ### --- 先决条件 ### --- BS结构的访问体系~~~ 安装OpenStack compute(nova)和identity(keystone)service ~~~ 安装P ...

  8. OpenStack(二)——Keystone组件

    OpenStack(二)--Keystone组件 一.OpenStack组件之间的通信关系 二.OpenStack物理构架 三.Keystone组件 1.Keystone身份服务 2.管理对象 3.K ...

  9. CC00006.CloudOpenStack——|OpenStack组件.V01|——|openstack-keystone|组件说明|

    一.组件构建: ### --- keystone存在的意义 ~~~ 什么是keystone:keystone是OpenStack Identity Service的项目名称, ~~~ 是一个#负责身份 ...

最新文章

  1. 计算机系统的安全需求的需求等级,计算机信息系统安全等级保护 通用技术要求.PDF...
  2. 龙邱MPU9250传感器 | 使用ESP32 模块进行测试
  3. nodejs之思维导图(浅理解)
  4. always on sql 收缩日志_SQL Server AlwaysOn日志收缩
  5. Android中获取定位经纬度信息
  6. 软件工程课程学生信息
  7. 分类检测分割中的损失函数和评价指标
  8. html htc控件详解,*.HTC 文件的简单介绍-网页设计,HTML/CSS
  9. ios html5 文件上传,【Web前端问题】上传文件使用axios发送FormData数据,参数为空...
  10. Elasticsearch 为什么能做到快速检索?秘密在这里!
  11. FreeSWITCH核心命令
  12. 你干的是高档活儿还是Low逼活儿,就在一念之间
  13. A - Chloe and the sequence
  14. Python爬虫技术-根据【理财】关键字爬取“巨潮资讯网”的title
  15. 多线程_线程插队_join()方法与锁的释放
  16. android透明主题引起的快速点击activity触发退到桌面
  17. android ip 黑白名单,“IP 黑白名单”功能说明
  18. 六年Android生涯总结+展望:君子坐而论道,少年起而行之
  19. linux python3安装proton_深度deepin系统中通过Lutris(wine、proton)运行逆水寒的方法 ......
  20. 资源网站模板Emlog程序zytheme模板

热门文章

  1. JSP+ssm计算机毕业设计快递代取系统的设计与实现94wcw【源码、数据库、LW、部署】
  2. 哈希表--管理公司员工信息
  3. 在java中用log4j写日志文件
  4. centos8之systemd管理服务开机自启动
  5. Centos7 Apache结合tomcat实现动静分离
  6. 程序设计思维与实践 Week15 作业A - ZJM 与霍格沃兹
  7. 计算机无法完成更新如何处理,Win10更新过程中碰到“无法完成更新”怎么办
  8. 计算机科学与生命科学的关系,计算机科学与生命科学论文
  9. 幽默感七个技巧_16个聊天幽默技巧 几招让你变的风趣幽默
  10. 右键计算机管理打开记事本,右键菜单怎么加入“用记事本方式打开”