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日

相关文章

  • centos 7.0 编译 安装mysql 5.6.22 过程 已完成~ 成功~ 撒花~

      mysql 下载目录/usr/local/srcmysql 解压目录 /usr/local/bin/mysql GitHub https://github.com/mysql/mysql-server   mysql官网的安装说明http://dev.mysql.com/doc/refman/5.6/en/source-installation.html…

    MySQL 2023年4月13日
    00
  • 运行程序提示access violation at address的解决方法

    关于“运行程序提示access violation at address”的问题可以分为以下步骤进行解决: 1. 确认错误提示 当出现“运行程序提示access violation at address”的错误提示时,我们需要先确认错误提示中给出的具体地址信息,这个地址告诉了我们程序在哪个内存地址出现了访问问题,例如: Access violation at…

    database 2023年5月21日
    00
  • Redis集群详解

    Redis集群详解 简介 Redis集群可以扩展Redis的数据集大小,并提高了读取和写入的性能。Redis集群将所有的数据分散放置到多个Redis节点中维护,通过读写分离实现更好的效果。在Redis集群中,如果一个节点出现问题,其他节点可以自动接管它的工作,保证Redis集群的高可用性。 Redis集群的搭建 安装Redis Redis的安装可以参考官方文…

    database 2023年5月18日
    00
  • Redis string操作命令

    字符串类型  string set 从v2.6.12版本开始,Redis增强了set功能, 语法如下: SET key value [EX seconds] [PX milliseconds] [NX|XX] EX seconds – 设置过期时间,单位为秒. PX milliseconds – 设置过期时间,单位为毫秒. NX – key值不存在的时候,才…

    Redis 2023年4月13日
    00
  • linux下多个mysql5.7.19(tar.gz)安装图文教程

    下面是“linux下多个mysql5.7.19(tar.gz)安装图文教程”的完整攻略: 简介 在 Linux 操作系统中,如果需要同时使用多个 MySQL 数据库,我们可以通过安装多个 MySQL 版本的方式来实现。这里提供的是在 linux 下使用源码安装的方式来安装多个 MySQL5.7.19 数据库的详细攻略。 准备工作 在安装多个 MySQL 数据…

    database 2023年5月22日
    00
  • MySql数据库时间序列间隔查询方式

    下面是详细的“MySql数据库时间序列间隔查询方式”的攻略。 1. 时间序列间隔查询方式的介绍 时间序列间隔查询方式,就是查询某一时间范围内的数据,并且这些数据是以时间为排序的。在MySQL数据库中,时间序列间隔查询通常使用的是BETWEEN…AND…和IN条件语句。 2. BETWEEN…AND…查询方式 BETWEEN…AND…查询方式用于查询某段时间范…

    database 2023年5月22日
    00
  • MongoDB连接数据库方法详解

    安装MongoDB 在开始连接MongoDB之前,需要先安装MongoDB。可以到官网下载对应的安装程序安装,或者通过命令行安装。以下是在Ubuntu系统中通过命令行安装的步骤: 添加apt-key wget -qO – https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add …

    MongoDB 2023年3月13日
    00
  • mysql 存储过程详解

    MySQL 存储过程详解 什么是 MySQL 存储过程 MySQL 存储过程是一种可以存储在 MySQL 数据库中的一组 SQL 语句,它们可以在需要时被多次调用。这些 SQL 语句被组织在一起并赋予一个名字,以便在需要时可以轻松地执行它们。 MySQL 存储过程通常用于封装特定的功能模块。通过使用存储过程,可以简化代码,提高代码的可重用性和可维护性,并提高…

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