了解和使用keystone(三)创建admin用户

admin用户可以用来创建domain,project,user。在keystone.conf中,通过设定admin_token,提供了一个初始的管理员令牌,假定为ADMIN,我们用这个令牌来创建admin用户。这是个管理的问题,如果分配给不同的人员,应该要使用不同的username/password。

配置环境变量

$ openstack --os-token=ADMIN --os-url=http://localhost:35357/v3 --os-identity-api-version=3 user list

这是显示用户的命令,我们看到里面有三个参数,这三个参数几乎在所有的命令都需要设置。这会很烦的,可以设置环境变量来解决。

$ cat wei_env
 export OS_TOKEN=ADMIN
 export OS_URL=http://localhost:35357/v3
 export OS_IDENTITY_API_VERSION=3
$ source wei_env

这样,前面的命令,就可以简化为$ openstack user list

为了更好地了解CLI,后面将不使用环境变量

创建role

管理员属于管理角色:admin,因此要创建管理员,首先要创建管理员角色。

 $ openstack --os-token=ADMIN --os-url=http://localhost:35357/v3 --os-identity-api-version=3 role create admin
 +-----------+----------------------------------+
 | Field     | Value                            |
 +-----------+----------------------------------+
 | domain_id | None                             |
 | id        | 868b27db6a814d9eab31815574cd909f |
 | name      | admin                            |
 +-----------+----------------------------------+

查看角色:

 $ openstack --os-token=ADMIN --os-url=http://localhost:35357/v3 --os-identity-api-version=3 role list
 +----------------------------------+-------+
 | ID                               | Name  |
 +----------------------------------+-------+
 | 868b27db6a814d9eab31815574cd909f | admin |
 +----------------------------------+-------+

我们还可以进入数据库看看:

 mysql> select * from role;
 +----------------------------------+-------+-------+-----------+
 | id                               | name  | extra | domain_id |
 +----------------------------------+-------+-------+-----------+
 | 868b27db6a814d9eab31815574cd909f | admin | {}    | <>  |
 +----------------------------------+-------+-------+-----------+
 1 row in set (0.00 sec)

创建用户

在keystone中,用户是有归属的。关系为domain --》 project --》user。一个domain包含多个projects,一个projects可包含多个用户,反过来,一个用户可以归属不同的projects,在V2.0,没有domain,只有project(tenant),在v3中增加了一层关系。在创建一个用户之前,我们先要创建归属的domain和project。

1、创建domain

$ openstack --os-token=ADMIN --os-url=http://localhost:35357/v3 --os-identity-api-version=3 domain create --description "Administrators Domain" admin-domain
 +-------------+----------------------------------+
 | Field       | Value                            |
 +-------------+----------------------------------+
 | description | Administrators Domain            |
 | enabled     | True                             |
 | id          | 13b6ce90f57844e3bfec0eeb0389104e |
 | name        | admin-domain                     |
 +-------------+----------------------------------+

2、创建project

$ openstack --os-token=ADMIN --os-url=http://localhost:35357/v3 --os-identity-api-version=3 project create --domain admin-domain --description "Admin project" admin-project
 +-------------+----------------------------------+
 | Field       | Value                            |
 +-------------+----------------------------------+
 | description | Admin project                    |
 | domain_id   | 13b6ce90f57844e3bfec0eeb0389104e |
 | enabled     | True                             |
 | id          | 5b5893ebc8ca42abaaa18dca873a6921 |
 | is_domain   | False                            |
 | name        | admin-project                    |
 | parent_id   | 13b6ce90f57844e3bfec0eeb0389104e |
 +-------------+----------------------------------+

3、创建user

设定密码为admin123

$ openstack --os-token=ADMIN --os-url=http://localhost:35357/v3 --os-identity-api-version=3 user create --domain admin-domain --password-prompt adminUser
 User Password:
 Repeat User Password:
 +-----------+----------------------------------+
 | Field     | Value                            |
 +-----------+----------------------------------+
 | domain_id | 13b6ce90f57844e3bfec0eeb0389104e |
 | enabled   | True                             |
 | id        | 4f63af5f7a6b42088289013ae109830b |
 | name      | adminUser                        |
 +-----------+----------------------------------+

注意:不要在此关联--project,在确定role的时候再进行关联。

4、赋予用户admin的角色

$ openstack --os-token=ADMIN --os-url=http://localhost:35357/v3 --os-identity-api-version=3 role add --project admin-project --user adminUser admin

我们验证一下结果,curl是个很有用的linux命令

$ curl -H "X-Auth-Token:ADMIN" -H "Content-type: application/json" http://localhost:35357/v3/projects/5b5893ebc8ca42abaaa18dca873a6921/users/4f63af5f7a6b42088289013ae109830b/roles | python -mjson.tool
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
 100   345  100   345    0     0   3559      0 --:--:-- --:--:-- --:--:--  3593
 {
    "links": {
        "next": null,
        "previous": null,
        "self": "http://localhost:35357/v3/projects/5b5893ebc8ca42abaaa18dca873a6921/users/4f63af5f7a6b42088289013ae109830b/roles"
    },
    "roles": [
        {
            "domain_id": null,
            "id": "868b27db6a814d9eab31815574cd909f",
            "links": {
                "self": "http://localhost:35357/v3/roles/868b27db6a814d9eab31815574cd909f"
            },
            "name": "admin"
        }
    ]
 }

使用用户名和密码来进行操作

$ openstack --os-username=adminUser --os-password=admin123 --os-url=http://localhost:35357/v3 --os-identity-api-version=3 user list
 +----------------------------------+-----------+
 | ID                               | Name      |
 +----------------------------------+-----------+
 | 4f63af5f7a6b42088289013ae109830b | adminUser |
 +----------------------------------+-----------+

这是本地命令方式,远程的RESTful接口,需要先通过账号密码获取TOKEN,然后通过TOKEN来进行操作,过程和在后面介绍。

禁止原初始token

在keystone.conf中注释掉原来的初始token,重启服务,则只能通过账号和密码访问。


你可能感兴趣的:(开发日志)