5290589 发表于 2018-6-1 12:35:12

一步一步跟着官方文档安装部署Openstack(icehouse)二

  继安装部署OpenStack(一)
  

  三、配置身份识别服务(keystone)控制节点
  身份识别服务执行以下功能:
  用户管理,追踪用户和他们的权限
  作为其他服务的目录,提供了一个可用服务和他们API端点的目录
  

  为了明白身份识别服务,你要明白以下的概念:
  用户(User)         一串数字代表使用openstackyun服务的人、系统、服务,身份识别服务验证用户进来的请求,通过之后,会分配其令牌,用户可以凭借令牌访问他所在的容器
  证明材料(Credentials)             在身份识别中的用户名、密码或者令牌   

  验证 (Authentication)                   验证用户的一个动作
  令牌 (Token)                   用来访问资源的一串任意文本

  容器(Tenant)                  一个用来隔离资源或对象的容器
  服务(Service)                     一个openstack的服务,例如计算服务(nova),对象存储服务(swift),镜像服务(glance)等等。

  端点(Endpoint )                  一个网络访问地址,通常叫做URL,用来访问服务的地址
  角色 (Role)               一个角色是一些权限的一个集合,赋予一个用户这个角色,这个用户就有了角色里面的权限

  

  安装身份识别服务(keystone)
  在控制节点安装
# yum install openstack-keystone python-keystoneclient
    #修改配置文件中的mysql连接
# openstack-config --set /etc/keystone/keystone.conf \
database connection mysql://keystone:KEYSTONE_DBPASS@controller keystone  注:KEYSTONE_DBPASS修改为你的身份验证服务密码,这个命令也可以如下操作
  #或

#vim/etc/keystone/keystone.conf修改
database connection mysql://keystone:KEYSTONE_DBPASS@controller/keystone  上面的参数指定连接时,其语法格式为“mysql://:@/”。   

  以下命令都采用openstack-config的方式修改配置文件,大家理解即可!

  

  使用root登陆mysql,创建数据库,赋予keystone用户相关权限
$ mysql -u root -p
mysql> CREATE DATABASE keystone;
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
mysql> exit  为keystone创建表
su -s /bin/sh -c "keystone-manage db_sync" keystone  注意:这里可能会报警告信息,但是不是错误,大家忽略即可。(因为默认是debug级别)
  定义一个验证的令牌,以供keystone和其他服务使用
# ADMIN_TOKEN=$(openssl rand -hex 10)
# echo $ADMIN_TOKEN
# openstack-config --set /etc/keystone/keystone.conf DEFAULT \
admin_token $ADMIN_TOKEN  默认情况下,keystone使用PKI 令牌,所以创建签名和证书
# keystone-manage pki_setup --keystone-user keystone --keystone-group
keystone
# chown -R keystone:keystone /etc/keystone/ssl
# chmod -R o-rwx /etc/keystone/ssl  启动keystone服务,加入启动列表
# service openstack-keystone start
# chkconfig openstack-keystone on  

  定义用户,容器,角色
  定义环境变量

$ export OS_SERVICE_TOKEN=ADMIN_TOKEN
$ export OS_SERVICE_ENDPOINT=
http://controller:35357/v2.0  注:ADMIN_TOKEN就是上面生成的随机数字
  创建admin用户
$ keystone user-create --name=admin --pass=ADMIN_PASS --email=ADMIN_EMAIL  修改密码和邮箱
  创建admin角色
$ keystone role-create --name=admin  创建admin容器
$ keystone tenant-create --name=admin --description="Admin Tenant"  赋予admin用户admin角色和admin容器
$ keystone user-role-add --user=admin --tenant=admin --role=admin  系统默认有_member_角色,赋予admin
$keystone user-role-add --user=admin --role=_member_ --tenant=admin  创建一个demo用户,demo角色,demo容器,方法同上
  创建一个service容器,用来承载其他的openstack服务,每个openstack服务,都需要用户,角色,容器来访问其他的服务的,但是容器可以共享,这里共享一个service 容器,用户和角色可以在后面创建服务的时候建立。
$ keystone tenant-create --name=service --description="Service Tenant"  创建好之后查看下
# keystone user-list
+----------------------------------+--------+---------+------------------+
|                id                |name| enabled |      email       |
+----------------------------------+--------+---------+------------------+
| 2ff603a4178e449c9517be5ee33eebc3 | admin|   True|root@localhost|
| e725d18231f646fbb30a5410f3f4024e |demo|   True|demo@localhost|
| d8702a1bd0264dc7a55ffaebc0c3e58e | glance |   True| glance@localhost |
| afd793ac961b47feb42ce799f69c6b08 |nova|   True|nova@localhost|
+----------------------------------+--------+---------+------------------+#keystone role-list
+----------------------------------+----------+
|                id                |   name   |
+----------------------------------+----------+
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_ |
| bc312302997b468788ac91ae1faf9a5c |admin   |
+----------------------------------+----------+# keystone tenant-list
+----------------------------------+---------+---------+
|                id                |   name| enabled |
+----------------------------------+---------+---------+
| dc42d1e0d4fd4661bab1c4b8b55aaea5 |admin|   True|
| f3241e14bd6d4afebd4ef154f967b038 |   demo|   True|
| caee860fa57a4c44bafdeee2974148b1 | service |   True|
+----------------------------------+---------+---------+  

  定义服务和API端点
  在keystone中创建一个service条目
keystone service-create --name=keystone --type=identity \
--description="OpenStack Identity"
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | OpenStack Identity |
| id | 15c11a23667e427e91bc31335b45f4bd |
| name | keystone |
| type | identity |
+-------------+----------------------------------+  为keystone服务添加API端点
keystone endpoint-create \
--service-id=$(keystone service-list | awk '/ identity / {print $2}') \   注:这里service-id可以用上面的查看命令获取之后粘贴过来
--publicurl=http://controller:5000/v2.0 \
--internalurl=http://controller:5000/v2.0 \
--adminurl=

+-------------+-----------------------------------+
| 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 |
+-------------+-----------------------------------+  

  验证keystone服务的安装
  取消环境变量
$ unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT  使用基于用户名,密码的验证
$ keystone --os-username=admin --os-password=ADMIN_PASS \
--os-auth-url=http://controller:35357/v2.0 token-get  当你看到有你的user id和令牌的时候,keystone服务运行正常
  将变量保存到文件中,使用source是变量生效
vim admin-openrc.sh
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_TENANT_NAME=admin
export OS_AUTH_URL=
$ source admin-openrc.sh  这样就可以直接使用keystone的命令,不在需要提供用户名,密码了
  至此身份认证服务安装完成
  

  

  

  
页: [1]
查看完整版本: 一步一步跟着官方文档安装部署Openstack(icehouse)二