温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

OpenStack stein安装(二)keystone

发布时间:2020-08-08 20:19:58 来源:网络 阅读:983 作者:zhaolinew 栏目:系统运维

  Openstack身份验证服务提供一个单点集成的管理认证,授权和服务目录,当用户交互时身份验证服务通常的是第一个服务, 一旦通过认证,同样,其它openstack服务利用身份验证服务确保用户是谁并发现部署中其它服务的位置,身份识别服务同样也可以使用外部的用户管理系统(如LDAP).
  使用服务目录,身份认证服务管理的用户和服务可以定位其它的服务,顾名思义,服务目录是OpenStack部署中可用服务的集合。每个服务可以有一个或多个端点,每个端点可以是三种类型之一: admin、internal或public。在生产环境中,由于安全原因,不同的端点类型可能位于暴露给不同类型用户的不同网络上。例如,public API网络可以从Internet上看到,这样客户就可以管理他们的云。Admin API网络可能仅限于管理云基础设施的组织中的操作人员。Internal API网络可能仅限于包含OpenStack服务的主机。
  同时为了实现可扩展性openstack同样支持多区域,为简单起见,本列中对所有端点类型和默认的RegionOne区域使用管理网络。在标识服务中创建的区域、服务和端点组成了部署的服务目录。部署中的每个OpenStack服务都需要一个服务入口和一个相应的的端点存储在标识服务中。这都可以在安装和配置身份认证服务之后完成。
  身份认证服务包含下列组件:

  • Server
    一个集中的使用RESTful 接口提供认证和授权服务.
  • Drivers
    驱动程序或服务后端集成到集中的服务器。它们用于访问OpenStack外部存储库中的标识信息,并且可能已经存在于部署OpenStack的基础设施中(例如,SQL数据库或LDAP服务器).
  • Modules
    中间件模块运行在使用标识服务的OpenStack组件的地址空间中。这些模块拦截服务请求,提取用户凭证,并将其发送到中央服务器进行授权。中间件模块和OpenStack组件之间的集成使用Python Web服务器网关接口。
