基于Ubuntu12.04下的Keystone源码安装
Keystone 概述:
Keystone 作为Openstack最早期的核心项目独立发展,由于Openstack 采取的设计理念也是所有一切皆API,因此设计服务API的调用脱离不了Keystone。Keystone 作为Openstack 中身份认证服务,在Openstack起到非常关键的作用,并且实现了Identity API 供Openstack 其他组件间进行身份验证
Keystone 两种认证方式:
UUID认证的原理
当用户拿着有效的用户名和密码去keystone认证后,keystone就会返回给他一个token,这个token就是一个uuid。以后用户进行其他操作时,都必须出示这个token。例如当nova接到一个请求后,就会用这个token去向keystone进行请求验证,keystone通过比对token,以及检查token的有效期,来判断token是否合法,然后返回给nova这一个请求是否合法。
PKI认证的原理
在keystone初始化时,keystone生成了CA的公钥CA.pem和私钥CA.key。同时,产生了keystone自己的公钥keystone.pub和keystone.key,然后将keystone.pub进行了CA的签名,生成了keystone.pem。
当用户拿着有效的用户名和密码去keystone认证后,keystone就将用户的基本信息通过keystone.key进行了加密,将这一密文作为token返回给用户。当用户发出一个请求,例如nova拿到token后,首先需要拿到keystone的证书keystone.pem(这一过程只需要进行一次),然后通过keystone.pem来进行解密,获得用户的信息,就可以知道该用户是否合法。
对于用户的token还需要对token的合法时间,以及token还是否存在进行判断。所以当nova每一次拿到token后还会先向keystone询问一次token的失效列表,来查看token是否失效。当然这一过程对于keystone的负载还是相当轻的,所以PKI还是有效的解决了keystone成为性能瓶颈的问题。
安装相应的软件包
junluobj@junluobj:~$ sudo apt-get install -y git python-dev sqlite3 libxml2-dev libxslt1-dev libsasl2-dev libsqlite3-dev libssl-dev libldap2-dev junluobj@junluobj:~$git clone https://github.com/openstack/keystone.git junluobj@junluobj:~$git clone https://github.com/openstack/python-keystoneclient.git keystone/client
安装mysql数据库
junluobj@junluobj:~$sudo apt-get install mysql-server mysql-client python-mysqldb junluobj@junluobj:~$sudo mysql -u root -p mysql>create database keystone; mysql>grant all on keystone.* to 'keystone'@'%' identified by ‘redhat';
安装keystone
junluobj@junluobj:~$python setup.py install
在此过程可能会提示缺少setuptools 模块
junluobj@junluobj:~$sudo apt-get install python-setuptools junluobj@junluobj:~$python setup.py install junluobj@junluobj:~$sudo pip install -e .
修改配置文件:
junluobj@junluobj:~$sudo mkdir -p /etc/keystone junluobj@junluobj:~$sudo cp etc/* /etc/keystone/ junluobj@junluobj:~$sudo mv /etc/keystone/keystone.conf.sample /etc/keystone/keystone.conf junluobj@junluobj:~$sudo vim /etc/keystone/keystone.conf #admin token=ADMIN admin token=ADMIN #connection=<None> connection=mysql://root:redhat@localhost/keystone?charset=utf8 admin_endpoint public_endpoilt
配置日志存放路径
junluobj@junluobj:~$sudo mkdir -p /var/log/keystone junluobj@junluobj:~$touch /var/log/keystone/keystone.log junluobj@junluobj:~$sudo touch /var/log/keystone/keystone.log
数据库同步,即创建keystone相关的数据库表
junluobj@junluobj:~$keystone-manage db_sync junluobj@junluobj:~$echo $?
创建kestone账户及SSL证书
junluobj@junluobj:~$sudo useradd keystone junluobj@junluobj:~$sudo chown -R keystone.keystone /etc/keystone/ junluobj@junluobj:~$sudo keystone-manage pki_setup --keystone-user=keystone --keystone-group=keyston
启动keystone 服务
junluobj@junluobj:~$echo $ keystone-all -d & junluobj@junluobj:~$echo $ps aux |grep keystone junluobj 14911 0.0 4.0 123772 41368 pts/1 S 19:15 0:00 /usr/bin/python /usr/local/bin/keystone-all -d junluobj 14924 0.0 0.0 13588 936 pts/1 S+ 19:29 0:00 grep --color=auto keystone
现在已经完成Keystone的安装,但现在还无法使用,因为没有租户、用户、密码、服务等。
配置Keytone
在这里先设置两个环境变量
junluobj@junluobj:~$ export OS_SERVICE_TOKEN=ADMIN junluobj@junluobj:~$ export SERVICE_ENDPOINT=http://192.168.0.103:35357/v2.0
查看用户列表:
junluobj@junluobj:~$ keystone user-list
创建租户
junluobj@junluobj:~$ keystone tenant-create --name adminTenant --description "Admin Tenant" --enabled true
创建用户
需要记录 tenant id,在创建用户时需要关联,即将用户关联到哪个租户。
junluobj@junluobj:~$keystone user-create --tenant_id bf0df88bd9694e11951a896bde015cb0 --name admin --pass redhat --enabled truejunluobj@junluobj:~$keystone user-create --tenant_id bf0df88bd9694e11951a896bde015cb0 --name user1 --pass redhat --enabled true
通过keystone命令创建一个新的role,并将此role赋给第一步中的一个admin用户
创建一个角色名称为adminRole。请记住该命令生成的Role id
junluobj@junluobj:~$ keystone role-create --name adminRole
截止到目前,已经分别创建 Tenant、User、Role,分别是:
Tenant ID: bf0df88bd9694e11951a896bde015cb0
User ID: 0a46563787a7470ebca6e0faafb41174(admin)
Role ID: 87a6bda856014385b9f6164dc99f792d
junluobj@junluobj:~$ keystone user-role-add --user-id 0a46563787a7470ebca6e0faafb41174 \ > --tenant-id bf0df88bd9694e11951a896bde015cb0 \ > --role-id 87a6bda856014385b9f6164dc99f792d
通过以下两个命令简单测试:
junluobj@junluobj:~$ keystone user-role-list --user admin --tenant adminTenant junluobj@junluobj:~$ keystone user-list
今儿先写到这儿了,待后续...
转载于:https://blog.51cto.com/lj119/1439464
基于Ubuntu12.04下的Keystone源码安装相关推荐
- pip 安装keystone_基于Ubuntu12.04下的Keystone源码安装
Keystone 概述:Keystone 作为Openstack最早期的核心项目独立发展,由于Openstack 采取的设计理念也是所有一切皆API,因此设计服务API的调用脱离不了Keystone. ...
- ubuntu10.04下audacious2.4源码编译过程(解决2.3cue的bug)
本文最新版本:ubuntu10.04下audacious2.5源码编译过程 编译最新的2.4是为了解决ubuntu源中安装的audacious播放cue时有bug,会一直重复第一首歌 听ape的时候很 ...
- win10下llvm的源码安装编译
win10下llvm的源码安装编译 1.下载llvm源码 2.下载安装cmake 你好!如需转载请标明本文出处. 1.下载llvm源码 下载llvm源码:https://github.com/llvm ...
- android .9编译,在Ubuntu 9.04下编译Android源码
一直都是刷官方的版本,准备自己编译一下刷机. 首先是下载,Android的源码是托管在Linux Kernel的源码站点,所以版本工具是git.关于git的使用和安装请见我的另一篇文章<在Ubu ...
- linux下的geany源码安装,linux 下php开发工具geany-0.16的安装。
说明 一款linux下的编辑器,支持很多开发语言. 下载 下载地址:http://www.geany.org/ 安装 源码安装 #./configure #make #make install 我在m ...
- LinuxMint下的Orionode源码安装
1. Orionode介绍 Eclipse-orion是Eclipse项目下面的一个子项目,orion是一个在在线版的代码编辑环境.其介绍参考http://wiki.eclipse.org/Orion ...
- 从 Blast2GO 本地化聊一聊 Linux 下 MySQL 的源码安装
Blast2GO 是一个基于序列相似性搜索的 GO 注释和功能分析工具,它可以直接统计分析基因功能信息,并可视化 GO 有向非循环图(DAG)上的相关功能特征,分析 BLAST.GO-mapping. ...
- mysql 5.6.23 源码包安装报错_大环境下MySQL5.6源码安装实战一步步教你 CentOS6.5_64bit下编译安装...
一.关闭防火墙 chkconfig iptables off service iptables stop 二.检查操作系统上是否安装了MySQL [[email protected] backup]# ...
- Linux 下 Git 的源码安装
先从 Git 官网下载源码,然后解压,依次输入 ./config make sudo make install 这几个命令安装就好了.
最新文章
- Jmeter Loadrunner高级性能测试真实曝光
- NIO原理及案例使用
- python最新功能_Python在2020的新增功能:第1部分
- ITK:创建Image
- PS网页设计教程XIV——如何创建一个复古风格的PS布局
- 针织布横条疵点解决方案
- 2013 01 12 三星发布最新八核处理器SoC “Exynos 5 Octa”
- 【谈谈疫情+金三银四下测试面试的行情】一个月内连续面试40+位候选人。
- java增函数的单变量求解,最底层码农的不易谁能体会?谁心里苦谁知道啊。
- 【实战项目惜时App需求分析说明书】Vue-cli3+Vant UI+Vue-element-admin+Egg.js+Mysql
- 浅析公关中的“道”与“术”
- Linux基础入门 -用户与文件操作
- 某电商网站的数据库设计(2)——商品销售相关数据表的设计
- 服务器数据恢复通用方法/服务器硬盘故障导致数据丢失解决方案
- GitHub也能CI/CD了 如何使用GitHub的Action?
- 【JavaWeb-遇错】继承或者实现Servlet相关时总是报红或者包导不进来
- NOJ-1149-旅游预算
- 排序算法:冒泡排序(代码优化)
- slam14讲-第二版-安装包
- QT中文乱码解决思路和方法汇总
热门文章
- leetcode刷题:数组中第K个最大的元素
- windows编译libevent
- java讲师助教简历模板,大学助教个人简历
- python 邮件中生成图表_60秒一口Python:147个demo,助你从新手小白步步进阶编程高手...
- java子类代码块_java中父类子类静态代码块、构造代码块执行顺序
- vue element form 表单
- flask与js交互的示例代码_QT5.12 C++与前端JavaScript/HTML实现通信交互
- 新自动化文档生成-go语言-docx生成
- css 浮动在最上层_《CSS 知识总结》
- 使用gp部署bginfo在客户端显示信息