OpenStack Train 实战③:Keystone身份服务部署与验证

19 阅读3分钟

参考官网原文链接:

1️⃣ 创建 Keystone 数据库和用户

  1. 登录 MySQL(我使用的密码 555555)
mysql -u root -p555555
  1. 创建 Keystone 数据库并授权
CREATE DATABASE keystone;

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '555555';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '555555';

flush privileges;
show databases;
select user,host from mysql.user;
exit;

注意:BY 后面 为实际密码555555


2️⃣ 安装和配置 Keystone 组件

  1. 安装 Keystone 和 Apache
yum install -y openstack-keystone httpd mod_wsgi python-keystoneclient

# 用于快速配置
yum install openstack-utils -y 
  1. 添加 [database] 部分 [token] 部分
cat >> /etc/keystone/keystone.conf << EOF
[database]
connection = mysql+pymysql://keystone:555555@controller/keystone
[token]
provider = fernet
EOF
# 查看生效的配置
egrep -v "^#|^$" /etc/keystone/keystone.conf
# 其他方式查看生效配置
grep '^[a-z]' /etc/keystone/keystone.conf
  1. 填充数据库并初始化 Fernet 密钥
# 填充身份服务数据库
su -s /bin/sh -c "keystone-manage db_sync" keystone
#查看是否成功 
mysql -u keystone -p"555555" 
use keystone; 
show tables;    #有表就行
exit;
  1. 初始化引导keystone认证服务
# 初始化Fernet令牌库
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone 
keystone-manage bootstrap --bootstrap-password 555555 \
  --bootstrap-admin-url http://controller:5000/v3/ \
  --bootstrap-internal-url http://controller:5000/v3/ \
  --bootstrap-public-url http://controller:5000/v3/ \
  --bootstrap-region-id RegionOne
  1. 配置 Apache HTTP 服务

    1. 配置 Apache 监听控制器主机名
    2. sed  -i  "s/#ServerName www.example.com:80/ServerName controller/" /etc/httpd/conf/httpd.conf
      
    3. 创建一个链接到 /usr/share/keystone/wsgi-keystone.conf 文件:
    4. ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
      
    5. 启动 Apache 并设置开机自启
    6. systemctl enable httpd
      systemctl start httpd
      
      systemctl list-unit-files |grep httpd.service
      
  2. 配置管理员环境变量

    1. 设置环境变量 (当前终端生效)
    2. export OS_USERNAME=admin
      export OS_PASSWORD=555555
      export OS_PROJECT_NAME=admin
      export OS_USER_DOMAIN_NAME=Default
      export OS_PROJECT_DOMAIN_NAME=Default
      export OS_AUTH_URL=http://controller:5000/v3
      export OS_IDENTITY_API_VERSION=3
      
    3. 验证认证是否成功
    4. # 查看声明的变量
      env |grep OS_
      
      echo $OS_USERNAME   # 应输出 "admin"
      echo $OS_AUTH_URL   # 应输出 "http://controller:5000/v3"
      

3️⃣ 创建域、项目、用户和角色

# 创建一个名为example的域
openstack domain create --description "An Example Domain" example

# 创建名为service的项目,在default域中。用于常规(非管理)任务,需要使用无特权用户。
# 以下命令会在project表中创建名为service的项目
openstack project create --domain default --description "Service Project" service


# 创建名为myproject项目,在default域中。作为一般用户(非管理员)的项目,为普通用户提供服务。以下命令会在project表中创建名为myproject项目
openstack project create --domain default --description "Demo Project" myproject

# 创建myuser用户,在default域中。
openstack user create --domain default --password=555555 myuser

# 创建myrole角色,在role表中
openstack role create myrole

# 创建一个默认角色user或者_member_
openstack role create user

# 将myrole角色添加到myproject项目中和myuser用户
openstack role add --project myproject --user myuser myrole

# 查看keystone实例相关信息
openstack endpoint list
openstack project list
openstack user list

4️⃣ 验证操作keystone是否安装成功

  1. 去除环境变量

关闭临时认证令牌机制,获取 token,验证keystone配置成功

unset OS_AUTH_URL OS_PASSWORD
env |grep OS_
  1. 作为 管理员admin 用户去请求一个认证的token
openstack --os-auth-url http://controller:5000/v3 \
  --os-project-domain-name Default --os-user-domain-name Default \
  --os-project-name admin --os-username admin token issue
# 输入密码:555555
  1. 使用普通用户获取认证token

以下命令使用”myuser“用户的密码和API端口5000,只允许对身份认证服务API的常规(非管理)访问。

openstack --os-auth-url http://controller:5000/v3 \
  --os-project-domain-name Default --os-user-domain-name Default \
  --os-project-name myproject --os-username myuser token issue
输入密码:555555

5️⃣ 创建OpenStack客户端环境变量脚本

Create OpenStack client environment scripts,上面使用环境变量和命令选项的组合通过“openstack”客户端与身份认证服务交互。为了提升客户端操作的效率,OpenStack支持简单的客户端环境变量脚本即OpenRC 文件,我这里使用自定义的文件名

  1. 创建admin用户的环境管理脚本
cd
touch admin-openrc.sh
# 文件内容
cat << EOF > admin-openrc.sh
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=555555
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF
  1. 创建普通用户myuser的客户端环境变量脚本
touch myuser-openrc.sh
# 文件内容
cat << EOF > myuser-openrc.sh
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=myproject
export OS_USERNAME=myuser
export OS_PASSWORD=555555
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF
  1. 测试环境管理脚本
source admin-openrc.sh
openstack token issue
# 列举当前所有域名
openstack domain list
openstack user list

source myuser-openrc.sh
openstack token issue

6️⃣ keystone安装完毕

至此,控制节点的keystone认证服务组件完成安装与配置,现在可以关机做快照

输入shutdown -h now 关机

下一步配置:

3控制节点--Glance镜像服务