准备工作
  1. 连接到数据库,可以在本机也可以使用mysql客户端连接
    $ mysql -u root -proot123
  2. 建立keystone数据库
    MariaDB [(none)]> CREATE DATABASE keystone;
  3. 授予相应的权限给keystone数据库,密码统一为用户名后加123
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone123';
    安装和配置组件
  4. 安装包
    # yum install openstack-keystone httpd mod_wsgi
  5. 编辑文件/etc/keystone/keystone.conf并加入如下配置
    # vi /etc/keystone/keystone.conf
    [database]
    # ...
    connection = mysql+pymysql://keystone:keystone123@dbs.flex.net/keystone
    In the [token] section, configure the Fernet token provider:
    [token]
    # ...
    provider = fernet
  6. 构建数据库
    # su -s /bin/sh -c "keystone-manage db_sync" keystone
  7. 初始化Fernet键库
    # keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
    # keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
  8. 引导标识服务
    # keystone-manage bootstrap --bootstrap-password admin123 \
      --bootstrap-admin-url http://stack.flex.net:5000/v3/ \
      --bootstrap-internal-url http://stack.flex.net:5000/v3/ \
      --bootstrap-public-url http://stack.flex.net:5000/v3/ \
      --bootstrap-region-id RegionOne
  9. 如果这步出错,如你写错了域名或端口等,会无法创建下面的domain, projects, users and roles, 重新配置是不能解决的,它不会覆盖前面的配置,解决办法是如下:
        ○ 在mysql中删除endpoint配置,重新配置:
        MariaDB [keystone]> select * from endpoint;
        +-------------+--------------------+-----------+----------+--------------------------------+-------+---------+-----------+
        | id          | legacy_endpoint_id | interface |service_id| url                            | extra | enabled | region_id |
        +-------------+--------------------+-----------+----------+--------------------------------+-------+---------+-----------+
        | 0b6dd3a784… | NULL               | internal  | ad298…   | http://192.168.137.5:35357/v3/ | {}    |       1 | RegionOne |
        | 4f7fdb8fc6… | NULL               | public    | ad298…   | http://192.168.137.5:5000/v3/  | {}    |       1 | RegionOne |
        | 8451f154c7… | NULL               | admin     | ad298…   | http://192.168.137.5:35357/v3/ | {}    |       1 | RegionOne |
        +-------------+--------------------+-----------+----------+--------------------------------+-------+---------+-----------+
        3 rows in set (0.15 sec)
        MariaDB [keystone]> delete from endpoint where url like '%137.5%';    #配错的url或主机
        Query OK, 3 rows affected (0.02 sec)
        MariaDB [keystone]> commit;
        ○ 处理完成后,重新配置上面的步骤
    配置Apache Server
  10. 修改文件/etc/httpd/conf/httpd.conf配置server name为控制节点服务器的名称
    ServerName controller1
  11. 在/etc/httpd/conf.d下建立一个软链接文件指向/usr/share/keystone/wsgi-keystone.conf
    # ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
    完成安装
  12. 允许系统引导时自动启动服务并启动apache服务
    # systemctl enable httpd.service
    # systemctl start httpd.service
  13. 配置管理帐号admin,可以将这个文件写成一个脚本的方式,并source脚本

    # cat admin-openrc
    export OS_USERNAME=admin
    export OS_PASSWORD=admin123
    export OS_PROJECT_NAME=admin
    export OS_USER_DOMAIN_NAME=Default
    export OS_PROJECT_DOMAIN_NAME=Default
    export OS_AUTH_URL=http://stack.flex.net:5000/v3
    export OS_IDENTITY_API_VERSION=3
    
    # source admin-openrc
    建立域,项目,用户和角色

    身份验证服务为每个OpenStack服务提供用户的授权服务, 身份验证服务使用域、项目、用户和角色的组合,

  14. 同时这个“default” 域已经存在,在keystone-manage bootstrap步骤中已经创建, 我们建立一个新的域名子为example
    #openstack domain create --description "An Example Domain" example
    +-------------+----------------------------------+
    | Field       | Value                            |
    +-------------+----------------------------------+
    | description | An Example Domain                |
    | enabled     | True                             |
    | id          | f2a3ddcdc32c411ba5d9e480c25ce8b9 |
    | name        | example                          |
    | tags        | []                               |
    +-------------+----------------------------------+
  15. 如果配置错误或名字写错了,怎么改呢方法如下:
        ○ 先要禁用写错的域名
        #openstack domain set --disable exampl
        ○ 然后删除错误的域名
        #openstack domain delete exampl 
  16. 建立一个项目,该项目为每个服务都创建包含一个唯一的用户
    # openstack project create --domain default --description "Service Project" service
    +-------------+----------------------------------+
    | Field       | Value                            |
    +-------------+----------------------------------+
    | description | Service Project                  |
    | domain_id   | default                          |
    | enabled     | True                             |
    | id          | 3e33e6c8e1d14b7b9bbf64edcafb1023 |
    | is_domain   | False                            |
    | name        | service                          |
    | parent_id   | default                          |
    | tags        | []                               |
    +-------------+----------------------------------+
  17. 常规(非管理员)的任务应该使用非特权的项目和用户,这个列子中,我们建立一个myproject项目和myuser用户

        ○ 建立项目名为myproject
        #openstack project create --domain default --description "Demo Project" myproject
        +-------------+----------------------------------+
        | Field       | Value                            |
        +-------------+----------------------------------+
        | description | Demo Project                     |
        | domain_id   | default                          |
        | enabled     | True                             |
        | id          | c9fc9f23c899402aa10eaabf0c71fff5 |
        | is_domain   | False                            |
        | name        | myproject                        |
        | parent_id   | default                          |
        | tags        | []                               |
        +-------------+----------------------------------+ 
        注意:不要重复此步骤在建立这项目的用户时
        ○ 建立myuser用户
        #openstack user create --domain default --password-prompt myuser
        User Password:myuser123
        Repeat User Password:myuser123
        +---------------------+----------------------------------+
        | Field               | Value                            |
        +---------------------+----------------------------------+
        | domain_id           | default                          |
        | enabled             | True                             |
        | id                  | 81949d6833a04e61b79fe3a8a49cd5a5 |
        | name                | myuser                           |
        | options             | {}                               |
        | password_expires_at | None                             |
        +---------------------+----------------------------------+
        ○ 建立一个myrole角色
        #openstack role create myrole
        +-------------+----------------------------------+
        | Field       | Value                            |
        +-------------+----------------------------------+
        | description | None                             |
        | domain_id   | None                             |
        | id          | b49d96c43eaa43cfa9519614f0b84942 |
        | name        | myrole                           |
        +-------------+----------------------------------+
        ○ 添加myrole角色到myproject项目和myuser用户
        # openstack role add --project myproject --user myuser myrole
    
    注意:你可以重复上面的步骤建立更多的项目和用户。
    校验操作

    在安装其它服务之前校验身份验证服务是否正常安装,执行下列命令在controller节点上。

  18. 临时取消OS_AUTH_URL和OS_PASSWORD环境变量:
    $ unset OS_AUTH_URL OS_PASSWORD
  19. 使用admin用户请求验证的token:
    # openstack --os-auth-url http://stack.flex.net:5000/v3 \
    --os-project-domain-name Default --os-user-domain-name Default \
    --os-project-name admin --os-username admin token issue
    Password: admin123
    +------------+--------------------------------------------------------------+
    | Field      | Value                                                        |       +------------+--------------------------------------------------------------+
    | expires    | 2019-08-22T05:32:10+0000                                     |   
    | id         | gAAAAABdXhrKNMqos25-DjAmaD5yu1dy_-PPtmch7YOgObHg25d2V0pEO… …|
    | project_id | 67139b2bd6c64e1c88136955dbef56a0                             |                         | user_id    | 681e9f941cb249e4a5058414057c7866                             |    +------------+--------------------------------------------------------------+
  20. 使用myuser用户请求验证的token:
    # openstack --os-auth-url http://stack.flex.net:5000/v3 \
    --os-project-domain-name Default --os-user-domain-name Default \
    --os-project-name myproject --os-username myuser token issue
    Password: myuser123
    +------------+-------------------------------------------------------------+
    | Field      | Value                                                       |
    +------------+-------------------------------------------------------------+
    | expires    | 2019-08-22T05:34:30+0000                                    |
    | id         | gAAAAABdXhtWYuSN8TlpDjFkNFtr_eElchimIc2YUHBWmImjX5ZpZm3……. |
    | project_id | c9fc9f23c899402aa10eaabf0c71fff5                            | 
    | user_id    | 81949d6833a04e61b79fe3a8a49cd5a5                            |
    +------------+-------------------------------------------------------------+
    建立openstack客户端环境脚本
  21. 建立脚本

    为管理和演示项目以及用户创建客户机环境脚本。本指南的后续部分将引用这些脚本,以便为客户机操作加载适当的凭据。
        1. 建立和编辑文件admin-openrc添加如下内容:
        # cat admin-openrc
        export OS_USERNAME=admin
        export OS_PASSWORD=admin123
        export OS_PROJECT_NAME=admin
        export OS_USER_DOMAIN_NAME=Default
        export OS_PROJECT_DOMAIN_NAME=Default
        export OS_AUTH_URL=http://stack.flex.net:5000/v3
        export OS_IDENTITY_API_VERSION=3
        export OS_IMAGE_API_VERSION=2
    
        2. 建立和编辑文件demo-openrc添加如下内容:
        # cat demo-openrc
        export OS_PROJECT_DOMAIN_NAME=Default
        export OS_USER_DOMAIN_NAME=Default
        export OS_PROJECT_NAME=myproject
        export OS_USERNAME=myuser
        export OS_PASSWORD=myuser123
        export OS_AUTH_URL=http://stack.flex.net:5000/v3                                                  
        export OS_IDENTITY_API_VERSION=3
        export OS_IMAGE_API_VERSION=2
  22. 使用脚本
    要将客户机作为特定的项目和用户运行, 只需在运行它们之前加载相关的客户机环境脚本。例如:
        1. 加域admin-openrc文件构建身份验证服务,admin项目和用户凭据的环境变量:
        $ . admin-openrc
        2. 请求授权的token:
        $ openstack token issue
        +------------+--------------------------------------------------------------------------------+
        | Field      | Value                                                                          |
        +------------+--------------------------------------------------------------------------------+
        | expires    | 2019-08-22T05:41:10+0000                                                       |
        | id         | gAAAAABdXhzmr94abDAnVgAtAlHIOqK_1OTs2nckP98hTfWLCSdliXvE13OGERiAlPy2SbATpj-39… |
        | project_id | 67139b2bd6c64e1c88136955dbef56a0                                               |
        | user_id    | 681e9f941cb249e4a5058414057c7866                                               |
        +------------+--------------------------------------------------------------------------------+
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI