Ubuntu16手动安装OpenStack——keystone篇

目标

紧接着《Ubuntu16手动安装OpenStack——环境篇》,本文我们来安装keystone,主要参考Keystone Installation Tutorial for Ubuntu

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、登录mariadb
mysql -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-wsgi
apt -y install keystone apache2 libapache2-mod-wsgi

2、vim /etc/keystone/keystone.conf
编辑配置:

# line 606: uncomment and specify Memcache Server
memcache_servers = controller:11211
# line 740: change ( MariaDB connection info )
connection = mysql+pymysql://keystone:openstack@controller/keystone
# line 2891: add
[token]
provider = fernet

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数据库的数据,有数据的话说明执行成功。

如果在日志中看到报错:

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,重新执行命令。

4、初始化Fernet密钥存储库
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

5、引导身份服务,管理密码为openstack

keystone-manage bootstrap --bootstrap-password openstack \
  --bootstrap-admin-url http://controller:5000/v3/ \
  --bootstrap-internal-url http://controller:5000/v3/ \
  --bootstrap-public-url http://controller:5000/v3/ \
  --bootstrap-region-id RegionOne

配置apache

1、vim /etc/apache2/apache2.conf,添加:

# line 70: specify server name
ServerName controller

2、重启apache
service apache2 restart

3、新建环境变量配置keystonerc

export OS_USERNAME=admin
export OS_PASSWORD=openstack
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3

4、使环境变量生效
source keystonerc

5、测试
echo $OS_USERNAME

使用记录

创建域

Identity服务为每个OpenStack服务提供身份验证服务。身份验证服务使用域,项目,用户和角色的组合。

1、引导身份服务步骤中已存在“默认”域,但创建新域的正式方法是:
openstack domain create --description "An Example Domain" example

虚拟机中执行成功,但是实体机报错:

Failed to discover available identity versions when contacting http://controller:5000/v3. Attempting to parse version from URL.
Internal Server Error (HTTP 500)

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、查看域、项目、角色、用户

openstack domain list
openstack project list
openstack role list
openstack user list

验证操作

在安装其他服务之前验证Identity服务的操作。

1、取消设置临时OS_AUTH_URL和OS_PASSWORD环境变量:
unset OS_AUTH_URL OS_PASSWORD

2、作为admin用户,请求身份验证令牌:

openstack --os-auth-url http://controller:5000/v3 \
  --os-project-domain-name Default --os-user-domain-name Default \
  --os-project-name admin --os-username admin token issue

按照提示输入密码openstack。


image

3、作为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

按照提示输入密码openstack。


image

创建OpenStack客户端环境脚本

前面几节使用了环境变量和命令选项的组合,通过openstack客户端与Identity服务进行交互。为了提高客户端操作的效率,OpenStack支持简单的客户端环境脚本,也称为OpenRC文件。这些脚本通常包含所有客户端的常用选项,但也支持独特的选项。

创建脚本

为admin和demo项目和用户创建客户端环境脚本。接下来引用这些脚本来加载客户端操作的适当凭据。这些脚本在控制节点和计算节点都适用。

1、创建并编辑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=openstack
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

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=openstack
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

使用脚本

要将客户端作为特定项目和用户运行,只需在运行它们之前加载关联的客户端环境脚本即可。例如:

1、加载admin-openrc文件以使用Identity服务的位置以及管理项目和用户凭据填充环境变量:
. admin-openrc或者source admin-openrc

2、请求身份验证令牌:
openstack token issue

image
image
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容