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

yizhihongxing

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日

相关文章

  • Django在win10下的安装并创建工程

    下面是Django在Win10下的安装及创建工程的攻略: 安装Python 要安装Django,首先需要安装Python。在Windows下,可以到Python官网下载32位或64位的Python安装程序,然后运行安装程序按照提示进行安装。安装完成后,可以在命令行窗口中输入以下命令验证Python是否安装成功: python –version 如果显示出了…

    database 2023年5月22日
    00
  • Linux下redis5.0.5的安装过程与配置方法

    下面是“Linux下redis5.0.5的安装过程与配置方法”的完整攻略。 1. 安装redis 1.1 下载redis 首先要从redis官方网站下载redis的安装包,官网下载地址:https://redis.io/download $ wget http://download.redis.io/releases/redis-5.0.5.tar.gz 1…

    database 2023年5月22日
    00
  • php运行提示Can’t connect to MySQL server on ‘localhost’的解决方法

    “Can’t connect to MySQL server on ‘localhost’” 是 PHP 连接 MySQL 数据库时常见的错误之一。以下是解决这个问题的详细攻略,包括两条示例说明。 1. 检查 MySQL 服务器是否在运行 首先,这个错误可能是由于 MySQL 服务器没有运行引起的。因此,需要检查 MySQL 服务器是否在运行。以下是检查 M…

    database 2023年5月22日
    00
  • MySql 基础知识-常用命令及sql语句

    一.常用mysql命令行命令   1,启动mysql服务 net start mysql.        停止mysql服务 net stop mysql   2,netstart -na|findstr 3306查看被监听的端口,findstr 用于查找后面的端口是否存在   3,在windowns中登陆mysql控制台的一般过程:            …

    MySQL 2023年4月12日
    00
  • linux下mysql链接被防火墙阻止的解决方法

    针对”linux下mysql链接被防火墙阻止的解决方法”,我为您提供以下完整攻略: 问题背景 在Linux系统中,连接MySQL时,可能碰到防火墙的问题,导致连接失败。防火墙是保护系统的一道重要防线,但是如果不正确地配置防火墙规则,就会导致连接MySQL等服务时被阻止。 解决方法 方法一:修改防火墙规则 针对该问题,最简单的解决方法是修改防火墙规则。具体步骤…

    database 2023年5月22日
    00
  • mysql 1449 : The user specified as a definer (‘root’@’%’) does not exist ,mysql 赋给用户权限 grant all privileges on

    mysql 1449 : The user specified as a definer (‘root’@’%’) does not exist 解决方法 遇到了 SQLException: access denied for  @’localhost’ (using password: no)   遇到了 SQLException: access deni…

    MySQL 2023年4月13日
    00
  • Windows下SQL Serever 2012彻底卸载删除教程

    当需要卸载SQL Server 2012时,我们可以按照以下步骤进行操作。需要注意的是,下面的示例操作命令需要在管理员模式下运行。 步骤一:停止SQL Server服务并禁用其启动 在控制面板的”管理工具”中打开”服务”,找到并停止所有SQL Server相关服务。然后在”属性”中将服务的启动类型改为”禁用”。 net stop MSSQL$SQL2012 …

    database 2023年5月22日
    00
  • 解析SQL Server中SQL日期转换出错的原因

    解析SQL Server中SQL日期转换出错的原因 在SQL Server中,我们使用日期转换函数将一个字符串类型的日期转换为日期类型,但是在使用过程中,常常会因为一些列原因导致日期转换出现错误。本文将全面介绍常见的日期转换出错的原因,为大家提供一些解决方案。 使用CAST或CONVERT函数 在SQL Server中,我们通常使用如下的格式将字符串转换为日…

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