• CentOS7安装OpenStack-02.安装Keystone认证服务组件


    2.0.keystone认证服务

    1)用户与认证:用户权限与用户行为跟踪

    User          用户
    Tenant        租户
    Token         令牌
    Role          角色

    2)服务目录:提供一个服务目录,包括所有服务项与相关API的端点

    Service       服务
    Endpoint      端点

    2.1.在控制节点创建keystone相关数据库

    1)创建keystone数据库并授权

    # 登录mysql,密码为空
    mysql -u root -p # 创建 keystone 数据库 CREATE DATABASE keystone; # 对``keystone``数据库授予恰当的权限 grant all on keystone.* to keystone@'localhost' identified by 'keystone'; grant all on keystone.* to keystone@'%' identified by 'keystone';
    flush privileges;

    2.2.在控制节点安装keystone相关软件包

    1)安装keystone相关软件包

    # 配置Apache服务,使用带有“mod_wsgi”的HTTP服务器来相应认证服务请求,端口为5000和35357, 默认情况下,Kestone服务仍然监听这些端口

    yum install openstack-keystone httpd mod_wsgi -y
    yum install openstack-keystone python-keystoneclient openstack-utils -y

    # 下面使用的快速配置方法需要安装Openstack-utils才可以实现

    openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:keystone@controller/keystone
    openstack-config --set /etc/keystone/keystone.conf token provider fernet

    # keystone不需要启动,通过httpd服务进行调用

    2.3.初始化同步keystone数据库

    1)同步keystone数据库(44张)

    su -s /bin/sh -c "keystone-manage db_sync" keystone

    2)同步完成进行连接测试

    mysql keystone -e 'show tables'

    2.4.初始化Fernet令牌库

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

    2.5.配置启动Apache(httpd) 

    1)修改httpd主配置文件

    # 编辑``/etc/httpd/conf/httpd.conf`` 文件,配置``ServerName`` 选项为控制节点
    sed -i "s/#ServerName www.example.com:80/ServerName controller/" /etc/httpd/conf/httpd.conf

    2)配置虚拟主机

    # 用下面的内容创建文件 /etc/httpd/conf.d/wsgi-keystone.conf,确保5000,和35357端口没被占用

    echo '
    Listen 5000
    Listen 35357
    
    <VirtualHost *:5000>
        WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
        WSGIProcessGroup keystone-public
        WSGIScriptAlias / /usr/bin/keystone-wsgi-public
        WSGIApplicationGroup %{GLOBAL}
        WSGIPassAuthorization On
        ErrorLogFormat "%{cu}t %M"
        ErrorLog /var/log/httpd/keystone-error.log
        CustomLog /var/log/httpd/keystone-access.log combined
    
        <Directory /usr/bin>
            Require all granted
        </Directory>
    </VirtualHost>
    
    <VirtualHost *:35357>
        WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
        WSGIProcessGroup keystone-admin
        WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
        WSGIApplicationGroup %{GLOBAL}
        WSGIPassAuthorization On
        ErrorLogFormat "%{cu}t %M"
        ErrorLog /var/log/httpd/keystone-error.log
        CustomLog /var/log/httpd/keystone-access.log combined
    
        <Directory /usr/bin>
            Require all granted
        </Directory>
    </VirtualHost>
    ' >/etc/httpd/conf.d/wsgi-keystone.conf

    3)启动httpd并配置开机自启动

    systemctl start httpd.service
    systemctl status httpd.service
    netstat -anptl|grep httpd
    
    systemctl enable httpd.service
    systemctl list-unit-files |grep httpd.service
    
    ss -ntl | grep -E "5000|35357"

    # 如果http起不来,需要关闭 selinux 或者安装 yum install openstack-selinux

    2.6.初始化keystone认证服务

    1)创建 keystone 用户,初始化的服务实体和API端点(账号:密码=>admin:admin)

    keystone-manage bootstrap --bootstrap-password admin --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

    2)临时配置管理员账户的相关变量进行管理

    # 编辑环境变量的配置文件 vim openrc
    echo '
    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://controller:35357/v3
    export OS_IDENTITY_API_VERSION=3
    ' > admin_openrc
    
    # 使环境变量生效
    source admin_openrc

    # 查看
    env|grep OS_

    echo 'source admin_openrc' >> ~/.bashrc

    # 查看keystone实例相关信息

    openstack endpoint list
    openstack project list
    openstack user list

    # 删除endpoint

    openstack endpoint delete [ID]

    2.7.创建keystone的一般实例

    1)创建一个名为example的keystone域

    # 以下命令会在project表中创建名为example的项目

    openstack domain create --description "An Example Domain" example

    2)为keystone系统环境创建名为service的项目提供服务

    # 用于常规(非管理)任务,需要使用无特权用户

    # 以下命令会在project表中创建名为service的项目

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

    3)创建myproject项目和对应的用户及角色

    # 作为一般用户(非管理员)的项目,为普通用户提供服务

    # 以下命令会在project表中创建名为myproject项目

    openstack project create --domain default --description "Demo Project" myproject

    4)在默认域创建myuser用户

    # 使用--password选项为直接配置明文密码,使用--password-prompt选项为交互式输入密码
    # 以下命令会在local_user表增加myuser用户

    openstack user create --domain default  --password-prompt myuser    # 交互式输入密码
    # openstack user create --domain default  --password=myuser myuser    # 直接创建用户和密码

    5)在role表创建myrole角色

    openstack role create myrole

    6)将myrole角色添加到myproject项目中和myuser用户组中

    # 以下命令无返回,数据表操作不太明显

    openstack role add --project myproject --user myuser myrole

    2.8.验证操作keystone是否安装成功

    1)去除环境变量

    # 关闭临时认证令牌机制,获取 token,验证keystone配置成功

    unset OS_AUTH_URL OS_PASSWORD
    env |grep OS_

    2)作为管理员用户去请求一个认证的token

    openstack --os-auth-url http://controller:5000/v3 --os-project-domain-name Default --os-user-domain-name Default --os-project-name admin --os-username admin --os-password admin token issue

    3)使用普通用户获取认证token

    openstack --os-auth-url http://controller:5000/v3  --os-project-domain-name Default --os-user-domain-name Default  --os-project-name myproject --os-username myuser --os-password myuser token issue

    2.9.创建OpenStack客户端环境脚本

    1)创建admin用户的环境管理脚本

    mkdir /server/tools -p && cd /server/tools
    vim keystone-admin-pass.sh
    ----------------------------------
    export OS_PROJECT_DOMAIN_NAME=Default
    export OS_USER_DOMAIN_NAME=Default
    export OS_PROJECT_NAME=admin
    export OS_USERNAME=admin
    export OS_PASSWORD=admin
    export OS_AUTH_URL=http://controller:5000/v3
    export OS_IDENTITY_API_VERSION=3
    export OS_IMAGE_API_VERSION=2
    ----------------------------------
    env |grep OS_

    2)创建普通用户myuser的客户端环境变量脚本

    vim keystone-myuser-pass.sh
    -------------------------------
    export OS_PROJECT_DOMAIN_NAME=Default
    export OS_USER_DOMAIN_NAME=Default
    export OS_PROJECT_NAME=myproject
    export OS_USERNAME=myuser
    export OS_PASSWORD=myuser
    export OS_AUTH_URL=http://controller:5000/v3
    export OS_IDENTITY_API_VERSION=3
    export OS_IMAGE_API_VERSION=2
    -------------------------------

    3)测试环境管理脚本

    # 使用脚本加载相关客户端配置,以便快速使用特定租户和用户运行客户端

    source keystone-admin-pass.sh

    4)请求认证令牌

    openstack token issue

    ~~~至此,keystone安装完毕~~~

  • 相关阅读:
    iOS 谁说程序猿不懂浪漫之 爱心
    iOS 星星评价视图 3行搞定
    iOS 柱状图的定制
    iOS 跑马灯 一句话集成
    代理的使用
    发送的网络请求中含有中文 转码的实现
    杂记
    使用纯代码实现UICollectionView(UITableView)需要注册
    NSASSert的使用
    iOS进阶第三节 数据处理之CoreData
  • 原文地址:https://www.cnblogs.com/liugp/p/12462236.html
Copyright © 2020-2023  润新知