openstack云计算组件keystone部署及操作使用技巧

OpenStack云计算组件Keystone部署及操作使用技巧

1. 简介

Keystone是OpenStack云计算平台的身份认证组件,也是所有OpenStack组件的身份鉴别服务提供者。Keystone基于OAuth2协议来实现身份认证和授权,支持多种身份认证方式,例如用户名/密码、LDAP、OAuth等。

2. 部署Keystone

在部署Keystone之前,需要先安装OpenStack Identity API、MySQL、Apache、Python2.7和一些python包。下面是部署Keystone的详细步骤:

2.1 安装依赖包

$ sudo apt-get update
$ sudo apt-get install python-dev python-pip apache2 libapache2-mod-wsgi memcached openssl
$ sudo apt-get install mysql-server python-mysqldb
$ sudo apt-get install keystone python-openstackclient

2.2 配置数据库

$ mysql -u root -p
mysql> CREATE DATABASE keystone;
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';

2.3 配置Keystone

$ sudo mv /etc/keystone/keystone.conf /etc/keystone/keystone.conf.backup
$ sudo touch /etc/keystone/keystone.conf
$ sudo sh -c "keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone"
$ sudo sh -c "keystone-manage credential_setup --keystone-user keystone --keystone-group keystone"
$ sudo sh -c "keystone-manage bootstrap --bootstrap-password ADMIN_PASS --bootstrap-admin-url http://controller:35357/v3/ --bootstrap-internal-url http://controller:35357/v3/ --bootstrap-public-url http://controller:5000/v3/ --bootstrap-region-id RegionOne"

2.4 配置Apache

$ sudo mv /etc/apache2/apache2.conf /etc/apache2/apache2.conf.backup
$ sudo touch /etc/apache2/apache2.conf
$ sudo tee /etc/apache2/sites-available/wsgi-keystone.conf <<EOF
<VirtualHost *:5000>
    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-public
    WSGIScriptAlias / /var/www/cgi-bin/keystone/main
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/apache2/keystone.log
    CustomLog /var/log/apache2/keystone_access.log combined
    <Directory /var/www/cgi-bin/keystone>
        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 / /var/www/cgi-bin/keystone/admin
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/apache2/keystone.log
    CustomLog /var/log/apache2/keystone_access.log combined
    <Directory /var/www/cgi-bin/keystone>
        Require all granted
    </Directory>
</VirtualHost>
EOF
$ sudo ln -s /etc/apache2/sites-available/wsgi-keystone.conf /etc/apache2/sites-enabled
$ sudo ln -s /usr/share/keystone/wsgi.py /var/www/cgi-bin/keystone/main
$ sudo ln -s /usr/share/keystone/wsgi.py /var/www/cgi-bin/keystone/admin

2.5 重启Apache和Keystone服务

$ sudo service apache2 restart
$ sudo service memcached restart
$ sudo service keystone restart

3. 操作使用技巧

3.1 Keystone命令行使用

# 验证Keystone是否正常工作
$ openstack catalog list

# 创建新用户
$ openstack user create --domain default --password-prompt USER_NAME

# 删除用户
$ openstack user delete USER_ID

# 创建新项目
$ openstack project create --domain default --description "PROJECT_DESCRIPTION" PROJECT_NAME

# 删除项目
$ openstack project delete PROJECT_ID

# 创建新角色
$ openstack role create ROLE_NAME

# 删除角色
$ openstack role delete ROLE_ID

# 获取用户列表
$ openstack user list

# 获取项目列表
$ openstack project list

# 获取角色列表
$ openstack role list

# 授权用户到项目和角色
$ openstack role add --project PROJECT_ID --user USER_ID ROLE_NAME

# 撤销用户项目角色授权
$ openstack role remove --project PROJECT_ID --user USER_ID ROLE_NAME

3.2 Keystone API使用示例

# 创建新用户
$ curl -X POST \
    -H "Content-Type: application/json" \
    -d '{"user": {"name": "user1", "password": "PASSWORD", "default_project_id": "PROJECT_ID", "enabled": true}}' \
    "http://<KEYSTONE_IP>:5000/v3/users" -s

# 创建新项目
$ curl -X POST \
    -H "Content-Type: application/json" \
    -H "X-Auth-Token: TOKEN" \
    -d '{"project": {"name": "project1", "description": "PROJECT_DESCRIPTION", "enabled": true}}' \
    "http://<KEYSTONE_IP>:5000/v3/projects" -s

