但你凝视深渊的时候,深渊也在凝视你 ——尼采
OpenStack认证服务搭建
keystone服务概述
OpenStack身份识别服务为管理身份验证,授权和服务目录提供了单点集成。
身份服务通常是用户与之交互的第一个服务。一旦通过身份验证,最终用户就可以使用他们的身份访问其他OpenStack服务。同样,其他OpenStack服务利用身份服务来确保用户是他们所说的人,并发现部署中其他服务的位置。身份识别服务还可以与一些外部用户管理系统(如LDAP)集成。
用户和服务可以通过使用由身份服务管理的服务目录来定位其他服务。顾名思义,服务目录是OpenStack部署中可用服务的集合。每个服务可以有一个或多个端点,每个端点可以是以下三种类型之一:admin,internal或public。在生产环境中,出于安全原因,不同类型的终端类型可能会驻留在暴露给不同类型用户的单独网络中。例如,公共API网络可能从互联网上可见,因此客户可以管理他们的云。管理API网络可能仅限于管理云基础架构的组织中的运营商。内部API网络可能仅限于包含OpenStack服务的主机。另外,OpenStack支持多个区域的可伸缩性。RegionOne
地区。在身份服务中创建的区域,服务和端点一起构成部署的服务目录。部署中的每个OpenStack服务都需要一个服务条目,并在Identity服务中存储相应的端点。这可以在Identity Service安装和配置完成后完成。
身份服务包含以下组件:
- 服务器
- 集中式服务器使用RESTful接口提供认证和授权服务。
- 驱动程序
- 驱动程序或服务后端集成到中央服务器。它们用于访问OpenStack外部的存储库中的身份信息,并且可能已经存在于部署OpenStack的基础架构(例如SQL数据库或LDAP服务器)中。
- 模块
- 中间件模块运行在使用Identity服务的OpenStack组件的地址空间中。这些模块拦截服务请求,提取用户凭据并将其发送到中央服务器进行授权。中间件模块和OpenStack组件之间的集成使用Python Web服务器网关接口。
1.创建keystone数据库并进行配置
进入mariadb数据库
[root@controller /]# mysql -uroot -p
创建keystone数据库
MariaDB [mysql]> create database keystone;
创建keystone数据库授权用户keystone
MariaDB[mysql]> grant all privileges on keystone.* to 'keystone'@'localhost'identified by 'keystone';
MariaDB[mysql]> grant all privileges on keystone.* to 'keystone'@'%' identified by'keystone';
查看授权的用户
MariaDB [mysql]> select user,host from userG;
2.安装并配置keystone服务
[root@controller/]# yum install openstack-keystone httpd mod_wsgi
编辑/etc/keystone/keystone.conf文件并完成以下操作:
在该[database]部分中,配置数据库访问:
[database]
connection = mysql pymysql://keystone:keystone@173.168.16.224/keystone
在该[token]部分中,配置Fernet令牌提供程序
[token]
provider =fernet
完整配置如下图所示:
初始化身份认证服务数据库
[root@controller/]# su -s /bin/sh -c "keystone-manage db_sync" keystone
注意:这里配置文件的database的格式一定要配置正确,否则会报错或者同步失败
初始化Fernet密钥存储库
[root@controller/]# keystone-manage fernet_setup --keystone-user keystone --keystone-groupkeystone
[root@controller/]# keystone-manage credential_setup --keystone-user keystone --keystone-groupkeystone
创建身份服务api端点
[root@controller/]# keystone-manage bootstrap --bootstrap-password admin --bootstrap-admin-urlhttp://controller:35357/v3/ --bootstrap-internal-url http://controller:5000/v3/--bootstrap-public-url http://controller.5500/v3/ --bootstrap-region-idRegionOne
3.配置Apache HTTP服务器
编辑该/etc/httpd/conf/httpd.conf文件并配置该ServerName选项以引用控制器节点
echo ServerName controller >> /etc/httpd/conf/httpd.conf
为mod_wsgi模块添加配置文件,创建一个软连接到/etc/httpd/conf.d/
ln -s/usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
4.启动httpd服务且设置开机自启
[root@controller/]# systemctl enable httpd
[root@controller/]# systemctl start httpd
5.配置管理账户
exportOS_USERNAME=admin
exportOS_PASSWORD=admin
exportOS_PROJECT_NAME=admin
exportOS_USER_DOMAIN_NAME=Default
exportOS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:35357/v3
exportOS_IDENTITY_API_VERSION=3
6.创建一个域,项目,用户和角色
身份服务为每个OpenStack服务提供身份验证服务。身份验证服务使用域,项目,用户和角色的组合。
创建服务项目
[root@controller~]# openstack project create --domain default --description "ServiceProject" service
注意:这里可能会出现‘Missing value auth-url required for auth pluginpassword’的报错,翻译报错之后尝试重新执行第五步,创建成功
创建demo项目
[root@controller~]# openstack project create --domain default --description "DemoProject" demo
创建demo用户
[root@controller~]# openstack user create --domain default --password-prompt demo
创建user角色
[root@controller~]# openstack role create user
将user角色添加到demo项目和demo用户中
openstackrole add --project demo --user demo user
查看当前项目列表
[root@controller ~]# openstack project list
查看当前用户列表
[root@controller ~]# openstack user list
7.验证keystone操作
取消设置临时 变量OS_AUTH_URL和OS_PASSWORD环境变量
[root@controller~]# unset OS_AUTH_URL OS_PASSWORD
作为admin用户,请求身份验证令牌
[root@controller~]# openstack --os-auth-url http://controller:35357/v3
> --os-project-domain-name Default--os-user-domain-name Default
> --os-project-name admin --os-username admintoken issue
作为demo用户,请求身份验证令牌
[root@controller~]# openstack --os-auth-url http://controller:5000/v3
> --os-project-domain-name Default--os-user-domain-name Default
> --os-project-name demo --os-username demotoken issue
8.创建OpenStack客户端环境脚本
创建客户端环境的脚本admin和demo项目和用户
创建并编辑admin-openrc文件并添加以下内容:
创建并编辑demon-openrc文件并添加以下内容:
9.使用脚本
要以特定项目和用户身份运行客户端,只需在运行客户端环境脚本之前加载相关的客户端环境脚本即可。例如:
加载admin-openrc文件以使用Identity服务的位置以及admin项目和用户凭据填充环境变量:
[root@controller~]# . admin-openrc
请求身份验证令牌:
[root@controller~]# openstack token issue
至此OpenStack的keystone服务搭建完成
OpenStack图像服务搭建
glance服务概述
Image服务(glance)使用户能够发现,注册和检索虚拟机映像。它提供了一个 REST API,使您可以查询虚拟机图像元数据并检索实际图像。您可以将通过映像服务提供的虚拟机映像存储在各种位置,从简单的文件系统到对象存储系统(如OpenStack对象存储)。
OpenStack Image服务是基础架构即服务(IaaS)的核心。它接受磁盘或服务器映像的API请求,以及来自最终用户或OpenStack Compute组件的元数据定义。它还支持在各种存储库类型(包括OpenStack对象存储)上存储磁盘或服务器映像。
许多定期进程在OpenStack Image服务上运行以支持缓存。复制服务通过集群确保一致性和可用性。其他定期流程包括审计员,更新者和收割者。
OpenStack Image服务包含以下组件:
- glance-api 接受图像API调用以进行图像发现,检索和存储。
- glance-registry 存储,处理和检索有关图像的元数据。元数据包括大小和类型等项目。
- 数据库 存储图像元数据,您可以根据自己的喜好选择数据库。大多数部署使用MySQL或SQLite。
- 图像文件的存储库 支持各种存储库类型,包括常规文件系统(或安装在glance-api控制器节点上的任何文件系统),Object Storage,RADOS块设备,VMware数据存储和HTTP。请注意,某些存储库仅支持只读用法。
- 元数据定义服务 用于供应商,管理员,服务和用户的通用API来有意义地定义他们自己的定制元数据。此元数据可用于不同类型的资源,如图像,工件,卷,风味和聚合。定义包括新属性的关键字,描述,约束和它可以关联的资源类型。
1.创建glance数据库并授权
进入数据库
[root@controller ~]# mysql -uroot -p
创建glance数据库
MariaDB [(none)]> create database glance;
创建glance数据库授权用户
MariaDB[(none)]> grant all privileges on glance.* to 'glance'@'localhost'identified by 'glance';
MariaDB[(none)]> grant all privileges on glance.* to 'glance'@'%' identified by'glance';
2.创建glance用户和服务
加载环境变量
[root@controller ~]# . admin-openrc
创建glance用户
[root@controller~]# openstack
create--domain default --password-prompt glance
将admin角色添加到glance用户和service项目中
[root@controller ~]# openstack role add --project service --user glanceadmin
创建glance服务实体
[root@controller ~]# openstack service create --name glance--description "OpenStack Image" image
3.创建图像服务api端点
[root@controller~]# openstack endpoint create --region RegionOne image public http://controller:9292
[root@controller~]# openstack endpoint create --region RegionOne image internal http://controller:9292
[root@controller~]# openstack endpoint create --region RegionOne image admin http://controller:9292
4.安装和配置glance部件
安装软件包
[root@controller ~]# yum install openstack-glance
编辑/etc/glance/glance-api.conf文件并完成以下操作:
在该[database]部分中,配置数据库访问:
[database]
connection = mysql pymysql://glance:glance@173.168.16.224/glance
在[keystone_authtoken]和[paste_deploy]部分中,配置身份服务访问:
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance
[paste_deploy]
flavor = keystone
在该[glance_store]部分中,配置本地文件系统存储和映像文件的位置
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
完整配置如下图所示:
编辑/etc/glance/glance-registry.conf文件并完成以下操作:
在该[database]部分中,配置数据库访问:
[database]
connection = mysql pymysql://glance:glance@controller/glance
在[keystone_authtoken]和[paste_deploy]部分中,配置身份服务访问:
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_nam = default
project_name= service
username = glance
password = glance
[paste_deploy]
flavor = keystone
完整配置如下图所示:
5.初始化glance数据库
[root@controller~]# su -s /bin/sh -c "glance-manage db_sync" glance //忽略输出的任何信息
验证是否同步成功
[root@controller ~]# mysql -uglance -pglance -e "use glance;showtables;"|wc -l
6.启动映像服务并将其配置为在系统引导时启动
[root@controller~]# systemctl enable openstack-glance-api openstack-glance-registry
[root@controller~]# systemctl start openstack-glance-api openstack-glance-registry
7.验证glance服务
使用 CirrOS 镜像确认镜像服务是否安装正常。CirrOS 是一个小型Linux 镜像,可以用来测试你的 OpenStack 环境。
加载环境变量
[root@controller ~]# . admin-openrc
下载源镜像
[root@controller ~]# wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
上传镜像文件到镜像服务,使用 QCOW2 磁盘格式,bare 容器格式,添加公共可见选项,使所有项目可以访问该镜像
[root@controller ~]# openstack image create "cirros" --filecirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --public
注意:这里我一直报500http内部错误,后来从谷歌上看到有人和我有一样的报错,原来是hosts文件里controller少了一个’l’
查看镜像列表
[root@controller~]# openstack image list
至此glance服务搭建完成
参考链接:https://docs.openstack.org/keystone/pike/install/
https://docs.openstack.org/glance/pike/install/