官方安装文档:https://docs.openstack.org/ocata/zh_CN/install-guide-rdo/index.html

7.1 keystone简介

Keystone 中主要涉及到如下几个概念:User、Tenant、Role、Token:

User:使用openstack的用户。

Tenant:租户,可以理解为一个人、项目或者组织拥有的资源的合集。在一个租户中可以拥有很多个用户,这些用户可以根据权限的划分使用租户中的资源。

Role:角色,用于分配操作的权限。角色可以被指定给用户,使得该用户获得角色对应的操作权限。

Token:指的是一串比特值或者字符串,用来作为访问资源的记号。Token 中含有可访问资源的范围和有效时间。

7.2安装Keystone认证服务

7.2.1keystone数据库配置

# mysql

> create database keystone;

> grant all on keystone.* to 'keystone'@'%' identified by 'keystone';

7.2.2配置haproxy代理

Mysql port 3306,memcache port 11211,rabbitMQ port 5672双机代理,同3.3.3.3,3.3.3.5章

7.2.3验证数据库VIP端口访问

# mysql -ukeystone -h192.168.10.100 –pkeystone

7.2.4安装keystone

openstack-keystone是keystone服务,http是web服务,mod_wsgi是python的通用网关,

# yum install -y openstack-keystone httpd mod_wsgi python-memcached python2-PyMySQL

7.3配置keystone认证服务

7.3.1生成临时token

#  openssl  rand -hex 10

a734fda7b075fb62b75c

7.3.2修改配置文件

# vim /etc/keystone/keystone.conf

17 admin_token = a734fda7b075fb62b75c

714 connection = mysql+pymysql://keystone:keystone@192.168.10.100/keystone

2833 provider = fernet

7.3.3当前最终配置

# grep  -n "^[a-Z\[]" /etc/keystone/keystone.conf

1:[DEFAULT]

17:admin_token = a734fda7b075fb62b75c

686:[database]

714:connection = mysql+pymysql://keystone:keystone@192.168.10.100/keystone

1494:[memcache]

2791:[token]

2833:provider = fernet

7.3.4初始化并验证数据库

# su -s /bin/sh -c "keystone-manage db_sync" keystone

# mysql

>use keystone;

>show tables;

7.3.5keystone日志文件

# ll /var/log/keystone/keystone.log

7.3.6初始化证书并验证

# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

#  keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

# ll  /etc/keystone/fernet-keys/

-rw------- 1 keystone keystone 44 Sep 10 10:56 0

-rw------- 1 keystone keystone 44 Sep 10 10:56 1

7.3.7 编辑apache配置文件

#  vim /etc/httpd/conf/httpd.conf

95 ServerName 192.168.10.201:80

## ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d

7.3.8 启动apache并验证

# systemctl start httpd

# systemctl enable  httpd

# ss –tnl

7.3.9创建域、用户、项目和角色

7.3.9.1通过admin的token设置环境标量进行操作:

#  export  OS_TOKEN=a734fda7b075fb62b75c

#  export  OS_URL=http://192.168.10.201:35357/v3

#  export  OS_IDENTITY_API_VERSION=3

7.3.9.2创建默认域

一定要在上一步设置完成环境变量的前提下方可操作成功,否则会提示未认证。

#命令格式为:openstack domain create --description "描述信息" 域名

# openstack domain create --description "Default Domain" default

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Default Domain                   |

| enabled     | True                             |

| id          | 961b40ed4c6b40a9b266ce5e451a4292 |

| name        | default                          |

+-------------+----------------------------------+

7.3.9.3创建一个admin的项目

#命令格式为openstack project --domain 域 --description "描述" 项目名

openstack project create --domain default --description "Admin Project" admin

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Admin Project                    |

| domain_id   | 961b40ed4c6b40a9b266ce5e451a4292 |

| enabled     | True                             |

| id          | 1caf792ed8d84fc089ef4c3ab6cbf3c1 |

| is_domain   | False                            |

| name        | admin                            |

| parent_id   | 961b40ed4c6b40a9b266ce5e451a4292 |

+-------------+----------------------------------+

7.3.9.4创建admin用户并设置密码为admin:

# openstack user create --domain default --password-prompt admin

User Password:

Repeat User Password:

+---------------------+----------------------------------+

| Field               | Value                            |

+---------------------+----------------------------------+

| domain_id           | 961b40ed4c6b40a9b266ce5e451a4292 |

| enabled             | True                             |

| id                  | 2c82b16690934cbe9b78bbffae50ecca |

