二、认证服务 keystone部署
python
控制节点:mysql
2.一、安装和配置服务sql
2.1.一、建库建用户数据库
mysql -u root -papache
CREATE DATABASE keystone;api
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'P@ssw0rd';安全
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'P@ssw0rd';dom
flush privileges;ide
2.1.二、安装相关包网站
yum install openstack-keystone httpd mod_wsgi -y
以下图所示安装缺失的rpm包,不知道是否是离线源没下载好,附带网站连接:https://pkgs.org/
在网站上直接搜索缺失的rpm包就能够了,确实2个包,可是其中一个包有依赖包,因此最终下载安装3个包:
python-jinja2-2.7.2-4.el7.noarch.rpm
python-markupsafe-0.11-10.el7.x86_64.rpm
python-zope-interface-4.0.5-4.el7.x86_64.rpm
而后安装成功
2.1.三、生成一个随机值在初始的配置中做为管理员的令牌:
[root@controller ~]# openssl rand -hex 10
38cffecbd035b2589040
2.1.四、编辑/etc/keystone/keystone.conf
[DEFAULT]
admin_token = 38cffecbd035b2589040
#这里的做用主要是先手动指定admin_token,为了部署keystone,由于keystone没部署,认证环节还不能工做,等keystone部署好,会把手动指定admin_token认证方式去掉
[database]
connection = mysql+pymysql://keystone:P@ssw0rd@controller/keystone
[token]
provider = fernet
2.1.五、同步修改到数据库 ---多是虚拟机比较卡,这一步等了两分钟
su -s /bin/sh -c "keystone-manage db_sync" keystone
2.1.六、初始化fernet keys
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
2.1.七、配置apache服务 ---这里的名称就是主机名
vi /etc/httpd/conf/httpd.conf
ServerName controller
vi /etc/httpd/conf.d/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
ErrorLogFormat "%{cu}t %M"
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
Require all granted
</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
ErrorLogFormat "%{cu}t %M"
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
Require all granted
</Directory>
</VirtualHost>
---不知道是否是粘贴复制的缘由,从这里复制的失败了,从官方文档复制的内容就成功启动了httpd
2.1.八、启动服务:
# systemctl enable httpd
# systemctl start httpd
2.二、建立服务实体和API端点
2.2.一、实现配置管理员环境变量,用于获取后面建立的权限
export OS_TOKEN=38cffecbd035b2589040
#要与前面的/etc/keystone/keystone.conf中的admin_token相同
export OS_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
2.2.二、基于上一步给的权限,建立认证服务实体(目录服务)
openstack service create --name keystone --description "OpenStack Identity" identity
#如遇到报500错误,ArgsAlreadyParsedError: arguments already parsed: cannot register CLI option,可把--description "OpenStack Identity"去掉
2.2.三、基于上一步创建的服务实体,建立访问该实体的三个api端点
openstack endpoint create --region RegionOne identity public http://controller:5000/v3
openstack endpoint create --region RegionOne identity internal http://controller:5000/v3
openstack endpoint create --region RegionOne identity admin http://controller:35357/v3
2.三、建立域,租户,用户,角色
2.3.一、建立域``default``:
openstack domain create --description "Default Domain" default
2.3.二、为进行管理操做,建立管理的项目、用户和角色
建立 admin 项目:
openstack project create --domain default --description "Admin Project" admin
建立 admin 用户: --默认密码:P@sswrd
openstack user create --domain default --password-prompt admin
建立 admin 角色:
openstack role create admin
添加``admin`` 角色到 admin 项目和用户上:
openstack role add --project admin --user admin admin
2.3.三、本指南使用一个你添加到你的环境中每一个服务包含独有用户的service 项目。建立``service``项目:
为后续的服务建立统一租户service
解释:后面每搭建一个新的服务都须要在keystone中执行四种操做:1.建租户 2.建用户 3.建角色 4.作关联
后面全部的服务公用一个租户service,都是管理员角色admin,因此实际上后续的服务安装关于keysotne的操做只剩2,4
openstack project create --domain default --description "Service Project" service
2.3.四、常规(非管理)任务应该使用无特权的项目和用户,建立 demo 项目和用户
普通用户:demo
openstack project create --domain default --description "Demo Project" demo
openstack user create --domain default --password-prompt demo
默认密码:P@ssw0rd
openstack role create user
openstack role add --project demo --user demo user
2.四、验证操做:
2.4.一、由于安全性的缘由,关闭临时认证令牌机制:
编辑 /etc/keystone/keystone-paste.ini 文件,从``[pipeline:public_api]``,[pipeline:admin_api]``和``[pipeline:api_v3]``部分删除``admin_token_auth 。
下图三个红色方框内的admin_token_auth所有删除
下图为删除后的配置
2.4.二、重置``OS_TOKEN``和``OS_URL`` 环境变量:
# unset OS_TOKEN OS_URL
2.4.三、做为 admin 用户,请求认证令牌:
# openstack --os-auth-url http://controller:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue
注解:这个命令使用``admin``用户的密码。我这里全程都是:P@ssw0rd
2.4.四、做为``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
密码全程都是:P@ssw0rd
注解:这个命令使用``demo`` 用户的密码和API端口5000,这样只会容许对身份认证服务API的常规(非管理)访问。
2.五、建立 OpenStack 客户端环境脚本
2.5.一、编辑文件 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=P@ssw0rd
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
2.5.二、编辑文件 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=P@ssw0rd
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
2.5.三、使用脚本
使用特定租户和用户运行客户端,你能够在运行以前简单地加载相关客户端脚本。例如:
加载``admin-openrc``文件来身份认证服务的环境变量位置和``admin``项目和用户证书:
# . admin-openrc
请求认证令牌:
# openstack token issue