基于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成为性能瓶颈的问题。

安装相应的软件包

[email protected]:~$ sudo apt-get install -y git python-dev sqlite3 libxml2-dev libxslt1-dev libsasl2-dev libsqlite3-dev libssl-dev libldap2-dev
[email protected]:~$git clone https://github.com/openstack/keystone.git
[email protected]:~$git clone https://github.com/openstack/python-keystoneclient.git keystone/client

安装mysql数据库

[email protected]:~$sudo apt-get install mysql-server mysql-client python-mysqldb
[email protected]:~$sudo mysql -u root -p
mysql>create database keystone;
mysql>grant all on keystone.* to ‘keystone‘@‘%‘ identified by ‘redhat‘;

安装keystone

[email protected]:~$python setup.py install

在此过程可能会提示缺少setuptools 模块

[email protected]:~$sudo apt-get install python-setuptools
[email protected]:~$python setup.py install
[email protected]:~$sudo pip install -e .

修改配置文件:

[email protected]:~$sudo mkdir -p /etc/keystone
[email protected]:~$sudo cp etc/* /etc/keystone/
[email protected]:~$sudo mv /etc/keystone/keystone.conf.sample /etc/keystone/keystone.conf
[email protected]:~$sudo vim /etc/keystone/keystone.conf
#admin token=ADMIN
admin token=ADMIN
#connection=<None>
connection=mysql://root:[email protected]/keystone?charset=utf8
admin_endpoint
public_endpoilt

配置日志存放路径

[email protected]:~$sudo mkdir -p /var/log/keystone
[email protected]:~$touch /var/log/keystone/keystone.log
[email protected]:~$sudo touch /var/log/keystone/keystone.log

数据库同步,即创建keystone相关的数据库表

[email protected]:~$keystone-manage db_sync
[email protected]:~$echo $?

创建kestone账户及SSL证书

[email protected]:~$sudo useradd keystone
[email protected]:~$sudo chown -R keystone.keystone /etc/keystone/
[email protected]:~$sudo keystone-manage pki_setup --keystone-user=keystone --keystone-group=keyston

启动keystone 服务

[email protected]:~$echo $ keystone-all -d &
[email protected]:~$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

在这里先设置两个环境变量

[email protected]:~$ export OS_SERVICE_TOKEN=ADMIN
[email protected]:~$ export SERVICE_ENDPOINT=http://192.168.0.103:35357/v2.0

查看用户列表:

[email protected]:~$ keystone user-list

创建租户

[email protected]:~$ keystone tenant-create --name adminTenant --description "Admin Tenant" --enabled true

创建用户

需要记录 tenant id,在创建用户时需要关联,即将用户关联到哪个租户。

 [email protected]:~$keystone user-create --tenant_id bf0df88bd9694e11951a896bde015cb0 --name admin --pass redhat --enabled true
 [email protected]:~$keystone user-create --tenant_id bf0df88bd9694e11951a896bde015cb0 --name user1 --pass redhat --enabled true

通过keystone命令创建一个新的role,并将此role赋给第一步中的一个admin用户

创建一个角色名称为adminRole。请记住该命令生成的Role id

[email protected]:~$ keystone role-create --name adminRole

截止到目前,已经分别创建 Tenant、User、Role,分别是:

Tenant ID: bf0df88bd9694e11951a896bde015cb0
User ID: 0a46563787a7470ebca6e0faafb41174(admin)

Role ID: 87a6bda856014385b9f6164dc99f792d

[email protected]:~$ keystone user-role-add --user-id 0a46563787a7470ebca6e0faafb41174 \ 
> --tenant-id bf0df88bd9694e11951a896bde015cb0 > --role-id 87a6bda856014385b9f6164dc99f792d

通过以下两个命令简单测试:

[email protected]:~$ keystone user-role-list --user admin --tenant adminTenant 
[email protected]:~$ keystone user-list

今儿先写到这儿了,待后续...

基于Ubuntu12.04下的Keystone源码安装

时间: 2024-12-15 01:57:09

基于Ubuntu12.04下的Keystone源码安装的相关文章

ubuntu12.04下同步cm10源码(个人记录,当作笔记)

环境:AMD N850,4G,ubuntu12.04 x64, 老规矩,先是各种依赖: sudo apt-get install git-core gnupg flex bison python rar original-awk gawk p7zip-full gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev pngc

ubuntu12.04 编译android4.2源码 gcc: fatal error: no input files错误

============问题描述============ 最近在ubuntu12.04 编译android4.2源码时遇到一个编译错误,错误如下: host C++: libhost <= build/libs/host/pseudolocalize.cpp gcc: fatal error: no input files compilation terminated. make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libhost_inte

LinuxMint下的Orionode源码安装

1. Orionode介绍 Eclipse-orion是Eclipse项目下面的一个子项目,orion是一个在在线版的代码编辑环境.其介绍参考http://wiki.eclipse.org/Orion. Eclipse-orion是使用Java语言开发的, Orionode则是使用Node.js开发的一个简易版orion.关于orionode跟orion的特性差异请查考http://wiki.eclipse.org/Orion/Node/Getting_started. 2. Node.js和n

【转】linux环境下python的源码安装

[转载: http://www.cnblogs.com/yuechaotian/archive/2013/06/03/3115482.html] [问题] 在编译Sequoiadb的Python驱动源码的过程中,出现:Python.h不存在的问题.经求证,Python.h文件只在python的源码安装中存在,而在一般的二进制安装中则不存在. 1. 下载python2.7.5,保存到 /data/qtongmon/software wget https://www.python.org/ftp/p

大环境下MySQL5.6源码安装实战一步步教你 CentOS6.5_64bit下编译安装[email&#160;protected]

l转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/44813039 一.关闭防火墙 chkconfig iptables off service iptables stop 二.检查操作系统上是否安装了MySQL[[email protected] backup]# rpm -qa |grep mysqlqt-mysql-4.6.2-26.el6_4.x86_64mysql-5.1.71-1.el6.x86_64mysql-server-

ubuntu 14.04 nginx + mysql + php源码安装

本文参考了 http://www.tuicool.com/articles/3iUNFnA  并在细节上做了一些补充.使安装过程更加顺畅. 首先要说的是ubuntu 上操作需要加sudo命令,所以在以下的命令上都要以sudo开始. 先安装一些依赖资源gcc  g++ openssl  libssl-dev (RedHat.centos才是openssl-devel) sudo apt-get install openssl sudo apt-get install libssl-dev sudo

Centos下用Saltstack源码安装Mysql

简介: SaltStack是 一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的puppet和加强版的func.SaltStack基 于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq.PyCrypto.Pyjinjia2. python-msgpack和PyYAML等)构建. 最近工作比较闲,所以继续学习saltstack,今天就用源码来安装Mysql数据库,学saltstack还是得多实践,废话不多说,上干

Ubuntu12.04更新openssl使用源码

下载openssl新版本源码和编译安装 curl ftp://ftp.openssl.org/source/openssl-1.0.2f.tar.gz tar zxf ./openssl-1.0.2f.tar.gz cd ./openssl-1.0.2f/ ./config make sudo make install 创建新版本链接 sudo ln -sf /usr/local/ssl/bin/openssl `which openssl` 命令行查看openssl版本 openssl ver

基于LNMP的Zabbbix之PHP源码安装

./configure后面的参数来源于:http://www.tuicool.com/articles/ZJfYzyF ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=daemon --with-fpm-group=daemon --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-p