| name                | admin                            |

| options             | {}                               |

| password_expires_at | None                             |

+---------------------+----------------------------------+

7.3.9.5创建admin角色:

一个项目里面可以有多个角色,目前角色只能创建在/etc/keystone/policy.json文件中定义好的角色:

# openstack role create admin

+-----------+----------------------------------+

| Field     | Value                            |

+-----------+----------------------------------+

| domain_id | None                             |

| id        | 9c6f0cdfe1704fdb85c56528ebcaec16 |

| name      | admin                            |

+-----------+----------------------------------+

7.3.9.6给admin用户授权:

将admin用户授予admin项目的admin角色,即给admin项目添加一个用户叫admin,并将其添加至admin角色,角色是权限的一种集合:

#  openstack role add --project admin --user admin admin

7.3.9.7创建demo项目:

该项目可用于演示和测试等

# openstack project create --domain default --description "Demo Project" demo

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Demo Project                     |

| domain_id   | 961b40ed4c6b40a9b266ce5e451a4292 |

| enabled     | True                             |

| id          | 51919be117ec4ba2bdddd206bd3a1444 |

| is_domain   | False                            |

| name        | demo                             |

| parent_id   | 961b40ed4c6b40a9b266ce5e451a4292 |

+-------------+----------------------------------+

7.3.9.8创建demo用户并设置密码为demo:

# openstack user create --domain default --password-prompt demo

User Password:

Repeat User Password:

+---------------------+----------------------------------+

| Field               | Value                            |

+---------------------+----------------------------------+

| domain_id           | 961b40ed4c6b40a9b266ce5e451a4292 |

| enabled             | True                             |

| id                  | 49640b553dcc43c6bccf5722eedf46af |

| name                | demo                             |

| options             | {}                               |

| password_expires_at | None                             |

+---------------------+----------------------------------+

7.3.9.9创建一个user角色:

角色目前有user和admin:

[root@linux-host1 ~]# openstack role create user

+-----------+----------------------------------+

| Field     | Value                            |

+-----------+----------------------------------+

| domain_id | None                             |

| id        | 5b60565079c4475ab640f61038c1c632 |

| name      | user                             |

+-----------+----------------------------------+

7.3.9.10把demo用户添加到demo项目:

然后赋予user权限:

#  openstack role add --project demo --user demo user

7.3.9.11创建一个service项目:

各服务之间与keystone进行访问和认证,service用于给服务创建用户

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

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Service Project                  |

| domain_id   | 961b40ed4c6b40a9b266ce5e451a4292 |

| enabled     | True                             |

| id          | c7cf72ff26dd49f1a9216f94146cf82b |

| is_domain   | False                            |

| name        | service                          |

| parent_id   | 961b40ed4c6b40a9b266ce5e451a4292 |

+-------------+----------------------------------+

7.3.9.11创建glance用户:

创建glance密码用户并设置密码为glance

# openstack user create --domain default --password-prompt glance

User Password:

Repeat User Password:

+---------------------+----------------------------------+

| Field               | Value                            |

+---------------------+----------------------------------+

| domain_id           | 961b40ed4c6b40a9b266ce5e451a4292 |

| enabled             | True                             |

| id                  | 1aeb2f2695ec4008b6ff9899e88fcb82 |

| name                | glance                           |

| options             | {}                               |

| password_expires_at | None                             |

+---------------------+----------------------------------+

7.3.9.12对glance用户授权:

把glance和neutron用户添加到service项目并授予admin角色

#  openstack role add --project  service --user glance admin

7.3.9.13按照以上步骤操作nova和neutron用户:

将nova用户添加到service项目并授予admin权限

创建nova用户并设置密码为nova

#  openstack user create --domain default --password-prompt nova

User Password:

Repeat User Password:

+---------------------+----------------------------------+

| Field               | Value                            |

+---------------------+----------------------------------+

| domain_id           | 961b40ed4c6b40a9b266ce5e451a4292 |

| enabled             | True                             |

| id                  | 71580f80cd4345e19f8948b77556ae3a |

| name                | nova                             |

| options             | {}                               |

| password_expires_at | None                             |

+---------------------+----------------------------------+

创建neutron用户并设置密码为neutron

openstack user create --domain default --password-prompt neutron

User Password:

Repeat User Password:

+---------------------+----------------------------------+

| Field               | Value                            |

+---------------------+----------------------------------+

| domain_id           | 961b40ed4c6b40a9b266ce5e451a4292 |

| enabled             | True                             |

