目录:
0 实验环境
1 概述
2 安装和配置
2.1 先决条件
2.2 安装和配置
2.3 http服务
2.4 完成安装
3 创建域、项目、用户和角色
4 验证
5 创建脚本
0 实验环境
openstack版本:train
实验平台:vmware workstation 15.1
实验虚拟机:centos 7.6,2核,4G内存
操作节点:控制节点
本文用到的帐号和密码:
mysql数据库管理员:root:samplepass
keystone数据库用户:keystone:kspass
keystone系统管理员:admin:rootpass
openstack新用户myuser:myuser:mypass
1 概述
openstack服务组件有很多,但是至少需要按顺序安装以下服务:
- keystone-身份认证服务
- glance-镜像服务
- placement-替换服务
- nova-计算服务
- neutron-网络服务
除了必须的服务,建议安装以下两个组件:
- horizon-控制面板
- cinder-块存储服务
2 安装和配置
OpenStack身份服务集成了管理身份验证、授权和服务目录。身份服务通常是第一个服务。一旦通过身份验证,就可以使用其身份访问其他OpenStack服务。身份服务还可以与一些外部用户管理系统(如LDAP)集成。
2.1 先决条件
在安装服务之前,必须先创建数据库:
a)连接数据库:
# mysql -u root -p
b)新建数据库keystone:
MariaDB [(none)]> CREATE DATABASE keystone;
c)为keystone数据库用户分配权限,并设置用户keystone的密码为kspass:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'kspass'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'kspass';
d)退出数据库
MariaDB [(none)]>quit;
2.2 安装和配置
a)安装软件包
# yum install openstack-keystone httpd mod_wsgi
b)编辑配置文件/etc/keystone/keystone.conf
[database]节点,编辑数据库连接字符串,使用之前创建的数据库用户keystone和密码kspass:
[token]节点,编辑令牌提供程序为fernet
c)写入keystone数据库初始数据
# su -s /bin/sh -c "keystone-manage db_sync" keystone
这一步执行没有返回错误或者成功的任何提示,所以最好通过查看数据库信息来确认是否成功(也能确认之前的配置是否生效):
# mysql -u keystone -pkspass keystone -e 'show tables' //-p后面紧跟密码,不能有空格
d)初始化令牌库
# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
e)引导身份认证服务,其中设置了管理员密码为rootpass
# keystone-manage bootstrap --bootstrap-password rootpass --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
f)验证,上一步创建了一个默认的域default,通过查看域的列表命令来进行检查是否成功:
# openstack domain list
2.3 配置http服务
a)编辑/etc/httpd/conf/httpd.conf,配置服务名称:
ServerName controller
b)创建配置文件/usr/share/keystone/wsgi-keystone.conf的符号链接:
# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
2.4 完成安装
a)设置服务状态
# systemctl enable --now httpd
b)配置环境变量,其中的内容在2.2中e)步骤,通过keystone-manager命令完成了初始的设置:
$ export OS_USERNAME=admin $ export OS_PASSWORD=rootpass $ 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 创建域、项目、用户和角色
身份的验证是通过域、项目、用户和角色的组合来进行的。
a)创建一个名称为example的新域:
# openstack domain create --description "An Example Domain" example
b)新建一个名为service的新项目,属于example域:
# openstack project create --domain example --description "Service Project" service
c)新建一个用户myuser,属于example域,密码设置为mypass:
# openstack user create --domain example --password-prompt myuser
d)新建角色myrole:
# openstack role create myrole
把myrole角色分配myuser用户和service项目:
# openstack role add --project service --user myuser myrole
由于上一命令没有任何提示,可以通过查看角色列表来检查:
# openstack role assignment list --names
4 验证
a)取消之前设置的管理员密码的环境变量:
# unset OS_PASSWORD
b)使用admin用户获取token,要求输入密码,使用admin的密码rootpass进行验证:
# openstack token issue
c)使用myuser用户获取token,--os-username 指定用户,--os-project-name 指定项目,--os-domain-name 指定域(上一步之所以没有用这些参数,因为之前设置了相应的环境变量)。会要求输入密码,使用myuser的密码mypass进行验证:
# openstack --os-username myuser --os-project-name service --os-domain-name example token issue
5 创建脚本
为了提高客户端操作的效率,OpenStack支持简单的客户端环境脚本(也称为OpenRC文件),这些脚本通常包含所有客户端的通用选项。
a)创建admin用户的脚本文件admin-openrc:
export OS_PROJECT_DOMAIN_NAME=Default export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=rootpass export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
b)创建myuser用户的脚本文件myuser-openrc:
export OS_PROJECT_DOMAIN_NAME=example export OS_USER_DOMAIN_NAME=example export OS_PROJECT_NAME=service export OS_USERNAME=myuser export OS_PASSWORD=mypass export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
c)使用脚本来进行验证操作:
# . admin-openrc //注意:命令是一个点,空格,文件名。执行文件里的命令,也就是设置环境变量。
# openstack token issue
# . myuser-openrc //运行myuser的文件,验证myuser的配置
# openstack token issue