三、搭建OpenStack(M版)之Keystone组件(重要)

打印 上一主题 下一主题

主题 578|帖子 578|积分 1734

本实行环境为windows11体系,Vmware pro 15.5,假造机为Ubuntu16.04 server


1、创建keystone数据库

进入数据库并创建
  1. mysql -uroot -p1234
  2. CREATE DATABASE keystone;
复制代码
赋予数据库权限,‘1234’为keystone自界说密码
  1. GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '1234';
  2. GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '1234';
复制代码

 2、安装keystone组件

禁用Keystone服务在安装完成后自启
  1. echo "manual" > /etc/init/keystone.override
复制代码
安装软件包,不出不测的话
  1. apt-get install keystone apache2 libapache2-mod-wsgi
复制代码
3、天生随机值作为临时令牌'token'

天生的令牌肯定要保存下来,后续配置会使用
  1. openssl rand -hex 10
复制代码

4、配置keystone服务

  1. vim /etc/keystone/keystone.conf
复制代码
在[DEFAULT]里添加临时令牌(填自己的临时令牌)
  1. admin_token = 011068c32d724dba0971
复制代码

 在[database]里添加数据库,大约在550行,查询非编辑状态输入  /[data
1234是创建keystone数据库时设置的密码
  1. connection = mysql+pymysql://keystone:1234@controller/keystone
复制代码
注意肯定要把之前的connection注释掉 只能有一个 

 在[database]里添加provider,大约在1987行

同步数据库和初始化Fernet令牌
  1. su -s /bin/sh -c "keystone-manage db_sync" keystone
  2. keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
复制代码
5、配置Apache服务

在apache2.conf文件中添加主机名,在文件中靠前的位置添加该项
  1. ServerName controller
复制代码
配置假造主机,新创建文件wsgi-keystone.conf
  1. vim /etc/apache2/sites-available/wsgi-keystone.conf
复制代码

文件内容如下:
  1. Listen 5000
  2. Listen 35357
  3. <VirtualHost *:5000>
  4.     WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
  5.     WSGIProcessGroup keystone-public
  6.     WSGIScriptAlias / /usr/bin/keystone-wsgi-public
  7.     WSGIApplicationGroup %{GLOBAL}
  8.     WSGIPassAuthorization On
  9.     ErrorLogFormat "%{cu}t %M"
  10.     ErrorLog /var/log/apache2/keystone.log
  11.     CustomLog /var/log/apache2/keystone_access.log combined
  12.     <Directory /usr/bin>
  13.         Require all granted
  14.     </Directory>
  15. </VirtualHost>
  16. <VirtualHost *:35357>
  17.     WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
  18.     WSGIProcessGroup keystone-admin
  19.     WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
  20.     WSGIApplicationGroup %{GLOBAL}
  21.     WSGIPassAuthorization On
  22.     ErrorLogFormat "%{cu}t %M"
  23.     ErrorLog /var/log/apache2/keystone.log
  24.     CustomLog /var/log/apache2/keystone_access.log combined
  25.     <Directory /usr/bin>
  26.         Require all granted
  27.     </Directory>
  28. </VirtualHost>
复制代码
启用假造机并重启Apache服务
  1. ln -s /etc/apache2/sites-available/wsgi-keystone.conf /etc/apache2/sites-enabled
  2. service apache2 restart
复制代码
说明:
service apache2 restart 假如重启失败
重启时出现systemd[1]: Failed to start LSB: Apache2 web server https://stackoverflow.com/questions/35118773/systemd1-failed-to-start-lsb-apache2-web-server
解决办法:
  1. sudo apt-get purge apache2
  2. sudo apt-get install apache2
复制代码
再重启service apache2 restart
删除默认的SQLite数据库
  1. rm -f /var/lib/keystone/keystone.db
复制代码
6、创建服务实体和API访问端点

配置身份认证令牌'token',export OS_TOKEN为先宿世成的临时令牌,controller为主机名
  1. export OS_TOKEN=011068c32d724dba0971
  2. export OS_URL=http://controller:35357/v3
  3. export OS_IDENTITY_API_VERSION=3
复制代码

 创建`identity`服务实体(这一步一般都会报错,详细看哪个错误)
  1. openstack service create --name keystone --description "OpenStack Identity" identity
复制代码
假如报错:
The program 'openstack' can be found in the following packages:
 * python-openstackclient
 * python3-openstackclient
解决方法:
  1. apt-get install python-openstackclient
复制代码
假如报500错误:

 (我就是第二个错误)
可以去/var/log/keystone 下面去查看错误日志
一般是数据库字符集的错误解决办法如下:
1、删除keystone的数据库并重启假造机
  1. mysql -uroot -p1234 -e "DROP DATABASE IF EXISTS keystone;"
  2. init 6
复制代码
2、重新安装keystone数据库
  1. 进入数据库mysql -uroot -p1234创建数据库CREATE DATABASE keystone;赋予数据库权限,<KEYSTONE_DBPASS>为自界说密码  GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '1234';
  2. GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '1234';退出数据库exit;
复制代码

 3、同步数据库
  1. su -s /bin/sh -c "keystone-manage db_sync" keystone
复制代码
4、创建`identity`服务实体
  1. openstack service create --name keystone --description "OpenStack Identity" identity
复制代码

 以上就是解决创建`identity`服务实体报500错误方法
创建`identity`服务的访问端点`endpoint`

7、创建域(domain),项目(projects),用户(users)与角色(roles)

创建域`default`
  1. openstack domain create --description "Default Domain" default
复制代码
报错没有这个命令

 原因:环境变量用的是OpenStack Identity API v2.0,这就是问题的关键,domain子命令不支持OpenStack Identity API v2.0,支持OpenStack Identity API v3.0,直接不管
创建项目、用户、角色`admin`
  1. openstack project create --domain default --description "Admin Project" admin
  2. openstack user create --domain default --password-prompt admin
  3. openstack role create admin
复制代码

 为项目`admin`与用户`admin`添加角色`admin`
  1. openstack role add --project admin --user admin admin
复制代码

 创建项目`service`
  1. openstack project create --domain default \
  2. description "Service Project" service
  3. openstack project create --domain default \
  4. description "Demo Project" demo
  5. openstack user create --domain default \
  6. password-prompt demo
  7. openstack role create user
复制代码

 为项目`demo`与用户`demo`添加角色`user`
  1. openstack role add --project demo --user demo user
复制代码

 8、测试操作

删除文件keystone-paste.ini中的admin_token_auth
  1. vim /etc/keystone/keystone-paste.ini
复制代码
 分别从[pipeline:public_api],[pipeline:admin_api] 和 [pipeline:api_v3] 中移除 admin_token_auth
把原来的注释掉,直接复制以下内容
  1. [pipeline:public_api]
  2. pipeline = cors sizelimit url_normalize request_id build_auth_context token_auth json_body ec2_extension public_service
  3. [pipeline:admin_api]
  4. pipeline = cors sizelimit url_normalize request_id build_auth_context token_auth json_body ec2_extension s3_extension admin_service
  5. [pipeline:api_v3]
  6. pipeline = cors sizelimit url_normalize request_id build_auth_context token_auth json_body ec2_extension_v3 s3_extension service_v3
复制代码

移除临时令牌`token`与访问URL
  1. unset OS_TOKEN OS_URL
复制代码
使用`amdin`用户请求令牌`token`,会提示输入密码,我配置的是1234
  1. openstack --os-auth-url http://controller:35357/v3 \
  2. os-project-domain-name default --os-user-domain-name default \
  3. os-project-name admin --os-username admin token issue
复制代码
 使用`demo`用户请求令牌(token)
  1. openstack --os-auth-url http://controller:5000/v3 \
  2. os-project-domain-name default --os-user-domain-name default \
  3. os-project-name demo --os-username demo token issue
复制代码
 为`admin`用户创建脚本,在根目录新建openstack文件夹和admin-openrc文件
  1. mkdir /openstack
  2. vim /openstack/admin-openrc
  3. 文件内容:
  4. export OS_PROJECT_DOMAIN_NAME=default
  5. export OS_USER_DOMAIN_NAME=default
  6. export OS_PROJECT_NAME=admin
  7. export OS_USERNAME=admin
  8. # 自己设置的密码(1234)
  9. export OS_PASSWORD=1234
  10. export OS_AUTH_URL=http://controller:35357/v3
  11. export OS_IDENTITY_API_VERSION=3
  12. export OS_IMAGE_API_VERSION=2
复制代码

为`demo`用户创建脚本,新建demo-openrc文件
  1. vim /openstack/demo-openrc
  2. 文件内容:
  3. export OS_PROJECT_DOMAIN_NAME=default
  4. export OS_USER_DOMAIN_NAME=default
  5. export OS_PROJECT_NAME=demo
  6. export OS_USERNAME=demo
  7. # 自己设置的密码(1234)
  8. export OS_PASSWORD=1234
  9. export OS_AUTH_URL=http://controller:5000/v3
  10. export OS_IDENTITY_API_VERSION=3
  11. export OS_IMAGE_API_VERSION=2
复制代码

 使用脚本
  1. # 使用admin-openrc脚本
  2. source /openstack/admin-openrc
  3. # 使用demo-openrc脚本
  4. source /openstack/demo-openrc
复制代码
请求令牌`token`
  1. openstack token issue
复制代码

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表