| id                  | 73fe1b80b71e46f49fe1d5730dca5283 |

| name                | neutron                          |

| options             | {}                               |

| password_expires_at | None                             |

+---------------------+----------------------------------+

对nova和neutron用户授权:

将nova和neutron用户授权为service项目的admi权限

[root@linux-host1 ~]#  openstack role add --project  service --user nova  admin

[root@linux-host1 ~]#  openstack role add --project  service --user neutron  admin

7.3.9.14服务注册

将keystone服务地址注册到openstack:

创建一个keystone认证服务

#  openstack service list #查看当前的服务

# openstack service create  --name keystone --description "OpenStack Identity" identity

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | OpenStack Identity               |

| enabled     | True                             |

| id          | 6efd80d3570f40bfafb02a1169b68aaa |

| name        | keystone                         |

| type        | identity                         |

+-------------+----------------------------------+

#  openstack service list   #验证服务创建成功

+----------------------------------+----------+----------+

| ID                               | Name     | Type     |

+----------------------------------+----------+----------+

| 6efd80d3570f40bfafb02a1169b68aaa | keystone | identity |

+----------------------------------+----------+----------+

# openstack endpoint create --region RegionOne identity public http://192.168.10.100:5000/v3  #公共端点

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | 92990b4521454e1ab1b5aa9e26e3e230 |

| interface    | public                           |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | 6efd80d3570f40bfafb02a1169b68aaa |

| service_name | keystone                         |

| service_type | identity                         |

| url          | http://192.168.10.100:5000/v3    |

+--------------+----------------------------------+

# openstack endpoint create --region RegionOne identity internal http://192.168.10.100:5000/v3  #私有端点

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | 9779a47b96ee4ffa9196fb8593bbcc1d |

| interface    | internal                         |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | 6efd80d3570f40bfafb02a1169b68aaa |

| service_name | keystone                         |

| service_type | identity                         |

| url          | http://192.168.10.100:5000/v3    |

+--------------+----------------------------------+

# openstack endpoint create --region RegionOne identity admin http://192.168.10.100:35357/v3 #管理端点

+--------------+----------------------------------+

| Field        | Value                            |

+--------------+----------------------------------+

| enabled      | True                             |

| id           | c95807c1098e4cab95e11eeebba1221f |

| interface    | admin                            |

| region       | RegionOne                        |

| region_id    | RegionOne                        |

| service_id   | 6efd80d3570f40bfafb02a1169b68aaa |

| service_name | keystone                         |

| service_type | identity                         |

| url          | http://192.168.10.100:35357/v3   |

+--------------+----------------------------------+

7.4配置keystone双机集群

7.4.1同步linux-hosts1文件

安装认证服务,同7.2.4

# scp -r -P22 /etc/keystone/ 192.168.10.202:/etc/keystone

#  vim /etc/httpd/conf/httpd.conf

95 ServerName 192.168.10.201:80

# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d

# systemctl start httpd

# systemctl enable  httpd

# ss –tnl

7.4.2配置haporxy

linux-host5、linux-host6

# vim  /etc/haproxy/haproxy.cfg

listen keystone-public-url

bind 192.168.10.100:5000

mode tcp

log global

balance source

server keystone1 192.168.10.201:5000 check inter 5000 rise 3 fall 3

server keystone1 192.168.10.202:5000 check inter 5000 rise 3 fall 3

listen keystone-admin-url

bind 192.168.10.100:35357

mode tcp

log global

balance source

server keystone1 192.168.10.201:35357 check inter 5000 rise 3 fall 3

server keystone1 192.168.10.202: 35357 check inter 5000 rise 3 fall 3

# systemctl  reload haproxy

# telnet  192.168.10.100 5000

# telnet  192.168.10.100 35357

7.5验证

7.5.1测试keystone是否可以做用户验证

验证admin用户,密码admin,新打开一个窗口并进行以下操作:

#  export OS_IDENTITY_API_VERSION=3

# openstack --os-auth-url http://192.168.10.100:35357/v3 --os-project-domain-name default --os-user-domain-name default  --os-project-name admin  --os-username admin token issue

验证demo用户,密码为demo

#  export OS_IDENTITY_API_VERSION=3

# openstack --os-auth-url http://192.168.10.100:35357/v3 --os-project-domain-name default --os-user-domain-name default  --os-project-name demo  --os-username demo token issue

