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日

相关文章

  • mysql 字符集的系统变量说明

    MySQL 字符集是 MySQL 数据库中用来存储数据的编码方式。设置适当的字符集可以避免在存储、操作和显示数据时出现乱码问题。在 MySQL 中,有一些系统变量与字符集有关,我们来详细了解一下。 character_set_client 该系统变量规定 MySQL 客户端连接时使用的字符集。当客户端使用该字符集向 MySQL 服务器提交数据时,MySQL …

    database 2023年5月22日
    00
  • 浅谈MySQL索引优化分析

    浅谈MySQL索引优化分析 在实际应用中,MySQL索引优化是提升查询性能的关键。本文将介绍MySQL索引的基本原理,以及如何进行索引优化。 MySQL索引的基本原理 MySQL索引主要基于B+树的数据结构实现。B+树是一种多路搜索树,它具有以下特点: 所有的数据节点都在同一层; 叶子节点包含所有记录的关键字和指向记录的指针。 在MySQL中,数据按照主键建…

    database 2023年5月19日
    00
  • mysql中使用sql命令将时间戳解析成datetime类型存入

    将时间戳解析成datetime类型存入MySQL,具体步骤如下: 1.确定数据表结构 首先,我们需要确定需要存储时间戳的数据表结构,以及将时间戳解析成datetime类型的目标列。 例如,假设我们要创建一个名为user的数据表,包含如下字段: CREATE TABLE user ( id INT PRIMARY KEY, name VARCHAR(50), …

    database 2023年5月22日
    00
  • MYSQL时区导致时间差了14或13小时的解决方法

    下面我将详细讲解“MYSQL时区导致时间差了14或13小时的解决方法”的完整攻略。 问题描述 在MYSQL中,有时会因为时区的问题,导致实际时间与存储时间相差了14或13小时的情况。例如,存储的时间是12:00,但是实际查询得到的时间是22:00或者23:00。 解决方法 解决这个问题,我们需要进行以下步骤: 步骤一:设置MYSQL时区 首先,我们需要设置M…

    database 2023年5月22日
    00
  • Linux系统下Mysql使用简单教程(一)

    下面是关于“Linux系统下Mysql使用简单教程(一)”的完整攻略: 概述 在Linux系统下,Mysql是一款常用的关系型数据库管理系统。这篇教程将介绍如何在Linux系统下安装、配置和使用Mysql。本教程的目标读者是初学者,不需要任何关于Mysql或数据库管理的经验。 安装Mysql 在Linux系统中,可以使用apt-get命令安装Mysql: s…

    database 2023年5月22日
    00
  • Navicat远程连接SQL Server并转换成MySQL步骤详解

    让我详细讲解一下“Navicat远程连接SQL Server并转换成MySQL步骤详解”的完整攻略。 概述 Navicat是一种著名的数据库管理工具,可用于多种数据库,包括MySQL、SQL Server、Oracle等。本攻略将逐步讲解如何使用Navicat远程连接SQL Server数据库并将其转换为MySQL数据库。 步骤 步骤1:安装Navicat …

    database 2023年5月22日
    00
  • CentOS 下 Redis 2.2 安装配置详解

    一. 关于 Redis Redis是一种高级 key-value 数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。它在保持键值数据库简单快捷特点的同时,又吸收了部分关系数据库的优点。从而使它的位置处于关系数据库和键值数据库之间。Redis不仅能保存Strings类型的数据,还能保存Lists类型(有序)和Sets类型(无序)…

    Redis 2023年4月11日
    00
  • mysql事务,SET AUTOCOMMIT,START TRANSACTION

    http://yulei568.blog.163.com/blog/static/135886720071012444422/   MyISAM不支持 START TRANSACTION | BEGIN [WORK] COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE] ROLLBACK [WORK] [AND [NO]…

    MySQL 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部