• openstack装B之路Keystone部署以及操作


    1.准备阶段

    查看系统信息

    [root@localhost ~]# cat /etc/redhat-release 

    查看内核版本

    [root@localhost ~]# uname -r

    安装官方yum源

    [root@localhost ~]# yum -y install centos-release-openstack-newton

    更新yum包

    [root@localhost ~]# yum -y upgrade

    安装工具

    [root@localhost ~]# yum -y install python-openstackclient

    安装openstack-selinux包自动管理openstack组件的安全策略

    [root@localhost ~]# yum -y install openstack-selinux

     部署mariadb

    安装

    keystone支持ldap和mysql作为后端Driver,用来存放用户相关信息,catalog等,这里我们选用mariadb,MariaDB数据库管理系统是MySQL的一个分支

    yum -y install mariadb mariadb-server python2-PyMySQL
    

    编辑配置文件:

     vim /etc/my.cnf.d/openstack.cnf
    

    写入如下内容:

    注意:bind-address对应的一定是本机管理IP

    [mysqld]
    bind-address = 192.168.1.109 
    
    default-storage-engine = innodb
    innodb_file_per_table
    max_connections = 4096
    collation-server = utf8_general_ci
    character-set-server = utf8

    启动服务且设置开机启动

    systemctl start mariadb.service
    systemctl enable mariadb.service

    2.部署keystone

    keystone关于数据库的操作

    mysql -u root -p #登入数据库
    CREATE DATABASE keystone; #新建库keystone
    GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
      IDENTIFIED BY '123'; #新建本地访问keystone库的账号
    GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
      IDENTIFIED BY '123'; #新建远程访问keystone库的账号
    

      

    安装软件包

    keystone软件包名openstack-keystone ;安装httpd和mod_wsgi的原因是,社区主推apache+keystone #openstack-keystone本质就是一款基于wsgi协议的web app,而httpd本质就是一个兼容wsgi协议的web server,所以我们需要为httpd安装mod_wsgi模块

    yum -y install openstack-keystone httpd mod_wsgi

    编辑keystone配置文件:

    vim /etc/keystone/keystone.conf

    找到database这一行:

    [database]
    connection = mysql+pymysql://keystone:123@192.168.1.109/keystone

    让openstack-keystone能够知道如何连接到后端的数据库keystone ;mysql+pymysql:pymysql是一个python库,使用python可以操作mysql原生sql

    注意:密码123 一定不要加引号,否则报错

    找到token这一行:

    [token]
    provider = fernet 

    fernet为生成token的方式

    初始化数据库keystone

    keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
    keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
    

    如果有报错,请检查密码是否加了引号

     初始化Fernet key仓库

    keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
    keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
    

    3.配置web server整合keystone

    修改本机主机名

    vim /etc/hosts
    

    写入:

    192.168.1.109 controller
    

    编辑Apache配置文件:

    vim /etc/httpd/conf/httpd.conf
    

    找到ServerName,写入

    ServerName controller

    为mod_wsgi模块添加配置文件

    ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
    

      

     启动httpd服务且设置开机自启

    systemctl start httpd.service
    systemctl enable httpd.service
    

    4.keystone操作

    (1)创建keystone的catalog

    编辑配置文件 

    vim /etc/keystone/keystone.conf 
    

    在开头插入:

    [DEFAULT]
    admin_token = 123

    设置环境变量:

    export OS_TOKEN=123 #等于keystone.conf中admin_token的值
    export OS_URL=http://192.168.1.109:35357/v3
    export OS_IDENTITY_API_VERSION=3

    OS_TOKEN=配置文件中的admin_token,会在filter过滤过程中被admin_token_auth中间间设置is_admin=True,谁有这个admin_token谁就是管理员了。

    为keystone创建catalog

    基于上一步给的权限,创建认证服务实体
    openstack service create \
      --name keystone --description "OpenStack Identity" identity
    


    基于上一步建立的服务实体,创建访问该实体的三个api端点
    openstack endpoint create --region RegionOne \
      identity public http://192.168.31.57:5000/v3
      
    openstack endpoint create --region RegionOne \
      identity internal http://192.168.31.57:5000/v3
      
    openstack endpoint create --region RegionOne \
      identity admin http://192.168.31.57:35357/v3
    

     (2)创建域,租户,用户,角色,把四个元素关联到一起

     建立一个公共的域名:

    openstack domain create --description "Default Domain" default 
    

    创建管理员信息:

    openstack project create --domain default \
      --description "Admin Project" admin   #创建Admin项目

     

    openstack user create --domain default \
      --password-prompt admin            #创建Admin用户
    

     

    openstack role create admin                  #创建admin角色
    

     

    openstack role add --project admin --user admin admin   创建角色 用户 项目三者之间的关联
    

    使用Bootstrap完成part1和part2二者的工作

    为keystone创建catalog

    keystone-manage bootstrap --bootstrap-password 123 \
      --bootstrap-admin-url http://192.168.1.109:35357/v3/ \
      --bootstrap-internal-url http://192.168.1.109:35357/v3/ \
      --bootstrap-public-url http://192.168.1.109:5000/v3/ \
      --bootstrap-region-id RegionOne
    

      

    设置环境变量(is_admin不会被设置成True,admin用户会获得一个Token)

    export OS_USERNAME=admin
    export OS_PASSWORD=123 #就是keystone-manage中设定的--bootstrap-password
    export OS_PROJECT_NAME=admin
    export OS_USER_DOMAIN_NAME=Default
    export OS_PROJECT_DOMAIN_NAME=Default
    export OS_AUTH_URL=http://192.168.1.109:35357/v3
    export OS_IDENTITY_API_VERSION=3
    

     

    注意:如果catalog显示不出来。断开Xshell重连一次 再加载一次环境变量即可

    创建用于后期测试用的项目,用户,租户,建立关联

     创建project名为demo

    openstack project create --domain default \
      --description "Demo Project" demo
    

     

    创建普通用户demo

    openstack user create --domain default \
      --password-prompt demo
    

     

     创建普通用户的角色即user

    openstack role create user
    

     

    建立三者之间的关联

    openstack role add --project demo --user demo user
    

    为后续的服务创建统一租户service

    解释:后面每搭建一个新的服务都需要在keystone中执行四种操作:1.建项目 2.建用户 3.建角色 4.做关联

    后面所有的服务公用一个项目service,都是管理员角色admin ;所以实际上后续的服务安装关于keysotne的操作只剩2,4

    openstack project create --domain default \
      --description "Service Project" service
    

    五 验证

    part 1:准备

    出于安全考虑,需要关闭临时令牌认证机制(配置文件中的admin_token和keystone-manage的--bootstrap-password都是基于该机制)

    该机制会将用户的请求设置is_admin=True,源码分析中会介绍,先暂且理解到这里

     

     

     

  • 相关阅读:
    OpenCV-C++ 图像上采样和降采样
    OpenCV-C++ 图像形态学操作应用-提取水平与垂直线
    OpenCV-C++ 图像形态学操作
    OpenCV-C++ 图像滤波(二)-中值滤波-双边滤波
    OpenCV-C++ 图像滤波(一)-均值滤波-高斯滤波
    OpenCV-C++ 绘制基本形状与编写文字
    OpenCV-C++ 调整图像亮度和对比度
    OpenCV-C++ 图像混合
    Mysql新建表,插入中文时报错“Incorrect string value: 'xE4xBDxA0xE5xA5xBD' for column”问题
    springcloud11 spring cloud config
  • 原文地址:https://www.cnblogs.com/hui520/p/6336576.html
Copyright © 2020-2023  润新知