构建基于openEuler2209的OpenStack云平台(二)

前一篇: 构建基于openEuler2209的OpenStack云平台(一)

2 安装和配置Identity服务

OpenStack Identity(代码为keystone)服务为管理身份验证、授权和服务目录提供了单点集成。通过Identity API,提供API客户端身份验证、服务发现和分布式多租户授权。

出于可扩展性的目的,还需要同时配置部署Fernet令牌和Apache HTTP服务器来处理请求。

Identity服务通常是用户与OpenStack交互的第一个服务。一旦经过认证,用户就可以使用其身份访问其他OpenStack服务。同样,其他OpenStack服务利用Identity服务来确保用户是他们所说的人,并发现其他服务在部署中的位置。

2.1 创建keystone数据库并授予权限

在控制节点,使用root账号连接到mariadb数据库,创建keystone 数据库,然后授权用户keystone访问。其中的KEYSTONE_DBPASS为keystone用户访问keystone数据库的密码。

[root@xgk-ctl ~]# mysql -u root -p
Enter password: #此处输入前面设置的数据库root用户密码

CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
flush privileges;
exit;

2.2 安装软件包

[root@xgk-ctl ~]# dnf -y install openstack-keystone httpd mod_wsgi

2.3 配置/etc/keystone/keystone.conf文件

[root@xgk-ctl ~]# cp -a /etc/keystone/keystone.conf{,.bak}
[root@xgk-ctl ~]# grep -Ev '^$|#' /etc/keystone/keystone.conf.bak > /etc/keystone/keystone.conf
[root@xgk-ctl ~]# vim /etc/keystone/keystone.conf
[database]
……此处省略文件原有内容……
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@xgk-ctl/keystone
#pymysql://后面的内容依次表示数据库用户名:密码@主机名/数据库名
……此处省略文件原有内容……
[token] 
provider = fernet
……此处省略文件原有内容……

2.4 同步数据库

