《OpenStack云计算实战手册(第2版)》——1.7 添加用户

本节书摘来自异步社区《OpenStack云计算实战手册(第2版)》一书中的第1章,第1.7节,作者: 【英】Kevin Jackson , 【美】Cody Bunch 更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.7 添加用户

在OpenStack身份认证服务中添加用户时,必须要有一个能容纳该用户的租户,还需要定义一个能分配给该用户的角色。在本节中,创建了两个用户。第一个用户名为admin,它在cookbook租户中被分配为admin角色。第二个用户名为demo,同样在cookbook租户中,它被分配为Member角色。

准备工作
在开始之前,必须确认已经登录到已经安装了OpenStack身份认证服务的OpenStack控制节点上,或者有一个已经连接到安装了OpenStack身份认证服务的服务器上的Ubuntu客户端。

执行以下命令,登录到使用Vagrant创建的OpenStack控制节点:

vagrant ssh controller

如果keystone客户端工具尚未安装,可以通过如下命令在Ubuntu客户端上安装以便管理我们的OpenStack身份认证服务:

sudo apt-get update  
sudo apt-get -y install python-keystoneclient

确保已经设置了正确的环境变量,能访问到OpenStack环境。

export ENDPOINT=172.16.0.200  
export SERVICE_TOKEN=ADMIN  
export SERVICE_ENDPOINT=http://${ENDPOINT}:35357/v2.0

操作步骤
要在OpenStack环境中创建用户,需要执行如下步骤。

1.如果要在cookbook租户中创建一个用户,首先要获得cookbook租户的ID。通过keystone命令,指定tenant-list选项,就可以得到该ID,然后将其存储在TENANT_ID变量中,命令如下所示:

TENANT_ID=$(keystone tenant-list \ | awk '/\ cookbook\ / {print $2}')

2.现在已经得到了租户的ID。接下来,用如下命令在cookbook租户中创建admin用户,注意要使用user-create选项,还需要为该用户设置密码:

PASSWORD=openstack  
keystone user-create \ --name admin \  --tenant_id $TENANT_ID \  --pass $PASSWORD \  --email root@localhost \  --enabled true

输出如图1-4所示。


1b4f4ef9510d75575bc7d112cacede761d69265a

3.在创建admin用户时,为了赋予它admin角色,需要先获得admin角色的ID。和第一步中查找租户ID的方法相似,用role-list选项取出admin角色的ID,然后将其存储在一个变量里。

ROLE_ID=$(keystone role-list \ | awk '/\ admin\ / {print $2}')

4.为了将角色赋予admin用户,需要用到创建admin用户时返回的用户ID。执行如下的keystone命令,通过usr-list选项列出所有的用户,从而得到admin用户的ID:

USER_ID=$(keystone user-list \ | awk '/\ admin\ / {print $2}')

5.最后,根据租户ID、用户ID,以及对应的角色ID,通过user-role-add选项把角色赋予对应的用户。

keystone user-role-add \  --user $USER_ID \  --role $ROLE_ID \  --tenant_id $TENANT_ID

提示

注意,成功执行该命令之后是没有输出的。
6.为了管理整个环境,admin用户也需要在admin租户中。为此,需要获得admin租户的ID并使用新租户的ID重复前面的步骤:

ADMIN_TENANT_ID=$(keystone tenant-list \ | awk '/\ admin\ / {print $2}')  
keystone user-role-add \  --user $USER_ID \  --role $ROLE_ID \  --tenant_id $ADMIN_TENANT_ID

7.接下来要在cookbook租户里创建一个demo用户,并赋予其Member角色,类似前5步,命令如下所示:

# Get the cookbook tenant ID   
TENANT_ID=$(keystone tenant-list \ | awk '/\ cookbook\ / {print $2}')  # Create the user  
PASSWORD=openstack  
keystone user-create \  --name demo \  --tenant_id $TENANT_ID \  --pass  $PASSWORD \  --email demo@localhost \  --enabled true   # Get the Member role ID  
ROLE_ID=$(keystone role-list \ | awk '/\ Member\ / {print $2}')  # Get the demo user ID  
USER_ID=$(keystone user-list \ | awk '/\ demo\ / {print $2}')   # Assign the Member role to the demo user in cookbook   
keystone user-role-add \  --user $USER_ID \    --role $ROLE_ID \  --tenant_id $TENANT_ID

