这是搭建Openstack云平台的第三堂课,主要讲解认证服务Keystone的配置过程。Keystone负责Openstack各个环节的认证服务,是极其重要的,只有先配置好Keystone后,才能继续以后的工作。
创建数据库用户
1 |
mysql -uroot -pMariadb123 |
1 2 3 4 5 |
create database keystone; grant all privileges on keystone.* to 'keystone'@'localhost' identified by 'Keystone123'; grant all privileges on keystone.* to 'keystone'@'%' identified by 'Keystone123'; flush privileges; exit |
配置keystone
安装keystone
1 |
yum -y install openstack-keystone |
配置keystone
修改配置/etc/keystone/keystone.conf:
1 2 3 4 5 6 7 8 9 10 |
[cache] backend = oslo_cache.memcache_pool enabled = true memcache_servers = controller:11211 [database] connection = mysql+pymysql://keystone:Keystone123@controller/keystone [token] provider = fernet |
同步keystone数据
1 2 |
su -s /bin/sh -c "keystone-manage db_sync" keystone # mysql -ukeystone -pKeystone123 -e "use keystone;show tables;" |
初始化fernet-keys
1 2 3 4 5 6 |
keystone-manage fernet_setup \ --keystone-user keystone \ --keystone-group keystone keystone-manage credential_setup \ --keystone-user keystone \ --keystone-group keystone |
引导身份认证服务(提前配置并重启httpd)
修改http服务配置/etc/httpd/conf/httpd.conf:
1 2 |
Listen 10.10.100.150:80 ServerName controller |
启动httpd服务:
1 2 |
systemctl enable httpd systemctl start httpd |
配置keystone服务:
1 2 3 4 5 6 |
keystone-manage bootstrap \ --bootstrap-password Admin123 \ --bootstrap-admin-url http://controller:35357/v3/ \ --bootstrap-internal-url http://controller:5000/v3/ \ --bootstrap-public-url http://controller:5000/v3/ \ --bootstrap-region-id RegionOne |
输出环境变量
1 2 3 4 5 6 7 |
export OS_USERNAME=admin export OS_PASSWORD=Admin123 export OS_PROJECT_NAME=admin export OS_USER_DOMAIN_NAME=default export OS_PROJECT_DOMAIN_NAME=default export OS_AUTH_URL=http://controller:35357/v3 export OS_IDENTITY_API_VERSION=3 |
修改配置/usr/share/keystone/wsgi-keystone.conf:
1 2 3 4 5 6 7 |
Listen 10.10.100.150:5000 Listen 10.10.100.150:35357 ... <VirtualHost 10.10.100.150:5000> ... <VirtualHost 10.10.100.150:35357> ... |
1 2 3 4 5 |
# 创建keystone配置文件软链接 ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/ # 重启httpd systemctl restart httpd |
创建默认项目
Openstack中的nova、glance等各项服务默认使用公用项目service、角色admin,因此,为了方便后续操作,我们先创建其统一项目“service”。
在生产环境中,无需配置Demo环境。
查看Domain列表
1 |
openstack domain list |
在本文后面有创建新Domain的方法,此处略。
创建默认project
1 2 3 |
openstack project create \ --domain default \ --description "Service Project" service |
创建默认user
1 2 3 4 5 |
openstack user create \ --domain default \ --password-prompt demo # 以上命令最后一行可改为: --password=Demo123 demo |
输入密码(Demo123)后继续创建默认role
1 |
openstack role create user |
关联项目、用户和角色
1 2 3 |
openstack role add \ --project service \ --user demo user |
其他相关命令:
1 2 3 |
openstack user list openstack role list openstack role assignment list |
用户变量脚本
admin
1 2 3 4 5 6 7 8 9 10 11 |
# /opt/scripts/admin # 登录控制面板前先执行:source /opt/scripts/admin export OS_USERNAME=admin export OS_PASSWORD=Admin123 export OS_PROJECT_NAME=admin export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_AUTH_URL=http://controller:35357/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2 |
demo(生产环境不需要)
1 2 3 4 5 6 7 8 9 10 11 |
# /opt/scripts/demo # 登录控制面板前先执行:source /opt/scripts/demo export OS_USERNAME=demo export OS_PASSWORD=Demo123 export OS_PROJECT_NAME=demo export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2 |
至此,openstack的认证服务keystone已经配置完成。
验证操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# 取消临时环境变量 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 # 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 # 查看认证令牌 openstack token issue |
其他配置说明
每个项目的创建流程都是域、项目、用户、角色,最后关联,也可以直接登录Dashboard创建,具体流程可参考“创建测试项目”,因在以后各项服务中均涉及到该流程,故以此不多讲述。
创建新域
一般情况下,使用默认域即可,如果需要使用新域,则执行如下命令:
1 |
openstack domain create --description "New Domain" NewDomainName |
查看配置信息
1 |
openstack [ assignment | catalog | endpoint | service | domain | project ] list |
创建测试项目
测试项目非必要,尤其是生产环境中更没必要创建,这里只是举例。
1 2 3 4 5 6 7 8 |
openstack domain create \ --description "Test Domain" TestDomain openstack project create \ --domain TestDomain \ --description "Demo Project" TestProject openstack user create \ --domain TestDomain \ --password-prompt TestUser |
输入密码(Test123)后继续:
1 2 3 4 |
openstack role create TestRole openstack role add \ --project TestProject \ --user TestUser TestRole |
原创文章禁止转载:技术学堂 » Openstack云平台搭建课程三·认证服务Keystone