创建Keystone数据库

在控制节点(controller)的MariaDB上创建Keystone数据库:

mysql -uroot -p123456	
# -u root指定登录mariaDB的用户为root
#-p123456 root用户登录maraiDB的密码为“123456”

创建Keystone数据库:

CREATE DATABASE keystone;

创建keystone数据库用户keystone,并开放本地/远程登录,登录密码为“123456”

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123456';
# 按ctrl + c从数据库退出

安装keystone组件

在控制节点(controller)上安装keystone组件:

yum install openstack-keystone httpd mod_wsgi -y

配置keystone配置文件:

备份原始配置文件

cp /etc/keystone/keystone.conf /etc/keystone/keystone.conf.bak

将原始配置文件去掉带”#“号行:

cat /etc/keystone/keystone.conf.bak | grep -v ^# | uniq > /etc/keystone/keystone.conf

编辑配置文件 /etc/keystone/keystone.conf

cat <<EOF > /etc/keystone/keystone.conf
	[database]
connection=mysql+pymysql://keystone:123456@controller/keystone 
[token]
provider = fernet
EOF

填充keystone数据库:

su -s /bin/sh -c "keystone-manage db_sync " keystone
# 无返回任何结果则表示填充正常!

初始化Fernet key库:

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

引导身份认证服务,配置keystone的相关认证信息:(未来openstack登录界面的管理员密码,在此设置)

keystone-manage bootstrap --bootstrap-password 123456 \
  --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

参数说明:
–bootstrap-password:keystone管理员密码
–bootstrap-admin-url:管理员认证URL
–bootstrap-internal-url:内部认证URL
–bootstrap-public-url:外部认证URL
–bootstrap-region-id:指定区域名

配置Apache服务:

在Apache配置文件中设置ServerName为本机主机名,的第96行加入”ServerName controller“

vi +96 /etc/httpd/conf/httpd.conf

为wsgi-keystone.conf创建链接到Apache服务目录:

ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

重启httpd服务,并加入开机自启:

systemctl enable httpd.service
systemctl start httpd.service
 
systemctl status httpd.service

验证

创建环境脚本

我们可以模拟一个帐号登录环境,比如管理员登录,那就需要创建一个环境脚本:
cat <<EOF >> /root/admin-openrc
export OS_USERNAME=admin
export OS_PASSWORD=123456
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
EOF
参数说明:

export OS_USERNAME=admin:登录keystone的admin(管理员)帐号
export OS_PASSWORD=123456:keystone预设的密码
export OS_PROJECT_NAME=admin:指定Openstack的项目类型
export OS_USER_DOMAIN_NAME=Default:指定Openstack用户所属域
export OS_PROJECT_DOMAIN_NAME=Default:指定Openstack项目所属域
export OS_AUTH_URL=http://controller:35357/v3:指定认证链接
export OS_IDENTITY_API_VERSION=3:指定认证版本
执行脚本:. /root/admin-openrc
查看当前环境:env | grep OS

openstack token issue

鉴权通过,创建一个domain(域),名为“example”,描述为“Test Example”

openstack domain create --description "Test Example" example

在默认域(default domain)下,创建一个project(项目),名为“service”,描述为“Service Project”

openstack project create --domain default --description "Service Project" service

查看当前环境下的所有项目(project)

openstack project list

一般情况下,除了管理员外,我们还需要一些非特权项目以及用户

在默认域下(default domain)下,创建一个project(项目),名为“demo”,描述为“Demo Project”

openstack project create --domain default --description "Demo Project" demo

在默认域下创建一个用户,名为“leon”,后置手动设置密码(下图红框处)

openstack user create --domain default --password-prompt leon

创建Openstack的“普通用户”角色,名为“user”

openstack role create user

查看当前都有哪些角色

openstack role list

将用户“leon”在“demo”项目中的角色,规划为“普通用户”的角色

openstack role add --project demo --user leon user
# (指令不会返回结果)

验证登录:

unset OS_AUTH_URL OS_PASSWORD #取消环境变量的密码

用户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
password:123456

用户leon登录:

openstack --os-auth-url http://controller:5000/v3 \
  --os-project-domain-name Default --os-user-domain-name Default \
  --os-project-name demo --os-username leon token issue
password:123456