【二】Openstack-KeyStone

Keystone配置

一、配置Keystone服务

#Identity service – keystone installation for Train
https://docs.openstack.org/keystone/train/install/index-rdo.html

#数据库服务上进行配置安装 OpenStack-mysql
mysql -u root -p
#Create the keystone database:
MariaDB [(none)]> CREATE DATABASE keystone;

#Grant proper access to the keystone database:
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone123';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone123';

#openstack-controller1上
[root@openstack-controller1 ~]# yum install -y mariadb
#使用ip地址
[root@openstack-controller1 ~]# mysql -ukeystone -h192.168.40.103 -pkeystone123
MariaDB [(none)]> show databases;
#使用VIP,先添加hosts解析
[root@openstack-controller1 ~]# cat /etc/hosts
192.168.40.101 openstack-controller1.xks.local openstack-controller1
192.168.40.103 openstack-mysql.xks.local openstack-mysql
192.168.40.105 openstack-haproxy1.xks.local openstack-haproxy1
192.168.40.248 openstack-vip.xks.local openstack-vip
[root@openstack-controller1 ~]# mysql -ukeystone -hopenstack-vip -pkeystone123

#Install and configure components openstack-controller1上
[root@openstack-controller1 ~]# yum install -y openstack-keystone httpd mod_wsgi
[root@openstack-controller1 conf.d]# systemctl enable httpd

#配置keystone文件 这里使用 vip 域名 
vim /etc/keystone/keystone.conf
[database]
# ...
connection = mysql+pymysql://keystone:keystone123@openstack-vip.xks.local/keystone

[token]
# ...
provider = fernet

