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

简易手动部署多节点的Openstack(L版)——贰(安装Keystone服务)

2017-07-04 18:41 1051 查看

基础准备

在控制节点中在数据库中为Keystone创建信息。

1、 用数据库连接客户端以 root 用户连接到数据库服务器:

mysql -u root -p


2、创建 keystone 数据库:

CREATE DATABASE keystone;


3、对
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

4、退出数据库客户端。

5、生成一个随机值在初始的配置中作为管理员的令牌:

openssl rand -hex 10


注:生成的令牌要记录一下,后面会用到。

安装并配置Keystone

1、安装后禁止keystone 服务自动启动:

echo "manual" > /etc/init/keystone.override

#此文档使用Apache HTTP服务器与mod_wsgi,在端口5000和35357处理认证服务请求。默认情况下,keystone服务依然监听在5000和35357端口。因此,禁用keystone 服务。


2、安装包:

apt-get install keystone apache2 libapache2-mod-wsgi \
memcached python-memcache


3、编辑文件 /etc/keystone/keystone.conf 并完成如下动作:

#在[DEFAULT]部分,定义管理员token初始值,用你在前一步生成的随机数替换 ADMIN_TOKEN :
[DEFAULT]
...
admin_token = ADMIN_TOKEN

#在 [DEFAULT]部分启用详细日志:
[DEFAULT]
...
verbose = True

#在[database]部分,配置数据库访问:
[database]
...
connection = mysql+pymysql://keyst
4000
one:KEYSTONE_DBPASS@controller/keystone
#KEYSTONE_DBPASS 替换为你为数据库选择的密码

#在[memcache]部分,配置Memcached服务:
[memcache]
...
servers = localhost:11211

#在[token]部分,配置UUID token provider 和Memcached驱动:
[token]
...
provider = uuid
driver = memcache

#在 [revoke] 部分,配置SQL 回滚驱动:
[revoke]
...
driver = sql


4、初始化身份认证服务的数据库:

su -s /bin/sh -c "keystone-manage db_sync" keystone


配置 Apache HTTP 服务器

1、编辑
/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
<IfVersion >= 2.4>
ErrorLogFormat "%{cu}t %M"
</IfVersion>
ErrorLog /var/log/apache2/keystone.log
CustomLog /var/log/apache2/keystone_access.log combined

<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</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
<IfVersion >= 2.4>
ErrorLogFormat "%{cu}t %M"
</IfVersion>
ErrorLog /var/log/apache2/keystone.log
CustomLog /var/log/apache2/keystone_access.log combined

<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
</VirtualHost>


3、开启认证服务虚拟主机:

ln -s /etc/apache2/sites-available/wsgi-keystone.conf /etc/apache2/sites-enabled


4、重启Apache HTTP服务器:

service apache2 restart


5、删除Ubuntu自动创建的SQLite数据库文件,因为本文档使用的是SQL服务器:

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


创建服务实体和API端点

1、配置认证令牌:

export OS_TOKEN=ADMIN_TOKEN
#ADMIN_TOKEN为本文章开始基础准备部分第五步生成的令牌


2、配置端点URL:

export OS_URL=http://controller:35357/v3


3、配置认证 API 版本:

export OS_IDENTITY_API_VERSION=3


4、为身份认证服务创建服务实体:

openstack service create \
--name keystone --description "OpenStack Identity" identity


5、创建认证服务的 API 端点:

#############public端点服务
openstack endpoint create --region RegionOne \
identity public http://controller:5000/v2.0 #############internal端点服务
openstack endpoint create --region RegionOne \
identity internal http://controller:5000/v2.0 #############admin
openstack endpoint create --region RegionOne \
identity admin http://controller:35357/v2.0[/code] 

为简单起见,本向导使用default 域。后续所有操作完成之后,dashboard登录界面会有个域的选择,在里面输入default之后在输入用户名和密码就可以登陆进去了。

创建项目、用户和角色

1、创建 admin 项目:

openstack project create --domain default \
--description "Admin Project" admin


2、创建 admin 用户:

openstack user create --domain default \
--password-prompt admin


3、创建 admin 角色:

openstack role create admin


4、添加
admin
角色到 admin 项目和用户上:

openstack role add --project admin --user admin admin


5、创建
service
项目:

openstack project create --domain default \
--description "Service Project" service


6、创建
demo
项目:

openstack project create --domain default \
--description "Demo Project" demo


7、创建
demo
用户:

openstack user create --domain default \
--password-prompt demo


8、创建 user 角色:

openstack role create user


9、添加 user
角色到
demo 项目和用户:

openstack role add --project demo --user demo user


你可以重复此过程来创建额外的项目和用户。

验证Keystone(控制节点)

1、因为安全性的原因,关闭临时认证令牌机制: 编辑 /etc/keystone/keystone-paste.ini 文件,从
[pipeline:public_api]
,[pipeline:admin_api]
[pipeline:api_v3]
部分删除
admin_token_auth 。

2、重置
OS_TOKEN
OS_URL
环境变量:

unset OS_TOKEN OS_URL


3、使用 admin 用户,请求认证令牌:

openstack --os-auth-url http://controller:35357/v3 \
--os-project-domain-id default --os-user-domain-id default \
--os-project-name admin --os-username admin
aa42
--os-auth-type password \
token issue

# 输入的密码是admin用户的密码


4、使用
demo
用户,请求认证令牌:

openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-id default --os-user-domain-id default \
--os-project-name demo --os-username demo --os-auth-type password \
token issue

#输入demo用户的密码


创建 OpenStack 客户端环境脚本

目的:提升客户端操作的效率。

1、编辑文件 admin-openrc.sh 并添加如下内容(创建可在任意目录下,没有特殊设置的话使用时也要在该目录中才行,所以请记住文件所在目录):

export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
# 把 ADMIN_PASS 替换为你在认证服务中为 admin 用户选择的密码


2、编辑文件 demo-openrc.sh 并添加如下内容(创建同上):

export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_NAME=demo
export OS_TENANT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
# 将 DEMO_PASS 替换为你在认证服务中为 demo 用户选择的密码


3、加载
admin-openrc.sh
文件,通过脚本中设置的环境变量和
admin
项目信息来进行认证,使客户端获取相应的tonken权限(脚本的使用):

source admin-openrc.sh


4、请求认证令牌:

openstack token issue


本文基于参考文章撰写,根据自己的理解对于翻译难以理解的部分进行了调整,此博文部署过程亲测可用。

参考文章:OpenStack官方文档
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: