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

    xiaoxiao2023-09-15  183

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

    1.7 添加用户

    OpenStack云计算实战手册(第2版)在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所示。

    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 相关资源:敏捷开发V1.0.pptx
    最新回复(0)