Ubuntu16手动安装OpenStack——keystone篇
本博客来自于https://www.voidking.com/dev-ubuntu16-manual-openstack-keystone/
赶紧做笔记
keystone简介
OpenStack身份识别服务集成了身份验证,授权和服务目录。
身份服务通常是用户与之交互的第一个服务。一旦通过身份验证,终端用户就可以使用他们的身份访问其他OpenStack服务。同样,其他OpenStack服务利用身份服务来确保用户是他们所说的人,并发现其他服务的位置。身份识别服务还可以与一些外部用户管理系统(如LDAP)集成。
用户和服务可以通过使用由身份服务管理的服务目录来定位其他服务。顾名思义,服务目录是OpenStack部署中可用服务的集合。每个服务可以有一个或多个端点,每个端点可以是以下三种类型之一:admin,internal或public。在生产环境中,出于安全原因,不同类型的终端类型可能会驻留在暴露给不同类型用户的单独网络中。例如,公共API网络可能从互联网上可见,因此客户可以管理他们的云。管理API网络可能仅限于管理云基础架构的组织中的运营商。内部API网络可能仅限于包含OpenStack服务的主机。另外,OpenStack支持多个区域的可伸缩性。为简单起见,本指南针对所有端点类型和默认的RegionOne区域使用管理网络。在身份服务中创建的区域,服务和端点一起构成部署的服务目录。部署中的每个OpenStack服务都需要一个服务条目,并在Identity服务中存储相应的端点。这可以在Identity Service安装和配置完成后完成。
身份服务包含以下组件:
服务器
集中式服务器使用RESTful接口提供认证和授权服务。
驱动程序
驱动程序或服务后端集成到中央服务器。它们用于访问OpenStack外部存储库中的身份信息,并且可能已存在于部署OpenStack的基础架构中(例如,SQL数据库或LDAP服务器)。
模块
中间件模块运行在使用Identity服务的OpenStack组件的地址空间中。这些模块拦截服务请求,提取用户凭据并将其发送到中央服务器进行授权。中间件模块和OpenStack组件之间的集成使用Python Web服务器网关接口。
安装记录
本节记录如何在控制节点上安装和配置代号为keystone的OpenStack Identity服务。出于可伸缩性的目的,此配置会部署Fernet令牌和Apache HTTP服务器来处理请求。
root用户
为了避免权限问题,建议切换到root用户进行操作(否则要加很多sudo)。sudo -i
数据库配置
1、登录mariadbmysql -uroot -p,密码为openstack。
2、创建keystone数据库CREATE DATABASE keystone;
3、创建keystone用户,密码为openstack,并授权访问keystone数据库GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'openstack';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'openstack';
4、退出exit;
5、测试登录
mysql -h localhost -ukeystone -p
mysql -h controller -ukeystone -p
安装组件
1、安装keystone、apache2和libapache2-mod-wsgiapt -y install keystone apache2 libapache2-mod-wsgi
2、vim /etc/keystone/keystone.conf
编辑配置:
1 |
# line 606: uncomment and specify Memcache Server |
3、生成keystone数据库的数据
su -s /bin/bash keystone -c "keystone-manage db_sync"
(非root用户执行sudo keystone-manage db_sync)
查看日志:tail /var/log/keystone/keystone-manage.log,看到done说明执行成功。
不放心的话,可以登录mariadb查看keystone数据库的数据,有数据的话说明执行成功。
如果在日志中看到报错:
1 |
2018-06-30 18:37:40.845 4964 WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 6 attempts left.: DBConnectionError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'controller' ([Errno 111] Connection refused)") (Background on this error at: http://sqlalche.me/e/e3q8) |
这是因为,mysql可能绑定了IP。
执行netstat -an | grep 3306查看,如果只看到127.0.0.1,那么说明确实绑定了IP。
解决办法是编辑50-server.cnf,把bind-address = 127.0.0.1注释掉,然后重启mariadb,重新执行命令。
解决办法二:若 keystone 数据库同步不成功,可以查看 log 文件找到故障原因。若 utf8 故障可以用下列方法:
(1)修改/etc/mysql/mariadb.conf.d/目录下的文件“50-client.cnf 50-mysql-clients.cnf 50-server.cnf”文件:
将 其 中 的 utf8mb4
修 改 为 utf8 (2)mariadb 修改允许远程访问
Sed-is/127.0.0.1/0.0.0.0/g'/etc/mysql/mariadb.conf.d/50-server.cnf
4、初始化Fernet密钥存储库keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
5、引导身份服务,管理密码为openstack
1 |
keystone-manage bootstrap --bootstrap-password openstack \ |
配置apache
1、vim /etc/apache2/apache2.conf,添加:
1 |
# line 70: specify server name |
2、重启apacheservice apache2 restart
3、新建环境变量配置keystonerc
1 |
export OS_USERNAME=admin |
4、使环境变量生效source keystonerc
5、测试echo $OS_USERNAME
使用记录
创建域
Identity服务为每个OpenStack服务提供身份验证服务。身份验证服务使用域,项目,用户和角色的组合。
1、引导身份服务步骤中已存在“默认”域,但创建新域的正式方法是:openstack domain create --description "An Example Domain" example
虚拟机中执行成功,但是实体机报错:
1 |
Failed to discover available identity versions when contacting http://controller:5000/v3. Attempting to parse version from URL. |
netstat -an | grep 5000,发现5000端口服务已经启动。
查看keystone日志,没有新的内容,说明根本没有连接成功。
尝试了重新导入数据,重新安装数据库,都失败了。
如果看到同样的错误,那么极有可能之前安装devstack遗留的问题,最终重装系统后再次安装,执行成功。
2、在default域下创建service项目:openstack project create --domain default --description "Service Project" service
3、常规(非管理员)任务应使用非特权项目和用户。创建demo项目:openstack project create --domain default --description "Demo Project" demo
4、创建demo用户:openstack user create --domain default --password-prompt demo
按照提示设置密码为openstack。
5、创建user角色:openstack role create user
6、将user角色添加到demo项目和demo用户openstack role add --project demo --user demo user
7、查看域、项目、角色、用户
1 |
openstack domain list |
验证操作
在安装其他服务之前验证Identity服务的操作。
1、取消设置临时OS_AUTH_URL和OS_PASSWORD环境变量:unset OS_AUTH_URL OS_PASSWORD
2、作为admin用户,请求身份验证令牌:
1 |
openstack --os-auth-url http://controller:5000/v3 \ |
按照提示输入密码openstack。
3、作为demo用户,请求身份验证令牌:
1 |
openstack --os-auth-url http://controller:5000/v3 \ |
按照提示输入密码openstack。
创建OpenStack客户端环境脚本
前面几节使用了环境变量和命令选项的组合,通过openstack客户端与Identity服务进行交互。为了提高客户端操作的效率,OpenStack支持简单的客户端环境脚本,也称为OpenRC文件。这些脚本通常包含所有客户端的常用选项,但也支持独特的选项。
创建脚本
为admin和demo项目和用户创建客户端环境脚本。接下来引用这些脚本来加载客户端操作的适当凭据。这些脚本在控制节点和计算节点都适用。
1、创建并编辑admin-openrc文件并添加以下内容:
1 |
export OS_PROJECT_DOMAIN_NAME=Default |
2、创建并编辑demo-openrc文件并添加以下内容:
1 |
export OS_PROJECT_DOMAIN_NAME=Default |
使用脚本
要将客户端作为特定项目和用户运行,只需在运行它们之前加载关联的客户端环境脚本即可。例如:
1、加载admin-openrc文件以使用Identity服务的位置以及管理项目和用户凭据填充环境变量:. admin-openrc或者source admin-openrc
2、请求身份验证令牌:openstack token issue


