cenos7.1 安装openstack kilo 心得之六 添加身份认证服务

注意:该部分只在控制节点

一、安装和配置
这一章描述了怎样在控制结点安装和配置Openstack身份认证服务
配置前的准备
在你配置 OpenStack 身份认证服务前,你必须创建一个数据库和管理员令牌。
1. 完成下面的步骤以创建数据库:
   a. 以 root 用户身份通过数据库客户端连接到数据库服务:
       $ mysql -u root -p

     b. 创建 keystone 数据库:
         CREATE DATABASE keystone;
    c. 为 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 替换为实际的密码。
    d. 退出数据库客户端。

          quit;
2. 生成一个随机值在初始的配置中作为管理员的令牌。
    $ openssl rand -hex 10
二、安装和配置组件
1. 运行以下命令来安装包。
   # yum install openstack-keystone python-keystoneclient
2. 编辑 /etc/keystone/keystone.conf ,并完成
下列操作:
    a. 在 [DEFAULT] 段中,对管理员令牌进行配置。
        [DEFAULT]
         ...
        admin_token = ADMIN_TOKEN
        将 ADMIN_TOKEN 替换为上一步中生成的随机字符串。
    b. 在 [database] 段,配置数据库访问相关参数:
       [database]
        ...
       connection = mysql://keystone:KEYSTONE_DBPASS@控制器/keystone
       将 KEYSTONE_DBPASS 替换为实际的数据库用户的密码。
    c. 在 [token] 部分,设置 UUID 令牌的提供者和 SQL 驱动。
       [token]
       ...
       provider = keystone.token.providers.uuid.Provider
      driver = keystone.token.persistence.backends.sql.Token
    d. 在 [revoke] 部分,配置 SQL 的撤回驱动:
      [revoke]
      ...
      driver = keystone.contrib.revoke.backends.sql.Revoke

   e. (可选配置)可以在 [DEFAULT] 段中开启详细日志配置,为后期的故障排除提供帮助:

      [DEFAULT]
      ...
     verbose = True

3. 生成通用的证书和私钥文件,并修改这些文件的访问权限:
# keystone-manage pki_setup --keystone-user keystone --keystone-group keystone
# chown -R keystone:keystone /var/log/keystone
# chown -R keystone:keystone /etc/keystone/ssl
# chmod -R o-rwx /etc/keystone/ssl

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

#keystone-manage db_sync

三、完成安装
1. 启动身份认证服务,并将该服务配为系统启动时自动启动:
# systemctl enable openstack-keystone.service
# systemctl start openstack-keystone.service
2. 身份认证服务默认的情况会永久保存已经过期的身份凭证。过期凭证的累积会增加数据
库的体积甚至减低整个服务的性能,特别是在那些资源紧缺的环境中。
建议使用 cron 配置计划任务每个小时定时清理过期的身份凭证:
# (crontab -l -u keystone 2>&1 | grep -q token_flush) || echo '@hourly /usr/bin/keystone-manage token_flush >/var/log/keystone/keystone-tokenflush.log  \

2>&1' >> /var/spool/cron/keystone

四、创建租户、用户和角色

1. 配置管理员令牌:
$ export OS_SERVICE_TOKEN=ADMIN_TOKEN
将其中的 ADMIN_TOKEN 替换为您在 “安装和配置”一节 [30] 中生成的管理员令牌。例
如:
$ export OS_SERVICE_TOKEN=294a4c8a8a475f9b9836

2. 配置入口点:
$ export OS_SERVICE_ENDPOINT=http://控制器:35357/v2.0

创建租户、用户和角色
1. 创建管理员租户、用户和角色以在您的环境中执行管理员操作:
a. 创建 admin 租户:
$ keystone tenant-create --name admin --description "Admin Tenant"
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | Admin Tenant |
| enabled | True |
| id | 6f4c1e4cbfef4d5a8a1345882fbca110 |
| name | admin |
+-------------+----------------------------------+