工作原理
在向OpenStack身份认证服务里添加用户之前,必需先创建该用户对应的租户和角色。创建好之后,需要取得它们的ID,通过身份认证服务的命令行客户端程序将其和对应的用户关联起来。要注意同一个用户可以同时是多个租户的成员,并且在不同的租户里可以被赋予不同的角色。

创建用户的命令选项是user-create,语法如下所示:

keystone user-create \  --name user_name \    --tenant_id TENANT_ID \  --pass password \  --email email_address \  --enabled true

user_name属性可以是任意名称,但不能包含空格。password属性是必需的,在之前的例子里,它们都被设为openstack。email_address属性也是必需的。

赋予一个用户某个角色的命令选项是user-role-add,语法如下所示:

keystone user-role-add \  --user USER_ID \  --role ROLE_ID \  --tenant_id TENANT_ID

这表示在赋予角色之前,必须先取得用户的ID、角色的ID及租户的ID。这些ID可以通过如下命令得到:

keystone tenant-list  
keystone role-list  
keystone user-list

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541467.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源软件和自由软件_自由和开源软件的经济学

开源软件和自由软件零边际成本 (Zero Marginal Cost) At the core of the financial aspects of Free and Open Source is the zero negligible expense of merchandise in an environment that is digital. Right now, the rise of Free and Open Source speaks to an affirma…

java外部类_Java里什么叫内部类什么叫外部类

展开全部对普通类(没有内部类的类)来说,62616964757a686964616fe78988e69d8331333337396234内部类和外部类都与他无关;对有内部类的类来说,它们就是其内部类的外部类,外部类是个相对的说法,其实就是有内部类的类。所以…

《精通Matlab数字图像处理与识别》一6.2 傅立叶变换基础知识

本节书摘来自异步社区《精通Matlab数字图像处理与识别》一书中的第6章,第6.2节,作者 张铮 , 倪红霞 , 苑春苗 , 杨立红,更多章节内容可以访问云栖社区“异步社区”公众号查看 6.2 傅立叶变换基础知识 精通Matlab数字图像处理与识别要理解傅立…

多线程循环输出abcc++_C ++循环| 查找输出程序| 套装5

多线程循环输出abccProgram 1: 程序1&#xff1a; #include <iostream>using namespace std;int main(){int num 15673;int R1 0, R2 0;do {R1 num % 10;R2 R2 * 10 R1;num num / 10;} while (num > 0);cout << R2 << " ";return 0;}Ou…

java oql_深入理解java虚拟机(八):java内存分析工具-MAT和OQL

以下内容翻译自MAT帮助文档。一、Class HistogramClass Histogram shows the classes found in the snapshot, the number of objects for each class, the heap memory consumption of these objects, and the minimum retained size of the objects二、Dominator treeDomina…

《Python数据分析与挖掘实战》一1.2 从餐饮服务到数据挖掘

本节书摘来自华章出版社《Python数据分析与挖掘实战》一书中的第1章&#xff0c;第1.2节&#xff0c;作者 张良均 王路 谭立云 苏剑林&#xff0c;更多章节内容可以访问云栖社区“华章计算机”公众号查看 1.2 从餐饮服务到数据挖掘 企业经营最大的目的就是盈利&#xff0c;而餐…

obj[]与obj._Ruby中带有示例的Array.include?(obj)方法

obj[]与obj.Ruby Array.include&#xff1f;(obj)方法 (Ruby Array.include?(obj) Method) In the previous articles, we have seen how we can check whether two Array instances are identical or not with the help of <> operator, operator, and .eql? method?…

java javah_Java开发网 - 一个javah的问题

Posted by:jerry_xuPosted on:2006-03-13 15:39我在环境变量中已经设置了path为D:\Program Files\Java\jdk1.5.0_06&#xff0c;ClassPath设置为.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;class的路径为&#xff1a;D:\JNItest\bin\jni\Hello.class &#xff0c;但是…

《Python面向对象编程指南》——2.7 __del__()方法

