一、环境简介:
OS:CentOS Linux release 7.7.1908 (Core)
openstack:train
环境有限当前只跑单台
mysql复用,rabbitmq和memcached
角色 | ip地址 | 主机名 |
---|---|---|
conroller1 | 192.168.39.239 | controller.local |
conroller1 | 192.168.39.239 | controller.local |
haproxy | 192.168.39.241 | haproxy.local vip 192.168.39.238 |
node1 | 192.168.39.240 | node1.local |
mysql | 192.168.39.242 | mysql.local |
参考文档:
https://docs.openstack.org/
Keystone 中主要涉及到如下几个概念:User、Tenant、Role、Token:
User:使用 openstack 的用户。
Tenant:租户,可以理解为一个人、项目或者组织拥有的资源的合集。在一个租户中可以拥有
很多个用户,这些用户可以根据权限的划分使用租户中的资源。
Role:角色,用于分配操作的权限。角色可以被指定给用户,使得该用户获得角色对应的操
作权限。
Token:指的是一串比特值或者字符串,用来作为访问资源的记号。Token 中含有可访问资源
的范围和有效时间,token 是用户的一种凭证,需要使用正确的用户名和密码向 Keystone 服
务申请才能得到 token,如果用户每次都采用用户名/密码访问 OpenStack API,容易泄露用
户信息,带来安全隐患,所以 OpenStack 要求用户访问其 API 前,必须先获取 token,然后
用 token 作为用户凭据访问 OpenStack API。
一、前提条件:在安装和配置身份服务之前,必须创建数据库。
1、使用数据库访问客户端以root用户身份连接到数据库服务器
[root@mysql ~]# mysql -u root -p
2、创建keystone数据库:
MariaDB [(none)]> CREATE DATABASE keystone;
3、授予对keystone数据库的适当访问权限
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@’%’
IDENTIFIED BY ‘keystone123’;
在控制节点上测试:
[root@controller1 ~]# mysql -ukeystone -h 192.168.39.242 -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.3.20-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
二、安装和配置的部件
1、安装软件包
[root@controller1 ~]# yum install openstack-keystone httpd mod_wsgi
2、编辑/etc/keystone/keystone.conf文件并完成以下操作
可以把地址换成vip
#[database]
#connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
[database]
connection = mysql+pymysql://keystone:[email protected]/keystone
在该[token]部分中,配置Fernet令牌提供者:
[token]
provider = fernet
3、初始化数据库
[root@controller1 ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone
在数据库上可以看到表:
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 |
...........
4、初始化Fernet密钥存储库:
[root@controller1 ~]# ll /etc/keystone/
total 120
-rw-r----- 1 root keystone 2303 Oct 16 2019 default_catalog.templates
-rw-r----- 1 root keystone 104647 Apr 16 14:23 keystone.conf
-rw-r----- 1 root keystone 1046 Oct 16 2019 logging.conf
-rw-r----- 1 root keystone 3 Oct 16 2019 policy.json
-rw-r----- 1 keystone keystone 665 Oct 16 2019 sso_callback_template.html
[root@controller1 ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
[root@controller1 ~]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
[root@controller1 ~]# ll /etc/keystone/
total 120
drwx------ 2 keystone keystone 24 Apr 16 14:28 credential-keys
-rw-r----- 1 root keystone 2303 Oct 16 2019 default_catalog.templates
drwx------ 2 keystone keystone 24 Apr 16 14:28 fernet-keys
-rw-r----- 1 root keystone 104647 Apr 16 14:23 keystone.conf
-rw-r----- 1 root keystone 1046 Oct 16 2019 logging.conf
-rw-r----- 1 root keystone 3 Oct 16 2019 policy.json
-rw-r----- 1 keystone keystone 665 Oct 16 2019 sso_callback_template.html
5、初始化服务组件
注意如果有vip则需要在haproxy上配置5000端口给服务器:
listen openstack-keystone-5000
mode tcp
bind 192.168.39.238:5000
server 192.168.39.239 192.168.39.239:5000 check inter 3 fall 3 rise 5
[root@controller1 ~]# keystone-manage bootstrap --bootstrap-password admin \
> --bootstrap-admin-url http://openstack-vip.local:5000/v3/ \
> --bootstrap-internal-url http://openstack-vip.local:5000/v3/ \
> --bootstrap-public-url http://openstack-vip.local:5000/v3/ \
> --bootstrap-region-id RegionOne
MariaDB [keystone]> MariaDB [keystone]> select * from user;
+----------------------------------+-------+---------+--------------------+---------------------+----------------+-----------+
| id | extra | enabled | default_project_id | created_at | last_active_at | domain_id |
+----------------------------------+-------+---------+--------------------+---------------------+----------------+-----------+
| bba0eff010fd4dfabd8413dcb22766d8 | {
} | 1 | NULL | 2020-04-16 06:40:45 | NULL | default |
+-----------------