zoukankan      html  css  js  c++  java
  • OpenStack之keystone组件部署

    前言:Keystone部署在控制节点上,用以为OpenStack提供身份认证服务,之后OpenStack的所有核心服务组件都要依靠keystone来识别认证租户的权限。

    一、进入mariadb,创建keystone的用户和数据库

    创建db
    	create database keystone;
    创建用户keystone并给与它keystone库的所有权限
    	grant all privileges on keystone.* to 'keystone'@'%' identified by 'keystone';  

    刷新

    flush privileges;
    

      

    二、离开数据库,正式开始部署keystone服务

    安装、配置keystone、数据库、Apache

    安装keystone、httpd、mod_wsgi

    #mod_wsgi包的作用是让apache能够代理pythone程序的组件;openstack的各个组件,包括API都是用python写的,但访问的是apache,apache会把请求转发给python去处理,这些包只安装在controler节点

    [root@ct ~]# cp -a /etc/keystone/keystone.conf{,.bak}
    [root@ct ~]# grep -Ev "^$|#" /etc/keystone/keystone.conf.bak > /etc/keystone/keystone.conf
    

    #通过pymysql模块访问mysql,指定用户名密码、数据库的域名、数据库名

    [root@ct ~]# openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:KEYSTONE_DBPASS@ct/keystone
    #指定token的提供者;提供者就是keystone自己本身
    [root@ct ~]# openstack-config --set /etc/keystone/keystone.conf token provider fernet
    Fernet:一种安全的消息传递格式
    
    初始化认证服务数据库
    [root@ct ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone
    初始化fernet 密钥存储库(以下命令会生成两个密钥,生成的密钥放于/etc/keystone/目录下,用于加密数据)
    [root@ct keystone]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
    [root@ct keystone]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone  

    三、keystone组件基于Apache来提供服务,因此不需要启动keystone,只需要启动httpd

    编辑httpd的配置文件
    	vim /etc/httpd/conf/httpd.conf
    	要修改的项为:
    		ServerName controller1
    为httpd和keystone的启动方式建立链接
    	ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
    启动httpd
    	systemctl enable httpd
    	systemctl restart httpd
    配置admin超级管理员账户信息
    	cat > /root/openrc <<EOF
    	export OS_USERNAME=admin
    	export OS_PASSWORD=admin
    	export OS_PROJECT_NAME=admin
    	export OS_USER_DOMAIN_NAME=Default
    	export OS_PROJECT_DOMAIN_NAME=Default
    	export OS_AUTH_URL=http://controller1:35357/v3
    	export OS_IDENTITY_API_VERSION=3
    	EOF
    	source openrc
    创建一个服务项目以管理我们为OpenStack添加的每一个服务
    	openstack project create --domain default 
    	--description "Service Project" service  

    四、检查一下是否按照我们的要求成功部署

    [root@ct ~]# openstack user list
    +----------------------------------+-------+
    | ID                               | Name  |
    +----------------------------------+-------+
    | b2cb38518ef74ae9b8f60989e494924c | admin |
    +----------------------------------+-------+
    [root@ct ~]# openstack project create --domain default --description "Service Project" service
    +-------------+----------------------------------+
    | Field       | Value                            |
    +-------------+----------------------------------+
    | description | Service Project                  |
    | domain_id   | default                          |
    | enabled     | True                             |
    | id          | c54d8300ca20439797f28d76fed9a408 |
    | is_domain   | False                            |
    | name        | service                          |
    | options     | {}                               |
    | parent_id   | default                          |
    | tags        | []                               |
    +-------------+----------------------------------+
    [root@ct ~]# openstack role create user
    +-------------+----------------------------------+
    | Field       | Value                            |
    +-------------+----------------------------------+
    | description | None                             |
    | domain_id   | None                             |
    | id          | cbc2277f880e4abf9a4c52dc068fcb5f |
    | name        | user                             |
    | options     | {}                               |
    +-------------+----------------------------------+
    [root@ct ~]# openstack role list
    +----------------------------------+--------+
    | ID                               | Name   |
    +----------------------------------+--------+
    | 7ebcb4ffb3d64ecb88f45d82bf404e8c | reader |
    | 8318386b7567422e822f46cbc64d5951 | member |
    | cbc2277f880e4abf9a4c52dc068fcb5f | user   |
    | cd50d8b7fc404008800b4e764a02e6c9 | admin  |
    +----------------------------------+--------+
    [root@ct ~]# openstack token issue
    +------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Field      | Value                                                                                                                                                                                   |
    +------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | expires    | 2020-12-15T12:17:41+0000                                                                                                                                                                |
    | id         | gAAAAABf2JtV0YnCvoFrORrVLy2ZEfonOOSONTglBg0tOqoMRBEzr9zvzaqbUmLV69KH9DoSip8oSZ2C-j68tl10cuywrHBbr0mu1r4sCPhHXExBlvZ_EdqRVXG5QWbk-3_zsCM-iy0mEcQKFOoEvHVIm52JCxDxJ0qdBDB1mHOkU1KL0quP5r4 |
    | project_id | 021a9fa5c0f84803a9798acec74c70cb                                                                                                                                                        |
    | user_id    | b2cb38518ef74ae9b8f60989e494924c                                                                                                                                                        |
    +------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    

    小结

    Keystone 组件是作为OpenStack 集群中统一认证、授权的模块,其核心功能就是针对于User(用户)、Tenant(租户)、Role(角色)、Token(令牌/凭证)的控制(手工编译部署即围绕此功能展开的)

    User:使用 openstack 的用户。

    Tenant:租户,可以理解为一个人、项目或者组织拥有的资源的合集。在一个租户中可以拥有很多个用户,这些用户可以根据权限的划分使用租户中的资源。

    Role:角色,用于分配操作的权限。角色可以被指定给用户,使得该用户获得角色对应的操作权限。

    Token:指的是一串比特值或者字符串,用来作为访问资源的记号。Token 中含有可访问资源的范围和有效时间,token 是用户的一种凭证,需要使用正确的用户名和密码向 Keystone 服务申请才能得到 token。

         使用手动部署的模式搭建OpenStack的思路:

    1、分模块部署

    2、部署keystone模块的基础环境(下载依赖包、组件包、第三方工具/插件)

    3、创建、开启此模块的功能(以keystone为例,创建并初始化认证数据库、修改配置文件、初始化密钥-fernet格式、配置身份认证服务)

    4、验证

      

      

      

  • 相关阅读:
    jvm
    java8新特性Lambada,Steam流
    数组链表栈队列 散列表
    数据结构算法基本知识
    设计模式七大原则
    java关键字
    Excel导出(适合项目开发)
    Excel导出(适合初学者)
    angular.min.js:80 Error:
    angular中出现错误的提示指令[ng:areq]的原因
  • 原文地址:https://www.cnblogs.com/tianzhendengni/p/14140611.html
Copyright © 2011-2022 走看看