您的位置:首页 > 运维架构

OpenStack-M版(Mitaka)搭建- – -身份认证服务(Keystone)篇

2016-11-27 13:20 751 查看
转载请注明:姬子的博客 » OpenStack-M版(Mitaka)搭建-
– -身份认证服务(Keystone)篇

Keystone

作为 OpenStack 的核心组件之一,为Nova、Glance、Swift、Cinder、Neutron和Horizon之间的通信提供认证服务。

包括:

1、管理用户及其权限

2、维护 OpenStack Services 的 Endpoint

3、Authentication(认证)和 Authorization(鉴权)

一、安装配置Keystone

以下操作均使用root权限并在controller节点执行

1、创建数据库及管理员令牌
mysql -u root -p


创建Keystone数据库

CREATE DATABASE keystone;


对``keystone``数据库授予恰当的权限(替换“123456”为你选的密码)
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \  IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \  IDENTIFIED BY '123456';


退出数据库
exit


生成一个随机值在初始的配置中作为管理员的令牌(将生成的值复制粘贴到记事本保存好!)
openssl rand -hex 10


2、安装组件

安装后禁止keystone 服务自动启动
echo "manual" > /etc/init/keystone.override


安装包

apt-get install keystone apache2 libapache2-mod-wsgi


编辑文件 /etc/keystone/keystone.conf 

在``[DEFAULT]``部分,定义初始管理令牌的值(将“10c8d32f5b7177240ffe”替换为你刚才保存的令牌)
[DEFAULT]
admin_token = 10c8d32f5b7177240ffe


在 [database] 部分,配置数据库访问(替换123456)
[database]
connection = mysql+pymysql://keystone:123456@controller/keystone


在``[token]``部分,配置Fernet UUID令牌的提供者
[token]
provider = fernet


初始化身份认证服务的数据库
su -s /bin/sh -c "keystone-manage db_sync" keystone


初始化Fernet keys
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone


配置apache http服务器

编辑``/etc/apache2/apache2.conf``文件,为控制节点配置``ServerName``选项
ServerName controller


使用下面的内容创建``/etc/apache2/sites-available/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-public   
    WSGIScriptAlias / /usr/bin/keystone-wsgi-public
    WSGIApplicationGroup %{GLOBAL}    
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/apache2/keystone.log
    CustomLog /var/log/apache2/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-admin    
    WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
    WSGIApplicationGroup %{GLOBAL}    
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/apache2/keystone.log
    CustomLog /var/log/apache2/keystone_access.log combined    
    <Directory /usr/bin>
        Require all granted   
    </Directory>
    </VirtualHost>


开启认证服务虚拟主机
ln -s /etc/apache2/sites-available/wsgi-keystone.conf /etc/apache2/sites-enabled


重启Apache HTTP服务器
service apache2 restart

rm -f /var/lib/keystone/keystone.db


3、配置服务实体和API端点

设置环境变量

vi /etc/profile


将以下内容写入环境变量(替换“10c8d32f5b7177240ffe”为你的管理员令牌)
export OS_TOKEN=10c8d32f5b7177240ffe
export OS_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3


保存退出,重启机器。

创建服务实体和身份认证服务
openstack service create \  
--name keystone --description "OpenStack Identity" identity


创建认证服务的 API 端点
openstack endpoint create --region RegionOne \  
identity public http://controller:5000/v3

openstack endpoint create --region RegionOne \  
identity internal http://controller:5000/v3

openstack endpoint create --region RegionOne \  
identity admin http://controller:35357/v3


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

创建域``default``
openstack domain create --description "Default Domain" default


创建 admin 项目
openstack project create --domain default \  
--description "Admin Project" admin


创建 admin 用户(输入一个你为admin选的密码并记下)
openstack user create --domain default \  
--password-prompt admin


创建 admin 角色
openstack role create admin


添加``admin`` 角色到 admin 项目和用户上
openstack role add --project admin --user admin admin


创建``service``项目
openstack project create --domain default \  
--description "Service Project" service


创建``demo`` 项目(演示项目)
openstack project create --domain default \  
--description "Demo Project" demo


创建``demo`` 用户(输入一个你为demo选的密码并记下)
openstack user create --domain default \  
--password-prompt demo


创建 user 角色
openstack role create user


添加 user``角色到 ``demo 项目和用户
openstack role add --project demo --user demo user


5、验证操作

关闭临时认证令牌机制
编辑 /etc/keystone/keystone-paste.ini 文件,
从``[pipeline:public_api]``,[pipeline:admin_api]``和``[pipeline:api_v3]``部分
删除``admin_token_auth


添加环境变量,重置``OS_TOKEN``和``OS_URL`` 环境变量
vi /etc/profile

unset OS_TOKEN OS_URL


保存退出,重启机器。

重启后,继续以下步骤

作为 admin 用户,请求认证令牌(输入密码)
openstack --os-auth-url http://controller:35357/v3 \  
--os-project-domain-name default --os-user-domain-name default \  
--os-project-name admin --os-username admin token issue


作为``demo`` 用户,请求认证令牌(输入密码)
openstack --os-auth-url http://controller:5000/v3 \  
--os-project-domain-name default --os-user-domain-name default \  
--os-project-name demo --os-username demo token issue


6、创建OpenStack客户端环境脚本

创建并编辑文件 "admin-openrc" 并添加如下内容(将"123456" 替换为你在认证服务中为 admin 用户选择的密码)
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= 
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2


创建并编辑文件 "demo-openrc" 并添加如下内容(将"123456" 替换为你在认证服务中为demo 用户选择的密码)
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://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2


加载``admin-openrc``文件来身份认证服务的环境变量位置和``admin``项目和用户证书
. admin-openrc


请求认证令牌

openstack token issue


至此,身份认证服务(Keystone)篇结束

下一篇为:镜像服务(Glance)篇

Done All ! Enjoy Yourself !

See You Again !
转载请注明:姬子的博客 » OpenStack-M版(Mitaka)搭建-
– -身份认证服务(Keystone)篇
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  openstack