[root@xgk-ctl ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone

2.5 初始化Fernet密钥存储库

[root@xgk-ctl ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
[root@xgk-ctl ~]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

注:--keystone-user和keystone --keystone-group标志用于指定运行keystone的用户/组。

2.6 启动服务

[root@xgk-ctl ~]# keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
  --bootstrap-admin-url http://xgk-ctl:5000/v3/ \
  --bootstrap-internal-url http://xgk-ctl:5000/v3/ \
  --bootstrap-public-url http://xgk-ctl:5000/v3/ \
  --bootstrap-region-id RegionOne

 注:ADMIN_PASS为管理员admin的密码

2.7 配置Apache服务器

2.7.1 配置/etc/httpd/conf/httpd.conf 文件

在配置文件末尾追加一行内容:ServerName xgk-ctl

或者找到ServerName选项,删除前面的注释,并将后面的值改为控制节点的主机名。

[root@xgk-ctl ~]# echo "ServerName xgk-ctl" >> /etc/httpd/conf/httpd.conf

2.7.2 创建软链接

创建一个指向/usr/share/keystone/wsgi-keystone.conf的软链接

[root@xgk-ctl ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

2.7.3 启动httpd服务,并设置为开机自启动

[root@xgk-ctl ~]# systemctl enable httpd.service
[root@xgk-ctl ~]# systemctl start httpd.service

2.8 创建domain, projects, users和roles

Identity服务为每个OpenStack服务提供身份验证服务。身份验证服务使用域(domain)、项目(project)、用户(user)和角色(role)的组合。

2.8.1 创建环境变量配置

[root@xgk-ctl ~]# cat << EOF >> /etc/keystone/admin-openrc
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://xgk-ctl:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF

2.8.2 安装软件包

创建domain, projects, users和roles必须首先安装python3-openstackclient软件包

[root@xgk-ctl ~]# dnf -y install python3-openstackclient

2.8.3 创建域

实际上,在启动Identity服务时已创建了一个default域,这里以创建一个example域为例演示创建域的正式方法。

[root@xgk-ctl ~]# source /etc/keystone/admin-openrc
[root@xgk-ctl ~]# openstack domain create --description "An Example Domain" example
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | An Example Domain                |
| enabled     | True                             |
| id          | a0f1abb3c02448719c1079323d3ac64e |
| name        | example                          |
| options     | {}                               |
| tags        | []                               |
+-------------+----------------------------------+

2.8.4 创建项目

在default域中创建一个名为service的project。

[root@xgk-ctl ~]# openstack project create --domain default --description "Service Project" service
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | c4d39aaab32243ca80974bab6bf711e7 |
| is_domain   | False                            |
| name        | service                          |
| options     | {}                               |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

下面创建一个非管理员项目myproject、用户myuser和角色myrole,并将角色myrol添加到myproject和myuser中。

1、Create the myproject project

[root@xgk-ctl ~]# openstack project create --domain default --description "Demo Project" myproject
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Demo Project                     |
| domain_id   | default                          |
| enabled     | True                             |
| id          | a9a1630648c34468be5d540e7fd65523 |
| is_domain   | False                            |
| name        | myproject                        |
| options     | {}                               |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

2、Create the myuser user

[root@xgk-ctl ~]# openstack user create --domain default --password-prompt myuser
User Password:#此处设置myuser的密码,比如DEMO_PASS,请记住该密码,后面要用到
Repeat User Password:#重新输入密码
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | f8472742c25a43319ebbd5e0732f8214 |
| name                | myuser                           |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

3、Create the myrole role

[root@xgk-ctl ~]# openstack role create myrole
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | None                             |
| domain_id   | None                             |
| id          | 0c3111c9e8e848b3b60373fd8c33d0c9 |
| name        | myrole                           |
| options     | {}                               |
+-------------+----------------------------------+

4、将myrole角色添加到myproject项目和myuser用户

[root@xgk-ctl ~]# openstack role add --project myproject --user myuser myrole

2.9 验证操作

在安装其他服务之前,建议验证Identity服务。

在验证之前,可取消环境变量OS_AUTH_URL和OS_PASSWORD的设置值,然后请求身份验证。

[root@xgk-ctl ~]# source /etc/keystone/admin-openrc
[root@xgk-ctl ~]# unset OS_AUTH_URL OS_PASSWORD

2.9.1 管理员用户请求身份验证

[root@xgk-ctl ~]# openstack --os-auth-url http://xgk-ctl:5000/v3 \
   --os-project-domain-name Default --os-user-domain-name Default \
   --os-project-name admin --os-username admin token issue
Password: #此处输入管理员admin的密码
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                                                                                   |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires    | 2022-12-16T03:12:08+0000                                                                                                                                                                |
| id         | gAAAAABjm9P4rqSNKf4jJRj6MNdhVr43F05doACVGkjAe2PbG-t4lKhBtb7DM-fFFftx3jfQHrZAOxhvKBUv1V_39SCntT07lwmbl1EgrDyYdf9TFxfdeiKeRWtLgqFhVf3GFZeKOYlYjZpFXnAzyVebCpl5yeoUBXKzImRJ_sL022lxP1uz2Yw |
| project_id | 83c34dc70d18476097211c384d2e435c                                                                                                                                                        |
| user_id    | 028ab68c29e64c5f8911ee36d3d2a497                                                                                                                                                        |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

2.9.2 普通用户myuser请求身份验证

[root@xgk-ctl ~]# openstack --os-auth-url http://xgk-ctl:5000/v3 \
   --os-project-domain-name Default --os-user-domain-name Default \
   --os-project-name myproject --os-username myuser token issue
Password: #此处输入前面创建myuser时设置的密码
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                                                                                   |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires    | 2022-12-16T03:15:39+0000                                                                                                                                                                |
| id         | gAAAAABjm9TLQMfwd115ZBCVDdIFhXb7nnj2aisRcOhVhoSw0NTV58EeDJVtrsAq4q_pYyuUVIcDyJt8Q9Bmd3949drapGPtdA0MWFXaAJAjq_GeChtS2__3WWCBWBdlUhruTHgarEEtJUPoEKEh_5GJT_EZnXPj4vaGxOzK6XELkaCOYWjfcGA |
| project_id | a9a1630648c34468be5d540e7fd65523                                                                                                                                                        |
| user_id    | f8472742c25a43319ebbd5e0732f8214                                                                                                                                                        |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

2.9.3 为非管理员用户myuser创建环境变量配置文件

[root@xgk-ctl ~]# cat << EOF >> /etc/keystone/demo-openrc
export OS_USERNAME=myuser
export OS_PASSWORD=DEMO_PASS
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=myproject
export OS_AUTH_URL=http://xgk-ctl:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF

下一篇:构建基于openEuler2209的OpenStack云平台(三)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值