keystone部署及操作
目录
一 版本信息
二 部署keystone
三 keystone操作
四 验证
五 创建脚本
六 keystone使用套路总结
一、版本信息
官网http://docs.openstack.org/newton/install-guide-rdo/keystone.html
我们按照Newton这个版本来部署,其实跟大家讲,openstack基本保持每6个月更新一个版本,面对如此快的版本更迭,我们其实瞅准了一个版本深入研究下去就好,深入到什么层次,为社区提交代码。
二、部署keystone
参考官网http://docs.openstack.org/newton/install-guide-rdo/
系统信息
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.0.1406 (Core)
[root@localhost ~]# uname -r
3.10.0-123.el7.x86_64
step 1:准备阶段
yum -y install centos-release-openstack-newton #安装官方yum源
yum -y upgrade #更新
yum -y install python-openstackclient #安装工具
yum -y install openstack-selinux #安装openstack-selinux包自动管理openstack组件的安全策略
step 2:部署mariadb
安装
'''
keystone支持ldap和mysql作为后端Driver,用来存放用户相关信息,catalog等,这里我们选用mariadb
'''
yum -y install mariadb mariadb-server python2-PyMySQL
配置:/etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 192.168.31.57 #本机管理网络ip
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
启动服务且设置开机启动
systemctl start mariadb.service
systemctl enable mariadb.service
初始化数据库(可有可无)
mysql_secure_installation
step 3:部署keystone
keystone关于数据库的操作
mysql -u root -p #登入数据库
CREATE DATABASE keystone; #新建库keystone
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY '123'; #新建本地访问keystone库的账号
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY '123'; #新建远程访问keystone库的账号
安装软件包
#keystone软件包名openstack-keystone
#安装httpd和mod_wsgi的原因是,社区主推apache+keystone
#openstack-keystone本质就是一款基于wsgi协议的web app,而httpd本质就是一个兼容wsgi协议的web server,所以我们需要为httpd安装mod_wsgi模块
yum -y install openstack-keystone httpd mod_wsgi
配置:/etc/keystone/keystone.conf
#让openstack-keystone能够知道如何连接到后端的数据库keystone
#mysql+pymysql:pymysql是一个python库,使用python可以操作mysql原生sql
[database]
connection = mysql+pymysql://keystone:123@192.168.31.57/keystone
[token]
provider = fernet #fernet为生成token的方式
初始化数据库keystone
#之所以要初始化,是因为python的orm对象关系映射,需要初始化来生成数据库表结构
su -s /bin/sh -c "keystone-manage db_sync" keystone
初始化的时候可能会报错
初始化Fernet key仓库
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
step 4:配置web server整合keystone
修改本机主机名
hostnamectl set-hostname controller
配置/etc/hosts
192.168.31.57 controller
配置/etc/httpd/conf/httpd.conf
ServerName controller
为mod_wsgi模块添加配置文件
#直接拷贝模块文件或者做软连接都可以
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
启动httpd服务且设置开机自启
systemctl start httpd.service
systemctl enable httpd.service
三、keystone操作
part 1:创建keystone的catalog
配置/etc/keystone/keystone.conf
[DEFAULT]
admin_token = 123
设置环境变量
#OS_TOKEN=配置文件中的admin_token
#会在filter过滤过程中被admin_token_auth中间间设置is_admin=True
#谁有这个admin_token谁就是管理员了。
export OS_TOKEN=123 #等于keystone.conf中admin_token的值
export OS_URL=http://192.168.31.57:35357/v3
export OS_IDENTITY_API_VERSION=3
为keystone创建catalog
#基于上一步给的权限,创建认证服务实体
openstack service create \
--name keystone --description "OpenStack Identity" identity
#基于上一步建立的服务实体,创建访问该实体的三个api端点
openstack endpoint create --region RegionOne \
identity public http://192.168.31.57:5000/v3
openstack endpoint create --region RegionOne \
identity internal http://192.168.31.57:5000/v3
openstack endpoint create --region RegionOne \
identity admin http://192.168.31.57:35357/v3
part 2:创建域,租户,用户,角色,把四个元素关联到一起
The Identity service provides authentication services for each OpenStack service. The authentication service uses a combination of domains, projects, users, and roles.
建立一个公共的域名:
openstack domain create --description "Default Domain" default
创建管理员信息:
#创建admin项目
openstack project create --domain default \
--description "Admin Project" admin
#创建admin用户
openstack user create --domain default \
--password-prompt admin
#创建admin角色
openstack role create admin
#创建上述三者的关联
openstack role add --project admin --user admin admin
part 3:使用Bootstrap完成part1和part2二者的工作
Bootstrap the Identity service:
#本质就是在为keystone创建catalog
keystone-manage bootstrap --bootstrap-password 123 \
--bootstrap-admin-url http://192.168.31.57:35357/v3/ \
--bootstrap-internal-url http://192.168.31.57:35357/v3/ \
--bootstrap-public-url http://192.168.31.57:5000/v3/ \
--bootstrap-region-id RegionOne
设置环境变量(is_admin不会被设置成True,admin用户会获得一个Token)
export OS_USERNAME=admin
export OS_PASSWORD=123 #就是keystone-manage中设定的--bootstrap-password
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://192.168.31.57:35357/v3
export OS_IDENTITY_API_VERSION=3
part 4:创建用于后期测试用的项目,用户,租户,建立关联
创建project名为demo
openstack project create --domain default \
--description "Demo Project" demo
创建普通用户demo
openstack user create --domain default \
--password-prompt demo
创建普通用户的角色即user
openstack role create user
建立关联
openstack role add --project demo --user demo user
part 5:为后续的服务创建统一租户service
解释:后面每搭建一个新的服务都需要在keystone中执行四种操作:1.建项目 2.建用户 3.建角色 4.做关联
#后面所有的服务公用一个项目service,都是管理员角色admin
#所以实际上后续的服务安装关于keysotne的操作只剩2,4
openstack project create --domain default \
--description "Service Project" service
四 验证
part 1:准备
出于安全考虑,需要关闭临时令牌认证机制(配置文件中的admin_token和keystone-manage的--bootstrap-password都是基于该机制)
该机制会将用户的请求设置is_admin=True,源码分析中会介绍,先暂且理解到这里
编辑/etc/keystone/keystone-paste.ini
将
[pipeline:public_api]
[pipeline:admin_api]
[pipeline:api_v3]
中的admin_token_auth都去掉
取消一切设置的环境变量,如
unset OS_AUTH_URL OS_PASSWORD
part 2:验证操作方法一
管理员用户admin申请token
openstack --os-auth-url http://controller:35357/v3 \
--os-identity-api-version 3 \
--os-project-domain-name default \
--os-user-domain-name default \
--os-project-name admin \
--os-username admin \
token issue
注意:一定要加上--os-identity-api-version 3
普通用户demo申请token
openstack --os-auth-url http://controller:5000/v3 \
--os-identity-api-version 3 \
--os-project-domain-name default \
--os-user-domain-name default \
--os-project-name demo \
--os-username demo \
token issue
part 3:验证操作方法二
curl -i \
-H "Content-Type: application/json" \
-d '
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"domain":{
"name": "default"
},
"name": "admin",
"password": "123"
}
}
},
"scope": {
"project": {
"domain": {
"name":"default"
},
"name": "admin"
}
}
}
}' \
http://127.0.0.1:5000/v3/auth/tokens
五 创建脚本
为了不写一长串的用户信息,可以把他们定义成脚本的方式
admin-openrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=123
export OS_AUTH_URL=http://192.168.31.57:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
demo-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=123
export OS_AUTH_URL=http://192.168.31.57:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
针对不同的业务应该有不同的用户信息,也都应该定义成脚本形式,方便管理
我们的申请token操作简化成
source admin-openrc
openstack token issue
六 keystone使用套路总结
(1)user归属于一个或多个Project,并且在每个项目中充当一个角色。所以我们需要创建Project,创建User,创建Role,并将User和Project、Role关联起来;
创建域,租户,用户,角色,把四个元素关联到一起
建立一个公共的域名:
openstack domain create --description "Default Domain" default
管理员:admin
openstack project create --domain default \
--description "Admin Project" admin
openstack user create --domain default \
--password-prompt admin
openstack role create admin
openstack role add --project admin --user admin admin
普通用户:demo
openstack project create --domain default \
--description "Demo Project" demo
openstack user create --domain default \
--password-prompt demo
openstack role create user
openstack role add --project demo --user demo user
(2)Keystone本质是提供Identity服务的,所以它的实现或者提供的机制也是基于用户来设计的。为了提供服务目录,配置Keystone的时候创建了一个特殊的ServiceProject,为每个服务创建对应的用户(Nova, Swift, cinder...),并且都归属于ServiceProject。然后配置、设置相应的Endpoint。
为后续的服务创建统一租户service,所有的服务公用一个租户service
openstack project create --domain default \
--description "Service Project" service
建立服务实体service
openstack service create --name glance \
--description "OpenStack Image" image
建端点endpoint
openstack endpoint create --region RegionOne \
image public http://controller01:9292
openstack endpoint create --region RegionOne \
image internal http://controller01:9292
openstack endpoint create --region RegionOne \
image admin http://controller01:9292
六 创建脚本
为了不写一长串的用户信息,可以把他们定义成脚本的方式
admin-openrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=123
export OS_AUTH_URL=http://192.168.31.57:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
demo-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=123
export OS_AUTH_URL=http://192.168.31.57:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
针对不同的业务应该有不同的用户信息,也都应该定义成脚本形式,方便管理
我们的申请token操作简化成
source admin-openrc
openstack token issue
七 keystone使用套路总结
(1)user归属于一个或多个Project,并且在每个项目中充当一个角色。所以我们需要创建Project,创建User,创建Role,并将User和Project、Role关联起来;
(2)Keystone本质是提供Identity服务的,所以它的实现或者提供的机制也是基于用户来设计的。为了提供服务目录,配置Keystone的时候创建了一个特殊的ServiceProject,为每个服务创建对应的用户(Nova, Swift, cinder...),并且都归属于ServiceProject。然后配置、设置相应的Endpoint。
keystone部署及操作的更多相关文章
- openstack项目【day24】:keystone部署及操作
阅读目录 一 前言 二 版本信息 三 部署keystone 四 keystone操作 五 验证 六 创建脚本 七 keystone使用套路总结 一 前言 任何软件的部署都是没有技术含量的,任何就部署讲 ...
- keystone系列四:keystone部署及操作
一 前言 任何软件的部署都是没有技术含量的,任何就部署讲部署的人都是江湖骗子. 部署的本质就是拷贝,粘贴,回车.我们家养了条狗,它可以胜任这件事情. 我们搞技术的,一定不能迂腐:轻信或者一概不信. 轻 ...
- (原创)OpenStack服务如何使用Keystone(一)---Keystone端的操作
(一)Keystone端的操作 (二)如何在OpenStack服务上部署Keystone中间件 (三)详细配置keystonemiddleware OpenStack项目如果要使用Keystone作为 ...
- glance系列二:glance部署及操作
一 简单架构图示参考 更新中... 二 部署glance yum install memcached python-memcachedsystemctl enable memcached.servic ...
- openstack 之~keystone部署
第一:版本信息 官网http://docs.openstack.org/newton/install-guide-rdo/keystone.html 我们按照Newton这个版本来部署,opensta ...
- openstack(Pike 版)集群部署(二)--- Keystone 部署
一.介绍 参照官网部署:https://docs.openstack.org/keystone/queens/install/ 继续上一博客进行部署:http://www.cnblogs.com/we ...
- 云存储(Swift+Keystone)部署策略
Swift是OpenStack的对象存储模块,Keystone是OpenStack的权限验证模块.可以于这两个模块搭建一个较为完善的云存储系统. 1.官方方案 云存储的服务器分三种类型: 验证节点 A ...
- openstack之glance部署及操作
由于时间关系简单的架构图就先不展示了.后续的更新会贴上... 部署glance 安装memcache服务 yum install memcached python-memcached systemct ...
- openstack之keystone部署
前言 openstack更新频率是挺快的,每六个月更新一次(命名是是以A-Z的方式,Austin,Bexar...Newton).博主建议大家先可一种版本研究,等某一版本研究透彻了,在去研究新的版本. ...
随机推荐
- IntelliJ IDEA中使用Git
IntelliJ IDEA下使用Git IntelliJ IDEA下配置Git:git clone.git checkout.git diff.git log.git commit.git push. ...
- mysql锁之Next-Key Locks
一个Next-key锁结合了行锁和gap锁. InnoDB执行一个行级别锁在这样的一个途径,那就是它搜索或者扫描一个表索引时,它设置共享或者独占锁在它遭遇的索引记录上.于是,行级锁是真实的行记录锁.一 ...
- 处理get中文乱码
package com.servlet; import java.io.IOException; import java.io.PrintWriter; ...
- Doxygen详细介绍
1 序言 为代码写注释一直是大多数程序员有些困扰的事情.当前程序员都能接受为了程序的可维护性.可读性编码的同时写注释的说法,但对哪些地方应该写注释,注释如何写,写多少等这些问题,很多程序员仍然没有答案 ...
- 转 OpenFaaS 介绍
来源: https://thenewstack.io/openfaas-put-serverless-function-container/?utm_source=tuicool&utm_me ...
- 在web.config中配置httpHandlers节点是的说明
<system.web> <httpHandlers> <add verb="*" path="*.lcj" type=" ...
- bzoj 4671 异或图——容斥+斯特林反演+线性基
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4671 考虑计算不是连通图的方案,乘上容斥系数来进行容斥. 可以枚举子集划分(复杂度是O(Be ...
- 七、Jmeter + ant + jenkins轻量级接口自动化测试
七.Jmeter + ant + jenkins轻量级接口自动化测试 杀猪不用牛刀,工具没有牛逼高大尚之分,每个工具都有存在的理由:关键是看会不会用,怎么用,有没有用在合适的地方. 需要安装的工具: ...
- Windows2008 R2上完全卸载Oracle操作步骤(转)
最近现场项目,碰到了好几次oracle数据库被损坏,而且无法恢复的问题,没办法,只好卸载重装了.oracle卸载确实麻烦,都是从网上查的方法, 为了方便以后查询,在此就做一下记录. Windows20 ...
- Zabbix自定义监控网站服务是否能够正常响应
监测tcp连接数文件名: /etc/zabbix/zabbix_agentd.conf.d/count_tcp.conf UserParameter=count.tcp,netstat -s|g ...