本节书摘来自异步社区《Python面向对象编程指南》一书中的第2章&#xff0c;第2.7节&#xff0c;作者&#xff3b;美&#xff3d;Steven F. Lott&#xff0c; 张心韬 兰亮 译&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.7 __del__()方法 __del__()方…

NullReferenceException C#中的异常

什么是NullReferenceException&#xff1f; (What is NullReferenceException?) NullReferenceException is an exception and it throws when the code is trying to access a reference that is not referencing to any object. If a reference variable/object is not refe…

java map key 大写转小写_Spring JdbcTemplate 查询出的Map,是如何产生大小写忽略的Key的?(转)...

Java 是区分大小写的&#xff0c;普通的Map例如HashMap如果其中的key"ABC" value"XXX"那么map.get("Abc") 或 map.get("abc")是获取不到值得。但Spring中产生了一个忽略大小写的map使我产生了好奇例如 jdbcTemplate.queryForList(sql)…

《iOS 6核心开发手册(第4版)》——2.11节秘诀:构建星星滑块

本节书摘来自异步社区《iOS 6核心开发手册&#xff08;第4版&#xff09;》一书中的第2章&#xff0c;第2.11节秘诀&#xff1a;构建星星滑块&#xff0c;作者 【美】Erica Sadun&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 2.11 秘诀&#xff1a;构建星星…

css框架和js框架_优雅设计的顶级CSS框架

css框架和js框架Brief discussion: 简要讨论&#xff1a; Well, who doesnt want their website or web page to look attractive, stylish and be responsive? 那么&#xff0c;谁不希望自己的网站或网页看起来有吸引力&#xff0c;时尚并且ReactSwift&#xff1f; We put …

软考下午题具体解释---数据流图设计

在历年的软考下午题其中&#xff0c;有五道大题。各自是数据流图的设计&#xff0c;数据库设计&#xff0c;uml图&#xff0c;算法和设计模式&#xff0c;从今天这篇博文開始&#xff0c;小编就跟大家来一起学习软考下午题的相关内容。包含理论上的知识以及典型例题的解说&…

基本程序 打印Scala的Hello World

Scala中的基本程序 (Basic program in Scala) As your first Scala program, we will see a basic output program that just prints "Hello World" or any other similar type of string. With this example, we will see what are the part of the code that is im…

java treemap lastkey_Java TreeMap lastKey()用法及代码示例

java.util.TreeMap.lastKey()用于检索Map中存在的最后一个或最高键。用法:tree_map.lastKey()参数&#xff1a;该方法不带任何参数。返回值&#xff1a;该方法返回映射中存在的最后一个键。异常&#xff1a;如果映射为空&#xff0c;则该方法将引发NoSuchElementException。以下…

mysql属于数据库三级模式_数据库系统的三级模式指的是什么

数据库系统的三级模式指的是什么发布时间&#xff1a;2020-10-26 10:11:21来源&#xff1a;亿速云阅读&#xff1a;52作者&#xff1a;小新小编给大家分享一下数据库系统的三级模式指的是什么&#xff0c;希望大家阅读完这篇文章后大所收获&#xff0c;下面让我们一起去探讨吧&…

《自顶向下网络设计(第3版)》——导读

目录 第1部分 辨明客户的需求和目标 第1章 分析商业目标和制约 1.1 采用自顶向下的网络设计方法 1.2 分析商业目标 1.3 分析商业制约 1.4 商业目标检查表 1.5 小结 1.6 复习题 1.7 设计环境 第2章 分析技术目标与折衷措施 2.1 可扩展性 2.2 可用性 2.3 网络性能 2.4 安全性 2…

python矩阵变化_用numpy改变矩阵的形状

我的问题有两个方面。我有下面的代码来处理一些矩阵。在import numpytupleList [(0, 122), (1, 246), (2, 157), (3, 166), (4, 315), (5, 108), (6, 172), (7, 20), (8, 173), (9, 38), (10, 28), (11, 72), (12, 102), (13, 277), (14, 318), (15, 316), (16, 283), (17, 31…

最小硬币问题_进行更改的最小硬币数量

最小硬币问题Description: 描述&#xff1a; This is classic dynamic programming problem to find minimum number of coins to make a change. This problem has been featured in interview rounds of Amazon, Morgan Stanley, Paytm, Samsung etc. 这是经典的动态编程问题…