b. 创建 admin 用户:
$ keystone user-create --name admin --pass ADMIN_PASS --email EMAIL_ADDRESS
+----------+----------------------------------+
| Property | Value |
+----------+----------------------------------+
| email | admin@example.com |
| enabled | True |
| id | ea8c352d253443118041c9c8b8416040 |
| name | admin |
| username | admin |
+----------+----------------------------------+
将其中的 ADMIN_PASS 替换为您要设置的一个合适的密码,其中的 EMAIL_ADDRESS
替换为合适的 e-mail 地址。

c. 创建 admin 角色:
$ keystone role-create --name admin
+----------+----------------------------------+
| Property | Value |
+----------+----------------------------------+
| id | bff3a6083b714fa29c9344bf8930d199 |
| name | admin |
+----------+----------------------------------+

d. 将 admin 角色赋予给 admin 租户和用户:
$ keystone user-role-add --user admin --tenant admin --role admin

2. 创建一个 demo 租户和用户,用于环境中的一般操作:
a. 创建 demo 租户:

$ keystone tenant-create --name demo --description "Demo Tenant"
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | Demo Tenant |
| enabled | True |
| id | 4aa51bb942be4dd0ac0555d7591f80a6 |
| name | demo |
+-------------+----------------------------------+

b. 在 demo 租户下创建 demo 用户:
$ keystone user-create --name demo --tenant demo --pass DEMO_PASS --email EMAIL_ADDRESS
+----------+----------------------------------+
| Property | Value |
+----------+----------------------------------+
| email | demo@example.com |
| enabled | True |
| id | 7004dfa0dda84d63aef81cf7f100af01 |
| name | demo |
| tenantId | 4aa51bb942be4dd0ac0555d7591f80a6 |
| username | demo |
+----------+----------------------------------+
将其中的 DEMO_PASS 替换为您要设置的一个合适的密码,其中的 EMAIL_ADDRESS 替
换为合适的 e-mail 地址。

3. OpenStack 服务也需要租户、用户和角色来与其他服务交互。每个服务一般需要在
service 租户下创建一个或多个用户,并赋予 admin 的角色。
• 创建 service 租户:

$ keystone tenant-create --name service --description "Service Tenant"
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | Service Tenant |
| enabled | True |
| id | 6b69202e1bf846a4ae50d65bc4789122 |
| name | service |
+-------------+----------------------------------+

创建服务实体和 API 端点
创建好租户、用户和角色后,您必须为身份认证服务创建 service 实体和 API 端点。
配置前的准备
• 如 “创建租户、用户和角色”一节 [32] 中所描述的内容,设置 OS_SERVICE_TOKEN 和
OS_SERVICE_ENDPOINT 环境变量。
创建服务实体和 API 端点
1. 身份认证服务管理了一个关于您 OpenStack 环境中的服务的目录。服务使用这个目录来
查找您环境中的其他服务。
创建服务实体和身份认证服务:

$ keystone service-create --name keystone --type identity --description "OpenStack Identity"
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | OpenStack Identity |
| enabled | True |
| id | 15c11a23667e427e91bc31335b45f4bd |
| name | keystone |
| type | identity |
+-------------+----------------------------------+

2. 身份认证服务管理了一个与您环境相关的 API 端点的目录。服务使用这个目录来决定如
何与您环境中的其他服务进行通信。

创建身份认证服务的 API 端点:
$ keystone endpoint-create --service-id $(keystone service-list | awk '/ identity / {print $2}') --publicurl http://控制器:5000/v2.0 --internalurl http://控制器:5000/v2.0 \
--adminurl http://控制器:35357/v2.0 --region regionOne
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| adminurl | http://controller:35357/v2.0 |
| id | 11f9c625a3b94a3f8e66bf4e5de2679f |
| internalurl | http://controller:5000/v2.0 |
| publicurl | http://controller:5000/v2.0 |
| region | regionOne |
| service_id | 15c11a23667e427e91bc31335b45f4bd |
+-------------+----------------------------------+

