安装和配置 Identity service(身份服务)keystone
本章节介绍在 Controller node(管理节点)安装和配置身份服务。
先决条件
在安装配置 OpenStack 身份服务前,你必须创建一个数据库和管理员令牌。
1. 创建数据库,并完成下列操作
A. 使用数据库命令行客户端,以 root 身份登录数据库服务器
# mysql -u root -p123
B. 创建 keystone 数据库
MariaDB [(none)]> CREATE DATABASEkeystone;
C. 授予数据库用户 keystone 访问 keystone 数据库的权限。
MariaDB [(none)]> GRANT ALL PRIVILEGESON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '123';
MariaDB [(none)]> GRANT ALL PRIVILEGESON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123';
替换123 为一个合适的密码。
安装并配置组件
1. 安装软件包
# yum install openstack-keystone httpdmod_wsgi –y
2. 编辑/etc/keystone/keystone.conf文件并完成下列操作:
注:
默认配置文件在各发行版本中可能不同。你可能需要添加这些部分和选项而不是修改已经存在的部分和选项。另外,在配置片段中的省略号(...)表示默认的配置选项你应该保留。
A. 在[database]小节,配置数据库访问:
[database]
# ...
connection =mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
替换 KEYSTONE_DBPASS 为合适的密码。
B. 在[token]小节,配置使用Fernet 技术提供令牌。
[token]
# ...
provider = fernet
3. 初始化身份服务数据库:
# su -s /bin/sh -c "keystone-managedb_sync" keystone
4. 初始化 Fernet key 仓库:
# keystone-manage fernet_setup--keystone-user keystone --keystone-group keystone
# keystone-manage credential_setup--keystone-user keystone --keystone-group keystone
5. 引导身份服务,创建管理员。
# keystone-manage bootstrap--bootstrap-password 123456\
--bootstrap-admin-urlhttp://controller:35357/v3/ \
--bootstrap-internal-urlhttp://controller:5000/v3/ \
--bootstrap-public-urlhttp://controller:5000/v3/ \
--bootstrap-region-id RegionOne
替换 ADMIN_PASS 为合适的密码。
配置 Apache HTTP 服务
1. 编辑/etc/httpd/conf/httpd.conf文件并配置 ServerName 配置项
为管理节点的主机名:
ServerName controller
2. 创建到文件/usr/share/keystone/wsgi-keystone.conf的链接:
# ln -s/usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
完成安装
1. 启动 Apache HTTP 服务并设置开机自动启动:
# systemctl enable httpd.service
# systemctl start httpd.service
2. 配置管理账号
# export OS_USERNAME=admin
# export OS_PASSWORD=ADMIN_PASS
# export OS_PROJECT_NAME=admin
# export OS_USER_DOMAIN_NAME=Default
# export OS_PROJECT_DOMAIN_NAME=Default
# exportOS_AUTH_URL=http://controller:35357/v3
# export OS_IDENTITY_API_VERSION=3
配置 ADMIN_PASS 为 keystone-manage bootstrap 命令中使用的密码
创建域,项目,用户和角色
身份服务为每一个 OpenStack 服务提供认证服务。认证服务使用一个 domain(域),projects(项目(tenants(租户))),users(用户)和roles(角色)的组合。
1. 在 openstack 环境中创建一个包含其他服务唯一账号的 service 项目,创建 service 项目:
# openstack project create --domain default--description "Service Project" service
2. 日常(非管理员)任务一般使用一个非特权项目和用户。在本手册中,创建 demo 项目和用户:
A. 创建 demo 项目:
# openstack project create --domain default--description "Demo Project" demo
B. 创建 demo 用户:
# openstack user create --domain default--password-prompt demo
C. 创建 user 角色:
# openstack role create user
D. 添加 user 角色到 demo 项目和用户:
# openstack role add --project demo --userdemo user
验证操作
在安装其他服务前,验证身份服务是否正常。
1. 由于安全的原因,关闭临时认证令牌机制。
编辑/etc/keystone/keystone-paste.ini 文件并移除[pipeline:public_api],[pipeline:admin_api], 和[pipeline:api_v3]小节的 admin_token_auth 项。‘
[pipeline:public_api]
# The last item in this pipeline must bepublic_service or an equivalent
# application. It cannot be a filter.
pipeline = healthcheck cors sizelimithttp_proxy_to_wsgi osprofiler url_normalize request_id build_auth_contexttoken_auth json_body ec2_extension public_service
[pipeline:admin_api]
# The last item in this pipeline must beadmin_service or an equivalent
# application. It cannot be a filter.
pipeline = healthcheck cors sizelimithttp_proxy_to_wsgi osprofiler url_normalize request_id build_auth_contexttoken_auth json_body ec2_extension s3_extension admin_service
2. 删除临时环境变量 OS_AUTH_URL 和 OS_PASSWORD:
# unset OS_AUTH_URL OS_PASSWORD
3. 使用 admin 用户,请求认证令牌
#openstack --os-auth-url http://controller:35357/v3 --os-project-domain-namedefault --os-user-domain-name default --os-project-name admin --os-usernameadmin token issue
4. 使用 demo 用户,请求认证令牌:
# openstack --os-auth-urlhttp://controller:5000/v3 --os-project-domain-name default--os-user-domain-name default --os-project-name demo --os-username demo tokenissue
创建 OpenStack 客户端环境脚本
为 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=ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
替换 ADMIN_PASS 为身份服务中 admin 用户的密码。
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=DEMO_PASS
exportOS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
替换 DEMO_PASS 为身份服务中 demo 用户的密码。
使用脚本
1. 加载 admin-openrc 文件用来填充身份服务中admin 项目和用户的
用户凭据到环境变量:
# . admin-openrc
2. 请求认证令牌
# openstack token issue