创建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