#Populate the Identity service database
#配置数据库初始化
[root@openstack-controller1 ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone
#数据验证是否创建表
MariaDB [(none)]> use keystone;
Database changed
MariaDB [keystone]> show tables;
Empty set (0.000 sec)

MariaDB [keystone]> show tables;
+------------------------------------+
| Tables_in_keystone                 |
+------------------------------------+
| access_rule                        |
| access_token                       |
| application_credential             |
| application_credential_access_rule |
| application_credential_role        |
| assignment                         |
| config_register                    |
| consumer                           |
| credential                         |
| endpoint                           |
| endpoint_group                     |
| federated_user                     |
| federation_protocol                |
| group                              |
| id_mapping                         |
| identity_provider                  |
| idp_remote_ids                     |
| implied_role                       |
| limit                              |
| local_user                         |
| mapping                            |
| migrate_version                    |
| nonlocal_user                      |
| password                           |
| policy                             |
| policy_association                 |
| project                            |
| project_endpoint                   |
| project_endpoint_group             |
| project_option                     |
| project_tag                        |
| region                             |
| registered_limit                   |
| request_token                      |
| revocation_event                   |
| role                               |
| role_option                        |
| sensitive_config                   |
| service                            |
| service_provider                   |
| system_assignment                  |
| token                              |
| trust                              |
| trust_role                         |
| user                               |
| user_group_membership              |
| user_option                        |
| whitelisted_config                 |
+------------------------------------+
48 rows in set (0.000 sec)

#Initialize Fernet key repositories
#生成fernet-keys
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
#生成credential-keys
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

[root@openstack-controller1 ~]# ll /etc/keystone/
total 124
drwx------ 2 keystone keystone     24 Jul 22 15:05 credential-keys
-rw-r----- 1 root     keystone   2303 Jun  7  2021 default_catalog.templates
drwx------ 2 keystone keystone     24 Jul 22 15:05 fernet-keys
-rw-r----- 1 root     keystone 106514 Jul 22 15:01 keystone.conf
-rw-r----- 1 root     keystone   1046 Jun  7  2021 logging.conf
-rw-r----- 1 root     keystone      3 Jun  8  2021 policy.json
-rw-r----- 1 keystone keystone    665 Jun  7  2021 sso_callback_template.html

#Haproxy 配置后台转发
#添加keystone
[root@openstack-haproxy1 ~]# cat /etc/haproxy/haproxy.cfg
listen openstack-keystone-5000
  bind 192.168.40.248:5000
  mode tcp
  server 192.168.40.101 192.168.40.101:5000 check inter 3s fall 3 rise 5
[root@openstack-haproxy1 ~]# systemctl restart haproxy

#Bootstrap the Identity service
#官方示例:
keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
  --bootstrap-admin-url http://controller:5000/v3/ \
  --bootstrap-internal-url http://controller:5000/v3/ \
  --bootstrap-public-url http://controller:5000/v3/ \
  --bootstrap-region-id RegionOne
#实验配置域名VIP
keystone-manage bootstrap --bootstrap-password admin \
  --bootstrap-admin-url http://openstack-vip.xks.local:5000/v3/ \
  --bootstrap-internal-url http://openstack-vip.xks.local:5000/v3/ \
  --bootstrap-public-url http://openstack-vip.xks.local:5000/v3/ \
  --bootstrap-region-id RegionOne

#验证bootstrap
#service表
MariaDB [keystone]> select * from service;
+----------------------------------+----------+---------+----------------------+
| id                               | type     | enabled | extra                |
+----------------------------------+----------+---------+----------------------+
| c615e0c6903344e69fb49a85859cdf64 | identity |       1 | {"name": "keystone"} |
+----------------------------------+----------+---------+----------------------+
1 row in set (0.000 sec)
#user表
MariaDB [keystone]> select * from user;
+----------------------------------+-------+---------+--------------------+---------------------+----------------+-----------+
| id                               | extra | enabled | default_project_id | created_at          | last_active_at | domain_id |
+----------------------------------+-------+---------+--------------------+---------------------+----------------+-----------+
| 55d3da5d213940e28ab27fea4673c9a7 | {}    |       1 | NULL               | 2023-07-22 07:14:34 | NULL           | default   |
+----------------------------------+-------+---------+--------------------+---------------------+----------------+-----------+
1 row in set (0.000 sec)
#project表
MariaDB [keystone]> select * from project;
+----------------------------------+--------------------------+-------+-----------------------------------------------+---------+--------------------------+-----------+-----------+
| id                               | name                     | extra | description                                   | enabled | domain_id                | parent_id | is_domain |
+----------------------------------+--------------------------+-------+-----------------------------------------------+---------+--------------------------+-----------+-----------+
| 9f43f66e7d0b411a8219c163858c6f2a | admin                    | {}    | Bootstrap project for initializing the cloud. |       1 | default                  | default   |         0 |
| <<keystone.domain.root>>         | <<keystone.domain.root>> | {}    |                                               |       0 | <<keystone.domain.root>> | NULL      |         1 |
| default                          | Default                  | {}    | The default domain                            |       1 | <<keystone.domain.root>> | NULL      |         1 |
+----------------------------------+--------------------------+-------+-----------------------------------------------+---------+--------------------------+-----------+-----------+
3 rows in set (0.000 sec)
#endponit表
MariaDB [keystone]> select * from endpoint;
+----------------------------------+--------------------+-----------+----------------------------------+-----------------------------------------+-------+---------+-----------+
| id                               | legacy_endpoint_id | interface | service_id                       | url                                     | extra | enabled | region_id |
+----------------------------------+--------------------+-----------+----------------------------------+-----------------------------------------+-------+---------+-----------+
| 1b27558f07784548a469ddda0c58131c | NULL               | internal  | c615e0c6903344e69fb49a85859cdf64 | http://openstack-vip.xks.local:5000/v3/ | {}    |       1 | RegionOne |
| 87bc41b7caf146409e6ec0d87744fd13 | NULL               | public    | c615e0c6903344e69fb49a85859cdf64 | http://openstack-vip.xks.local:5000/v3/ | {}    |       1 | RegionOne |
| a878161f65d449f6863f59cd6a1bc2a6 | NULL               | admin     | c615e0c6903344e69fb49a85859cdf64 | http://openstack-vip.xks.local:5000/v3/ | {}    |       1 | RegionOne |
+----------------------------------+--------------------+-----------+----------------------------------+-----------------------------------------+-------+---------+-----------+
3 rows in set (0.000 sec)

#Configure the Apache HTTP server
vim /etc/httpd/conf/httpd.conf
#修改第95行 
 95 ServerName 192.168.40.101:80

#做一个软链接
[root@openstack-controller1 ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
#如果没有这个文件创建内容
[root@openstack-controller1 conf.d]# cat wsgi-keystone.conf
Listen 5000

<VirtualHost *:5000>
    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-public
    WSGIScriptAlias / /usr/bin/keystone-wsgi-public
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    LimitRequestBody 114688
    <IfVersion >= 2.4>
      ErrorLogFormat "%{cu}t %M"
    </IfVersion>
    ErrorLog /var/log/httpd/keystone.log
    CustomLog /var/log/httpd/keystone_access.log combined

    <Directory /usr/bin>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
        <IfVersion < 2.4>
            Order allow,deny
            Allow from all
        </IfVersion>
    </Directory>
</VirtualHost>

Alias /identity /usr/bin/keystone-wsgi-public
<Location /identity>
    SetHandler wsgi-script
    Options +ExecCGI

    WSGIProcessGroup keystone-public
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
</Location>

[root@openstack-controller1 ~]# ll /etc/httpd/conf.d/
total 16
-rw-r--r-- 1 root root 2926 May 30 22:01 autoindex.conf
-rw-r--r-- 1 root root  366 May 30 22:01 README
-rw-r--r-- 1 root root 1252 May 30 21:49 userdir.conf
-rw-r--r-- 1 root root  824 May 30 21:55 welcome.conf
lrwxrwxrwx 1 root root   38 Jul 22 15:25 wsgi-keystone.conf -> /usr/share/keystone/wsgi-keystone.conf

[root@openstack-controller1 conf.d]# systemctl restart httpd
[root@openstack-controller1 conf.d]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
 
[root@openstack-controller1 conf.d]# netstat -nltp| grep 5000
tcp6       0      0 :::5000                 :::*                    LISTEN      5099/httpd

[root@openstack-controller1 conf.d]# curl 192.168.40.101:5000
{"versions": {"values": [{"status": "stable", "updated": "2019-07-19T00:00:00Z", "media-types": [{"base": "application/json", "type": "application/vnd.openstack.identity-v3+json"}], "id": "v3.13", "links": [{"href": "http://192.168.40.101:5000/v3/", "rel": "self"}]}]}}You have new mail in /var/spool/mail/root
[root@openstack-controller1 conf.d]#

#测试VIP5000
[root@openstack-controller1 conf.d]# curl 192.168.40.248:5000
{"versions": {"values": [{"status": "stable", "updated": "2019-07-19T00:00:00Z", "media-types": [{"base": "application/json", "type": "application/vnd.openstack.identity-v3+json"}], "id": "v3.13", "links": [{"href": "http://192.168.40.248:5000/v3/", "rel": "self"}]}]}}
#测试域名访问
[root@openstack-controller1 conf.d]# curl openstack-vip.xks.local:5000
{"versions": {"values": [{"status": "stable", "updated": "2019-07-19T00:00:00Z", "media-types": [{"base": "application/json", "type": "application/vnd.openstack.identity-v3+json"}], "id": "v3.13", "links": [{"href": "http://openstack-vip.xks.local:5000/v3/", "rel": "self"}]}]}}[

# systemctl enable httpd.service
# systemctl start httpd.service

#创建admin脚本用于登录
[root@openstack-controller1 ~]# cat admin-opensrc.sh
#!/bin/bash
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://openstack-vip.xks.local:5000/v3
export OS_IDENTITY_API_VERSION=3
[root@openstack-controller1 ~]# source admin-opensrc.sh
[root@openstack-controller1 ~]# openstack user list
+----------------------------------+-------+
| ID                               | Name  |
+----------------------------------+-------+
| 55d3da5d213940e28ab27fea4673c9a7 | admin |
+----------------------------------+-------+

#Create a domain, projects, users, and roles
[root@openstack-controller1 ~]# openstack domain create --description "An Example Domain" example
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | An Example Domain                |
| enabled     | True                             |
| id          | 9afd7b514a6140ce9332b80dd13c13ad |
| name        | example                          |
| options     | {}                               |
| tags        | []                               |
+-------------+----------------------------------+
[root@openstack-controller1 ~]# openstack domain list
+----------------------------------+---------+---------+--------------------+
| ID                               | Name    | Enabled | Description        |
+----------------------------------+---------+---------+--------------------+
| 9afd7b514a6140ce9332b80dd13c13ad | example | True    | An Example Domain  |
| default                          | Default | True    | The default domain |
+----------------------------------+---------+---------+--------------------+

#Create the service project
[root@openstack-controller1 ~]# openstack project create --domain default \
>   --description "Service Project" service
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | a2a6a13f8b2a4e828366eb5c208e3f87 |
| is_domain   | False                            |
| name        | service                          |
| options     | {}                               |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

#Create the myproject project
[root@openstack-controller1 ~]# openstack project create --domain default \
>   --description "Demo Project" myproject
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Demo Project                     |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 531738bf10f5448e8e0827460d035762 |
| is_domain   | False                            |
| name        | myproject                        |
| options     | {}                               |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+
[root@openstack-controller1 ~]# openstack project list
+----------------------------------+-----------+
| ID                               | Name      |
+----------------------------------+-----------+
| 531738bf10f5448e8e0827460d035762 | myproject |
| 9f43f66e7d0b411a8219c163858c6f2a | admin     |
| a2a6a13f8b2a4e828366eb5c208e3f87 | service   |
+----------------------------------+-----------+

#Create the myuser user
openstack user create --domain default \
  --password-prompt myuser
密码:myuser
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 4c949cb8204b4dffa32aa899891cd352 |
| name                | myuser                           |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

#Create the myrole role
openstack role create myrole
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | None                             |
| domain_id   | None                             |
| id          | 469edf0390bc47f482d489613b8a8407 |
| name        | myrole                           |
| options     | {}                               |
+-------------+----------------------------------+

#Add the myrole role to the myproject project and myuser user
[root@openstack-controller1 ~]# openstack role add --project myproject --user myuser myrole

#!Verify operation
#这里的expires需要增加8个小时 
[root@openstack-controller1 ~]# unset OS_AUTH_URL OS_PASSWORD
[root@openstack-controller1 ~]# openstack --os-auth-url http://openstack-vip.xks.local:5000/v3 \
>   --os-project-domain-name Default --os-user-domain-name Default \
>   --os-project-name admin --os-username admin token issue
Password:admin
Password:admin
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                                                                                   |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires    | 2023-07-22T14:57:20+0000                                                                                                                                                                |
| id         | gAAAAABku-BAwsm08252EFfUl8ETRGw1iRBc8MSsmrit2lWT_JNLrbO_wocSMu328M-OEXorN9p5gKJSHG1Yc9B5ubRwSUObxJOBExmgdleOX2Cs2EKv_mj2pDMQMafeBPKw30PdadEJwLUv7rUvVny698cSk_CMgW_iOxl9efOG7O0yxtpD_2Y |
| project_id | 9f43f66e7d0b411a8219c163858c6f2a                                                                                                                                                        |
| user_id    | 55d3da5d213940e28ab27fea4673c9a7                                                                                                                                                        |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

#验证myuser 
[root@openstack-controller1 ~]# openstack --os-auth-url http://openstack-vip.xks.local:5000/v3 \
>   --os-project-domain-name Default --os-user-domain-name Default \
>   --os-project-name myproject --os-username myuser token issue
Password:
Password:
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                                                                                   |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires    | 2023-07-22T14:59:04+0000                                                                                                                                                                |
| id         | gAAAAABku-CoeqE3BLlI9BG-hJRWs9uFrkCv8a974Ovdcw4UAPFzTq-8J5t-40TKTQHUuVVSD8OeaGtgmP8rLq5aRdXFEniz1wOsz7xBfvlhpmheLSC8bE5Bfqw8ySZEgLWHXoDOUfUTOxt_nqyoIWq1SJT4DCD4a1uHikIM93kvW-XXpLbs5FU |
| project_id | 531738bf10f5448e8e0827460d035762                                                                                                                                                        |
| user_id    | 4c949cb8204b4dffa32aa899891cd352                                                                                                                                                        |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
[root@openstack-controller1 ~]# source admin-opensrc.sh
[root@openstack-controller1 ~]# openstack user list
+----------------------------------+--------+
| ID                               | Name   |
+----------------------------------+--------+
| 55d3da5d213940e28ab27fea4673c9a7 | admin  |
| 4c949cb8204b4dffa32aa899891cd352 | myuser |
+----------------------------------+--------+


#Create OpenStack client environment scripts
#admin-openrc.sh
[root@openstack-controller1 ~]# cat admin-openrc.sh
#!/bin/bash
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_AUTH_URL=http://openstack-vip.xks.local:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

#demo-openrc.sh
[root@openstack-controller1 ~]# cat demo-openrc.sh
#!/bin/bash
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=myproject
export OS_USERNAME=myuser
export OS_PASSWORD=myuser
export OS_AUTH_URL=http://openstack-vip.xks.local:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
[root@openstack-controller1 ~]# chmod +x admin-openrc.sh demo-openrc.sh

#验证是否可以拿到token信息
[root@openstack-controller1 ~]# ./admin-openrc.sh
[root@openstack-controller1 ~]# openstack token issue
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                                                                                   |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires    | 2023-07-22T15:07:40+0000                                                                                                                                                                |
| id         | gAAAAABku-KsHPq3TbuDRLmZvmAlKWboX3MLCXSDee-HwSh86ZafT842dmjXy-fqEYvOv7CLB7-G9eCfNUo3ngUytF-46IaPGzTcsPR4ahUoSzMmdVUw7dw2fe1KE1JPI2FSwNB5YgWczf-RueJVpaqJl3bo4uPW20veWagMWTHRFkMsvBYU9U4 |
| project_id | 531738bf10f5448e8e0827460d035762                                                                                                                                                        |
| user_id    | 4c949cb8204b4dffa32aa899891cd352                                                                                                                                                        |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

 

posted @ 2023-07-27 08:42  しみずよしだ  阅读(43)  评论(0)    收藏  举报