<手动安装Openstack Mikita>之(二) Keystone安装
2016-08-01 15:53
561 查看
手动安装Openstack Mikita的第二部分: 认证服务Keystone安装. 这部分内容主要是对OpenStack Installation Guide for Red Hat Enterprise Linux and CentOS在Keystone这部分内容的实践总结.
其中, KEYSTONE_DBPASS是Keystone访问数据库时使用的密码.
编辑文件 /etc/keystone/keystone.conf :
其中, admin_token是我们在之前生成的ADMIN_TOKEN.
另外, 配置文件里可以设置debug来打印出更多的信息:
查看配置文件的修改结果:
以keystone用户的身份执行指令 keystone-manage db_sync , 同步Keystone的配置到数据库:
其中, su指令的参数意义如下:
Keystone有两个服务端口, 编辑文件 /etc/httpd/conf.d/wsgi-keystone.conf , 增加以下内容:
开启Apache HTTP服务:
Openstack的API是有版本号的.
如果需要访问一个服务, 就必须知道它的Endpoint. 一般以一个URL地址表示一个Endpoint, URL具有Public, Internal和Admin三种权限.
Public URL是为全局提供的服务端点;
Internal URL相对于Public URL来说提供内部服务之间的访问;
Admin URL是提供给管理员使用的.
为了便于扩展, Openstack划分了不同的region. 为了简化操作, 这里将所有的Endpoint都放在默认的region, 即RegionOne中.
一. 安装前准备
首先, 我们将Keystone组件安装在controller节点. 以下操作均在controller节点进行.1. 为Keystone创建数据库
[root@controller ~]# mysql -u root -p CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
其中, KEYSTONE_DBPASS是Keystone访问数据库时使用的密码.
2. 安装keystone组件
[root@controller ~]# yum install openstack-keystone httpd mod_wsgi
3. 配置Keystone
生成ADMIN_TOKEN:[root@controller ~]# openssl rand -hex 10 466fda4062e7b0e1fb60
编辑文件 /etc/keystone/keystone.conf :
[DEFAULT] ... admin_token = 466fda4062e7b0e1fb60 [database] ... connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone [token] ... provider = fernet
其中, admin_token是我们在之前生成的ADMIN_TOKEN.
另外, 配置文件里可以设置debug来打印出更多的信息:
查看配置文件的修改结果:
以keystone用户的身份执行指令 keystone-manage db_sync , 同步Keystone的配置到数据库:
[root@controller ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone
其中, su指令的参数意义如下:
-s Runs the specified shell instead of the default. -c Pass command to the shell with the -c option.
4. 初始化 Fernet keys
[root@controller ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
5. 配置Apache HTTP server
编辑文件 /etc/httpd/conf/httpd.conf :ServerName 10.0.0.11 # 添加
Keystone有两个服务端口, 编辑文件 /etc/httpd/conf.d/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/httpd/keystone-error.log CustomLog /var/log/httpd/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/httpd/keystone-error.log CustomLog /var/log/httpd/keystone-access.log combined <Directory /usr/bin> Require all granted </Directory> </VirtualHost>
开启Apache HTTP服务:
[root@controller ~]# systemctl enable httpd.service [root@controller ~]# systemctl start httpd.service
二. 创建Service和API Endpoint
Keystone提供服务目录的功能, 这个服务目录记录了当前Openstack环境中所有服务以及对应的Endpoints. 通过这个服务目录, 某服务才能找到其它服务的入口. Openstack的所有服务都必须在这个服务目录进行注册, 包含Keystone自己. 这部分我们将注册Keystone服务.1. 环境变量
根据Openstack的业务逻辑, 所有的服务在使用前要先向Keystone请求token. 这里我们注册Keystone也需要先向Keystone请求token. 但是由于此时我们还处于初始化Keystone的状态, 目前还没有用户. 因此我们使用一个临时的token. 这个token也就是我们在配置Keystone的时候设置的ADMIN_TOKEN. 为了在请求的时候使用这个ADMIN_TOKEN, 我们将其加入到环境变量中.Openstack的API是有版本号的.
[root@controller ~]# export OS_TOKEN=466fda4062e7b0e1fb60 [root@controller ~]# export OS_URL=http://controller:35357/v3 [root@controller ~]# export OS_IDENTITY_API_VERSION=3
2. 创建Keystone服务和Endpoint
指令的具体功能可以在OpenStack Docs: OpenStack command-line client查到. 或者直接加上 -h 参数来查看.(1) 创建keystone服务
[root@controller ~]# openstack service create --name keystone --description "OpenStack Identity" identity
如果需要访问一个服务, 就必须知道它的Endpoint. 一般以一个URL地址表示一个Endpoint, URL具有Public, Internal和Admin三种权限.
Public URL是为全局提供的服务端点;
Internal URL相对于Public URL来说提供内部服务之间的访问;
Admin URL是提供给管理员使用的.
为了便于扩展, Openstack划分了不同的region. 为了简化操作, 这里将所有的Endpoint都放在默认的region, 即RegionOne中.
(2) 创建Endpoints
[root@controller ~]# openstack endpoint create --region RegionOne \ identity public http://controller:5000/v3 [root@controller ~]# openstack endpoint create --region RegionOne \ identity internal http://controller:5000/v3 [root@controller ~]# openstack endpoint create --region RegionOne \ identity admin http://controller:35357/v3[/code]
Keystone为每一个Openstack的服务提供了认证功能. 认证服务包括了域(domain), 租户(projects或tenants), 用户(users)和角色(roles).(3) 创建默认的域
[root@controller ~]# openstack domain create --description "Default Domain" default(4) 创建admin租户
[root@controller ~]# openstack project create --domain default \ --description "Admin Project" admin(5) 创建admin用户
用户总是绑定到租户上. 在创建时要输入用户密码. 这里的用户密码为zzr.[root@controller ~]# openstack user create --domain default \ --password-prompt admin(6) 创建admin角色, 用户的权限是由用户的角色决定的
[root@controller ~]# openstack role create admin(7) 把admin角色加入到admin租户和admin用户
[root@controller ~]# openstack role add --project admin --user admin admin
以上这些我们创建的角色都可以在对应的Openstack目录中的 policy.json 文件中找到. 如Keystone的相关认证策略就可以在文件 /etc/keystone/policy.json 找到.(8) 创建servce租户
[root@controller ~]# openstack project create --domain default \ --description "Service Project" service(9) 建立一個一般使用者的project, user和role, 来提供后续的权限验证测试
[root@controller ~]# openstack project create --domain default \ --description "Demo Project" demo [root@controller ~]# openstack user create --domain default \ --password-prompt demo [root@controller ~]# openstack role create user [root@controller ~]# openstack role add --project demo --user demo user3. 验证
(1) 移除临时ADMIN_TOKEN
在之前的初始化中, 由于我们没有admin用户, 所以我们使用了ADMIN_TOKEN来作为访问Keystone服务的临时token. 此时, 我们已经完成了创建admin用户的工作, 因此, 出于安全考虑, 我们移除ADMIN_TOKEN的访问权限.
编辑文件 /etc/keystone/keystone-paste.ini , 删除掉
[pipeline:public_api]
[pipeline:admin_api]
[pipeline:api_v3]
这三个section中的 admin_token_auth .
同时移除之前设置的环境变量:unset OS_TOKEN OS_URL(2) 测试: 请求token
请求token的指令为: openstack token issue .
以admin用户的身份请求认证token:[root@controller ~]# 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用户(即普通用户)的身份请求认证token:[root@controller ~]# 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(3) 查看数据库
以上信息在数据库中都可以查询得到:4. 环境脚本
(1) 创建脚本
在上面的操作中, 我们使用了环境变量和命令参数两种方式来调用Openstack指令. 为了进一点简化操作, 可以使用环境脚本, 即OpenRC files. 关于该脚本的更多信息可以在OpenStack Docs: Set environment variables using the OpenStack RC file中获得.
创建文件 admin-openrc , 这里将这两个文件放置在 /root , 即root用户的 ~ 目录下:export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_PROJECT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=zzr export OS_AUTH_URL=http://controller:35357/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
创建文件 emo-openrc :export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_PROJECT_NAME=demo export OS_USERNAME=demo export OS_PASSWORD=zzr export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2(2) 使用脚本
有了这些脚本以后, 就可以通过这些脚本从而以某个租户的某个用户的身份执行指令. 如, 在上面的验证中, 我们以admin租户的admin用户身份请求了一个新的token. 通过环境脚本我们可以如下进行同样的操作:
切换环境变量:[root@controller ~]# . admin-openrc
以admin租户的admin用户身份请求新的token:[root@controller ~]# openstack token issue参考文献
OpenStack Installation Guide for Red Hat Enterprise Linux and CentOS
OpenStack Mitaka 安裝 for CentOS — Kyle.Bai
OpenStack Liberty
OpenStack Docs: OpenStack command-line client
相关文章推荐
- <手动安装Openstack Mikita>之(五) Horizon安装
- <手动安装Openstack Mikita>之(三) Glance安装
- <手动安装Openstack Mikita>之(四) Nova安装
- Centos7手动部署Openstack Mitaka版安装配置--(三)安装keystone认证服务
- OpenStack云计算入门指南——<br/>2.安装和配置
- Centos0S7手动安装OpenStack Pike版--(keystone)
- 手动安装liberty版本openstack环境(allinone)---安装keystone
- Centos7手动安装OpenStack Mitaka版本--KeyStone安装
- OpenStack 安装部署手册——<br/>3.安装假设
- 简易手动部署多节点的Openstack(L版)——贰(安装Keystone服务)
- 从源代码编译安装Qt开发工具如(KDevelop)时遇到:Qt (>= Qt 3.3 and < 4.0)解决方法
- 关于apk安装时,Packagepaser报错: <provider> does not incude authorities attribute
- 【转】<亲测>redhat 9.0安装出错无法打开xpdf-2.01-8软件包解决办法
- 虚拟机中安装windows8错误-HAL_INITIALIZATION_FAILED和<ProductKey>
- 敏捷开发Maven实践论<一>Maven的安装与配置
- MATLAB7.0安装后显示The element type "name" must be terminated by the matching end-tag "</name>".
- MongoDB安装以及java开发入门<二>
- MOSS2007中型服务场配置 教材<02>: Web Server 安装 -- ITSMOSS07D01
- VM8.0下安装遇到了问题“windows cannot read the<product key> setting from the unattend answer file”解决方法
- VM8.0下安装遇到了问题“windows cannot read the<product key> setting from the unattend answer file”解决方法