《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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

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

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

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

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

《自顶向下网络设计(第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…

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

最小硬币问题Description: 描述: 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. 这是经典的动态编程问题…

补丁(patch)的制作与应用

为什么80%的码农都做不了架构师?>>> 转自http://linux-wiki.cn/wiki/zh-hans/%E8%A1%A5%E4%B8%81(patch)%E7%9A%84%E5%88%B6%E4%BD%9C%E4%B8%8E%E5%BA%94%E7%94%A8 如果hack了开源代码,为了方便分享(如提交Bug)或自己…

hbase 伪分布安装 java_HBase基础和伪分布式安装配置

一、HBase(NoSQL)的数据模型1.1 表(table),是存储管理数据的。1.2 行键(row key),类似于MySQL中的主键,行键是HBase表天然自带的,创建表时不需要指定1.3 列族(column family),列的集合。一张表中有多个行健&#xff0c…

java script创建对象_JavaScript七种非常经典的创建对象方式

JavaScript创建对象的方式有很多,通过Object构造函数或对象字面量的方式也可以创建单个对象,显然这两种方式会产生大量的重复代码,并不适合量产。接下来介绍七种非常经典的创建对象的方式,他们也各有优缺点。一、工厂模式可以无数…

axis2开发webservice之编写Axis2模块(Module)

axis2中的模块化开发。能够让开发者自由的加入自己所需的模块。提高开发效率,减少开发的难度。 Axis2能够通过模块(Module)进行扩展。Axis2模块至少须要有两个类,这两个类分别实现了Module和Handler接口。开发和使用一个Axis2模块…

java 看书浏览器官_JAVA读取文件流,设置浏览器下载或直接预览操作

最近项目需要在浏览器中通过url预览图片。但发现浏览器始终默认下载,而不是预览。研究了一下,发现了问题:// 设置response的header,注意这句,如果开启,默认浏览器会进行下载操作,如果注释掉&…

scrapy抓取淘宝女郎

scrapy抓取淘宝女郎 准备工作 首先在淘宝女郎的首页这里查看,当然想要爬取更多的话,当然这里要查看翻页的url,不过这操蛋的地方就是这里的翻页是使用javascript加载的,这个就有点尴尬了,找了好久没有找到,这里如果有朋…

win10 iot core java_Windows 10 IoT Core 正式版初体验

今天收到Windows 10 IoT Core Team邮件,Windows 10 IoT Core正式发布。以下记录了今天在Raspberry Pi 2上的体验过程:准备工作一台运行着正版Windows 10且版本不小于10240的个人PCVisual Studio 2015 版本不小于14.0.23107.0 D14Rel Install Visual Stud…

VUE2 第五天学习--过渡效果

阅读目录 1.理解VUE---过渡效果回到顶部1.理解VUE---过渡效果 1. 过渡的-css-类名会有4个(css) 类名在 enter/leave 在过渡中切换。1. v-enter: 进入过渡的开始状态。在元素被插入时生效,在下一个帧移除。2. v-enter-active: 进入过渡的结束状态。在元素被插入时生效…

国家可持续发展议程创新示范区创建工作推进会在北京召开

2019独角兽企业重金招聘Python工程师标准>>> 为推进地方申报国家可持续发展议程创新示范区相关工作,根据国家可持续发展议程创新示范区创建工作的进展及需求,2017年4月23日—25日,科技部社会发展科技司、中国21世纪议程管理中心在…

BlockingQueue详解

前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所…

[QGLViewer]3D场景鼠标点击位置

重载鼠标事件: void AxMapControl::mousePressEvent(QMouseEvent* e) {switch(currentTool){case AX_DRAW_DIRECTION:{if (e->button() Qt::LeftButton) {QPoint screenPte->pos();qglviewer::Vec orig1, dir1;camera()->convertClickToLine(screenPt, or…

can收发器 rx_CANOpen系列教程03 _CAN收发器功能、原理及作用

1写在前面前面文章是从大方向介绍了CAN网络,让大家对CAN网络有一定的认识。本文将范围缩小,讲述整个CAN网络其中的一个CAN收发器。如下图标记出来的部分:本文结合众多初学者容易产生的疑问来讲述CAN收发器相关的知识点,大概有如下…

centos php fpm 停止_如何关闭php-fpm进程?

因为你是编译的,可以在源码中复制php-fpm的init文件到系统中:cp -f sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm然后就可以使用以下命令启动、停止、重启和重新加载php-fpm了:service php-fpm startservice php-fpm restartservice php-fpm…