Ubuntu16手动安装OpenStack——keystone篇的更多相关文章
- Ubuntu16手动安装OpenStack——glance篇--转
全文转自https://www.voidking.com/dev-ubuntu16-manual-openstack-glance/ 目标 紧接着<Ubuntu16手动安装OpenStack—— ...
- Ubuntu16手动安装OpenStack——nova篇。。转
前言: 本文转自https://www.voidking.com/dev-ubuntu16-manual-openstack-nova/ ,过程非常的详细,作者也说本实验最终失败,因为课程要求我们只要 ...
- Ubuntu16手动安装OpenStack
记录大佬的博客全文转载于https://www.voidking.com/dev-ubuntu16-manual-openstack-env/ 前言 <Ubuntu16安装OpenStack&g ...
- ubuntu16.0 安装 openstack
主要参考官方文档:https://docs.openstack.org/liberty/zh_CN/install-guide-ubuntu/environment-nosql-database.ht ...
- 手动安装OpenStack Mistral
Prepare packages: $ sudo apt-get install python-dev python-setuptools python-pip libffi-dev libxslt1 ...
- openstack奠基篇:devstack (liberty)于centos 7安装
openstack是什么,能做什么,我就不说了,他的优势和伟大,可以想想AWS的云服务平台.学习和研究openstack(IaaS),个人的习惯是有一个可以操作的平台,然后结合代码看看详细逻辑,这个过 ...
- Ubuntu 14.04 LTS 安装 Juno 版 OpenStack Keystone
本文介绍如何在Ubuntu 14.04 LTS 上安装Juno版的Keystone, 我们采用的是手动安装的方式, 同时仅针对OpenStack的身份与访问管理系统Keystone. 事实上OpenS ...
- OpenStack Keystone安装部署流程
之前介绍了OpenStack Swift的安装部署,采用的都是tempauth认证模式,今天就来介绍一个新的组件,名为Keystone. 1. 简介 本文将详细描述Keystone的安装部署流程,并给 ...
- OpenStack 安装:keystone服务
在前面的章节里面,我们配置了基本环境,也安装keystone服务,并且创建了keystone的数据库,在这一篇里面,我们说怎么配置keystone. 首先编辑keystone服务,需要修改如下数据 编 ...
随机推荐
- Little Elephant and Array CodeForces - 220B (莫队)
The Little Elephant loves playing with arrays. He has array a, consisting of npositive integers, ind ...
- Codeforces 837D 动态规划
Codeforces 837D 动态规划 传送门:https://codeforces.com/contest/837/problem/D 题意: 给你n个数,问你从这n个数中取出k个数,这k个数的乘 ...
- 17.python文件处理
原文:https://www.cnblogs.com/linhaifeng/articles/5984922.html 文件处理流程: 1. 打开文件,得到文件句柄并赋值给一个变量2. 通过句柄对文件 ...
- Visio数据视觉化处理
形状数据的查看的两种方式 定义形状数据:右键单击数据窗口 打勾的代表可以显示 其他没有打勾的就必须要在开发模式才会显示出来 开发模式就是打开开发工具面板 注意其中类型的设置 类型与格式是一一对应的 不 ...
- TCP/IP||Ping
1.what's PING 由Mike Muuss编写,为了测试另一台主机是否可达,发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答,如果不能PING到某台主机,那么就不能Telnet或 ...
- Spring JDBC操作数据库示例
1.所需jar包 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncodi ...
- 洛谷$P5329\ [SNOI2019]$字符串 字符串
正解:字符串 解题报告: 传送门$QwQ$ 有两个很妙的方法,分别港下$QwQ$ 首先为了表示方便,这里和题面一样设$s_i$表示去掉第$i$个字母得到的字符串.另设$lcp(i,j)$表示$suf_ ...
- 洛谷$P2469\ [SDOI2010]$ 星际竞速 网络流
正解:网络流 解题报告: 传送门$QwQ$ 题目好长昂,,,大概概括下就说有$m$条单向边,$n$个点,每条边有一条边权,每个点有一个点权,然后问每个点都要到达一遍的最小代价是多少$QwQ$? 发现有 ...
- 洛谷$P3302$ 森林 $[SDOI2013]$ 主席树
正解:主席树 解题报告: 传送门! 口胡一时爽代码火葬场 这题想法不难,,,但显然的是代码应该还挺难打的 但反正我也不放代码,就写下题解趴$QwQ$ 第一问就是个$Count\ on\ a\ tree ...
- Lyft Level 5 Challenge 2018 - Final Round (Open Div. 2) (前三题题解)
这场比赛好毒瘤哇,看第四题好像是中国人出的,怕不是dllxl出的. 第四道什么鬼,互动题不说,花了四十五分钟看懂题目,都想砸电脑了.然后发现不会,互动题从来没做过. 不过这次新号上蓝名了(我才不告诉你 ...