# 授权用户到项目和角色
$ curl -X PUT \
    -H "Content-Type: application/json" \
    -H "X-Auth-Token: TOKEN" \
    -d '{"role": {"id": "ROLE_ID"}}' \
    "http://<KEYSTONE_IP>:5000/v3/projects/PROJECT_ID/users/USER_ID/roles/ROLE_ID" -s    

4. 结论

本文讲述了如何部署和使用OpenStack Identity API(Keystone)来管理身份认证和授权。通过阅读本文,您应该了解如何部署Keystone、使用命令行和API来授权,并可以通过示例和指导了解如何使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:openstack云计算组件keystone部署及操作使用技巧 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • DBMS中序列和非序列时间表的计算

    序列时间表和非序列时间表是DBMS中时间表的两种类型。序列时间表是按照时间的先后顺序进行排列的表格,可以通过时间戳或时间列进行排序。非序列时间表不具有时间先后的关系,可以按照任意顺序排列。以下是对这两种时间表的计算攻略的详细讲解: 计算序列时间表 1. 计算时间间隔 计算序列时间表的第一步是计算时间间隔。时间间隔表示相邻时间戳之间的时间差。常见的时间间隔单位…

    database 2023年3月27日
    00
  • Android SQLite数据库增删改查操作的使用详解

    Android SQLite数据库是一种轻量级的数据库,适用于在移动开发中存储少量数据。本文将详细讲解Android SQLite数据库的增删改查操作,方便开发者更好地利用SQLite存储数据。 创建数据库 在使用SQLite数据库前,首先需要创建一个数据库。可以通过继承SQLiteOpenHelper类并实现onCreate()方法和onUpgrade()…

    database 2023年5月21日
    00
  • MySQL分库分表与分区的入门指南

    MySQL分库分表与分区的入门指南 什么是MySQL分库分表与分区 MySQL分库分表是将一个大的数据库拆分成多个小型数据库,每个数据库存储不同的数据,以达到提高性能、降低负载的目的。 MySQL分区是将一个表分割成多个分区,每个分区存储不同的数据,以达到提高查询速度、减少磁盘I/O的目的。 MySQL分库分表的实现方式 垂直分库 垂直分库就是将不同的表拆分…

    database 2023年5月19日
    00
  • 6步带你用Spring Boot开发出商城高并发秒杀系统

    摘要:本博客将介绍如何使用 Spring Boot 实现一个简单的商城秒杀系统,并通过使用 Redis 和 MySQL 来增强其性能和可靠性。 本文分享自华为云社区《Spring Boot实现商城高并发秒杀案例》,作者:林欣。 随着经济的发展和人们消费观念的转变,电子商务逐渐成为人们购物的主要方式之一。高并发是电子商务网站面临的一个重要挑战。本博客将介绍如何…

    MySQL 2023年4月8日
    00
  • redis 击穿、穿透、雪崩产生原因及解决方案

    引用:redis 击穿、穿透、雪崩产生原因及解决方案 – AmourLee – 博客园https://www.cnblogs.com/dongl961230/p/15337415.html   一、前言 从架构的一个整体性来看,redis产生击穿、穿透、雪崩的情况的前提条件都是redis做缓存使用,并且产生了高并发,正常情况下我们利用关系型数据库(mysql…

    Redis 2023年4月11日
    00
  • 如何使用Python从数据库中获取CLOB类型的数据?

    以下是如何使用Python从数据库中获取CLOB类型的数据的完整使用攻略。 使用Python从数据库中获取CLOB类型的数据的前提条件 在Python中从数据库中获取CLOB类型的数据前,需要保已经安装并启动支持数据的,例如Oracle、MySQL或PostgreSQL,并且需要安装Python的相应数据库驱动程序,例如cx_Oracle、mysql-con…

    python 2023年5月12日
    00
  • Golang交叉编译之跨平台编译使用详解

    Golang交叉编译之跨平台编译使用详解 在 Golang 开发中,经常需要将代码编译成不同操作系统或 CPU 下的可执行文件,这个过程就被称为交叉编译。本文将介绍如何使用 Golang 进行跨平台编译。 准备工作 在进行 Golang 跨平台编译之前,需要先安装目标平台的交叉编译工具,以 Windows 平台为例: sudo apt-get update …

    database 2023年5月22日
    00
  • MySQL的23个需要注意的地方

    MySQL的23个需要注意的地方攻略 MySQL是一个流行的关系型数据库管理系统,但在使用MySQL时也有很多注意事项,下面列举了23个需要注意的地方: 1. 数据类型的选择 在创建表时需要根据数据类型的需求选择正确的数据类型以减少存储空间和提高查询效率。例如,如果字段只存储0/1值,则可以使用BIT数据类型。 示例: CREATE TABLE test_t…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部