验证操作
这个部分描述如何验证身份认证服务的操作。
1. 取消 OS_SERVICE_TOKEN 和 OS_SERVICE_ENDPOINT 临时环境变量的设置:
$ unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT
2. 使用admin 租户和用户,需要一个认证的令牌:
$ keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller:35357/v2.0 token-get
+-----------+----------------------------------+
| Property | Value |
+-----------+----------------------------------+
| expires | 2014-10-10T12:50:12Z |
| id | 8963eb5ccd864769a894ec316ef8f7d4 |
| tenant_id | 6f4c1e4cbfef4d5a8a1345882fbca110 |
| user_id | ea8c352d253443118041c9c8b8416040 |
+-----------+----------------------------------+
将其中的 ADMIN_PASS 替换为您在身份认证服务中为 admin 用户设置的密码。如果包含
特殊字符,您可能需要使用单引号 (') 将密码引用。

3. 使用 admin 租户和用户,列出租户以验证 admin 租户和用户能够执行只有管理员才能执
行的命令行,且身份认证服务包含您在 “创建租户、用户和角色”一节 [32] 中创建的
租户:
$ keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS --os-auth-url http://controller:35357/v2.0 tenant-list

+----------------------------------+----------+---------+
| id | name | enabled |
+----------------------------------+----------+---------+
| 6f4c1e4cbfef4d5a8a1345882fbca110 | admin | True |
| 4aa51bb942be4dd0ac0555d7591f80a6 | demo | True |
| 6b69202e1bf846a4ae50d65bc4789122 | service | True |
+----------------------------------+----------+---------+

4. 使用 admin 租户和用户,列出用户以验证身份认证服务包含您在 “创建租户、用户和
角色”一节 [32] 中创建的用户:

$ keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS \
--os-auth-url http://controller:35357/v2.0 user-list
+----------------------------------+---------+---------+---------------------+
| id | name | enabled | email |
+----------------------------------+---------+---------+---------------------+
| ea8c352d253443118041c9c8b8416040 | admin | True | admin@example.com |
| 7004dfa0dda84d63aef81cf7f100af01 | demo | True | demo@example.com |
+----------------------------------+---------+---------+---------------------+
5. 使用 admin 租户和用户,列出角色以验证 身份认证服务包含您在 “创建租户、用户和
角色”一节 [32] 中创建的角色:

$ keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS \
--os-auth-url http://controller:35357/v2.0 role-list
+----------------------------------+----------+
| id | name |
+----------------------------------+----------+
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_ |
| bff3a6083b714fa29c9344bf8930d199 | admin |
+----------------------------------+----------+

将其中的 DEMO_PASS 替换为您在身份认证服务中为 demo 用户所设置的密码。

7. 使用 demo 租户和用户,尝试列出用户以验证您不能执行只有管理员才能执行的命令
行:

$ keystone --os-tenant-name demo --os-username demo --os-password DEMO_PASS \
--os-auth-url http://controller:35357/v2.0 user-list
You are not authorized to perform the requested action, admin_required. (HTTP 403)

创建 OpenStack 客户端环境脚本

1. 编辑 admin-openrc.sh 文件并添加下列内容:
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://控制器:35357/v2.0

将其中的 ADMIN_PASS 替换为您在身份认证服务中为 admin 用户设置的密码。
2. 编辑 demo-openrc.sh 文件并添加下列内容:
export OS_TENANT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://控制器:5000/v2.0

将其中的 DEMO_PASS 替换为您在身份认证服务中为 demo 用户设置的密码。

加载客户端环境脚本
• 使用特定租户和用户运行客户端,您可以在运行之前简单地加载相关客户端脚本。例
如,加载身份认证服务的位置和 admin 租户及用户的凭证:
$ source admin-openrc.sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值