Openstack(七)keystone的更多相关文章

  1. OpenStack:安装Keystone

    >安装Keystone1. 安装# apt-get install keystone2. 创建dbcreate database keystone;grant all privileges on ...

  2. Openstack中keystone与外部LDAP Server的集成

    openstack中keystone鉴权的用户user和password信息,通常保存在mysql数据库的keystone库: 表local_user和表password: keystone也支持外部 ...

  3. OpenStack之Keystone模块

    一.Keystone介绍 OpenStack Identity(Keystone)服务为运行OpenStack Compute上的OpenStack云提供了认证和管理用户.帐号和角色信息服务,并为Op ...

  4. 在安装Openstack的keystone认证服务时,出现The request you have made requires authentication. (HTTP 401) (Request-ID: req-f94bebba-f0c5-4a92-85问题的处理

      创建openstack的keystone认证服务器报错: The request you have made requires authentication. (HTTP 401) (Reques ...

  5. 003-官网安装openstack之-keystone身份认证服务

    以下操作均在控制节点进行 1.控制节点安装keystone服务 概念理解: Keystone是OpenStack框架中,负责身份验证.服务规则和服务令牌的功能, 它实现了OpenStack的Ident ...

  6. openstack核心组件——keystone身份认证服务(5)

    云计算openstack核心组件——keystone身份认证服务(5) 部署公共环境 ntp openstack mariadb-server rabbitmq-server memcache 1.w ...

  7. OpenStack 安装 Keystone

    OpenStack 安装 Keystone 本篇主要记录一下 如何安装 openstack的 第一个组件 keystone 认证授权组件 openstack 版本 我选的是queens 版本 1.Op ...

  8. openstack 之~keystone基础

    第一:keystone是什么? keystone是 OpenStack Identity Service 的项目名称,是一个负责身份管理验证.服务规则管理和服务令牌功能.它实现了openstack的i ...

  9. openstack学习-KeyStone安装(二)

    一.安装keystone # yum install -y openstack-keystone httpd mod_wsgi memcached python-memcached 二.设置Memca ...

随机推荐

  1. Unity3D工程源码目录

    2-0    暗黑破坏神3 链接:http://pan.baidu.com/s/1dEAUZoX 密码:cly4 2-1    炉石传说 客户端加服务器端 链接:http://pan.baidu.co ...

  2. idea 新建项目 文件名都是红色的处理办法

    原因是当前的project用了版本控制器 所以这个project下面所有的项目都加入版本控制器里了,所以项目文件和名称都是红色的 简单文字叙述解决办法 file-->settings--> ...

  3. 更改嵌入式Linux中开机画面----左上角小企鹅图标

    一直想给嵌入式仪表加个开机LOGO,但是没有找到更换的方法.最近在网上收集了一些文章,整理一下一共自己参考.目前也还没有试过这种方法究竟是否可以.但察看Kernel源代码可以知道,Linux-2.6的 ...

  4. C++说明符和限定符

    有些被称为存储说明符(storage class specifier)或cv-限定符(cv-qualifier)的C++关键字提供了一些有关存储的信息.下面是存储所说明符:* auto (在C++11 ...

  5. 【转】Go Channels

    转自: http://kdf5000.com/2017/07/16/Go-Channels/ Golang使用Groutine和channels实现了CSP(Communicating Sequent ...

  6. IIS禁止xml文件访问

    今天在出现数据库账号信息泄露的时候,突然想到xml文件里面放着很多信息,而且网页能够直接访问到,这就很有问题了 开始的时候,也在IIS网站那里看到请求筛选这个设置,开始还以为不能加呢,还是同事说的.

  7. 上传文件提示IO Error

    百度查到的解决办法 http://www.wang0214.com/news/466.html 作者:深圳网站建设 原因: Asp.net中,上传文件的默认大小是4096 KB,也就是4M,不过你可以 ...

  8. jquery单选框radio绑定click事件实现和是否选中的方法

    使用jquery获取radio的值,最重要的是掌握jquery选择器的使用,在一个表单中我们通常是要获取被选中的那个radio项的值,所以要加checked来筛选,比如有以下的一些radio项: 1. ...

  9. java基础---->java多线程之Join(二)

    如果主线程想等待子线程执行完成之后再结束,就可以使用join方法了.它的使用是等待线程对象销毁.今天我们就通过实例来学习一下多线程中join方法的使用.草在结它的种子,风在摇它的叶子.我们站着,不说话 ...

  10. css - Position定位属性与层级关系

    今天同事发现一个有意思的问题,关于position的层级关系的,他要不说我也没注意过 测试后果然有趣,有待深入研究: <!DOCTYPE html> <html> <he ...