一、Prerequisites先决条件

1、环境内的脚本刷新

#刷新基础脚本
[root@controller ~]# iaas-pre-host.sh
[root@compute ~]# iaas-pre-host.sh
[root@controller ~]# iaas-install-mysql.sh

2、使用数据库访问客户端以 root 用户身份连接到数据库服务器

# mysql -u root -p

3、创建 keystone 数据库

$MariaDB [(none)]> CREATE DATABASE keystone;

4、授予对 keystone 数据库的正确访问权限

#KEYSTONE_DBPASS改为admin的密码
​
$MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
$MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';

二、安装和配置组件

1、运行以下命令安装包

# 需要用到epel的repo
[root@controller ~]# yum install openstack-keystone httpd mod_wsgi

2、编辑 /etc/keystone/keystone.conf 文件并完成以下操作

#在 [database] 部分,配置数据库访问
#将KEYSTONE_DBPASS改为数据库的密码
[database]
# ...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
​
#在 [token] 部分中,配置 Fernet 令牌提供程序
[token]
# ...
provider = fernet
​
#填充 Identity 服务数据库
$su -s /bin/sh -c "keystone-manage db_sync" keystone

3、初始化Fernet密钥存储库

$ keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
$ keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

4、引导身份服务

#将ADMIN_PASS替换为适合管理用户的密码
$ 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

5、编辑 /etc/httpd/conf/httpd.conf 文件并配置 ServerName 选项来引用控制器节点

# ServerNAME controller

6、创建指向该 /usr/share/keystone/wsgi-keystone.conf 文件的链接

$ ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

三、完成安装

1、启动 Apache HTTP 服务并将其配置为在系统启动时启动

$ systemctl enable httpd.service
$ systemctl start httpd.service

2、通过设置适当的环境变量来配置管理帐户

# 将ADMIN_PASS改为admin的密码
$ 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://controller:5000/v3
$ export OS_IDENTITY_API_VERSION=3
​
# 也可编写成cf文件source使用它

四、创建域、项目、用户和角色

1、尽管本指南中的 keystone-manage 引导步骤中已经存在“默认”域,但创建新域的正式方法是

$ openstack domain create --description "An Example Domain" example
​
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | An Example Domain                |
| enabled     | True                             |
| id          | 2f4f80574fd84fe6ba9067228ae0a50c |
| name        | example                          |
| tags        | []                               |
+-------------+----------------------------------+

2、本指南使用一个服务项目,该项目包含添加到环境中的每个服务的唯一用户。创建服务 项目

$ openstack project create --domain default --description "Service Project" service
​
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 24ac7f19cd944f4cba1d77469b2a73ed |
| is_domain   | False                            |
| name        | service                          |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

3、常规(非管理员)任务应使用非特权项目和用户。例如,本指南创建 myproject 项目和 myuser 用户

# 创建 myproject 项目
$ openstack project create --domain default --description "Demo Project" myproject
​
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Demo Project                     |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 231ad6e7ebba47d6a1e57e1cc07ae446 |
| is_domain   | False                            |
| name        | myproject                        |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+
​
#创建 myuser 用户
$ openstack user create --domain default --password-prompt myuser
​
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | aeda23aa78f44e859900e22c24817832 |
| name                | myuser                           |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
​
#创建 myrole 角色
$ openstack role create myrole
​
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | 997ce8d05fc143ac97d83fdfb5998552 |
| name      | myrole                           |
+-----------+----------------------------------+
​
#将 myrole 角色添加到 myproject 项目和 myuser 用户
$ openstack role add --project myproject --user myuser myrole

五、验证操作

1、取消设置临时 OS_AUTH_URLOS_PASSWORD 环境变量

$ unset OS_AUTH_URL OS_PASSWORD

2、作为管理员用户,请求身份验证令牌:

$ openstack --os-auth-url http://controller:5000/v3 \
  --os-project-domain-name Default --os-user-domain-name Default \
  --os-project-name admin --os-username admin token issue
​
Password:
+------------+-----------------------------------------------------------------+
| Field      | Value                                                           |
+------------+-----------------------------------------------------------------+
| expires    | 2016-02-12T20:14:07.056119Z                                     |
| id         | gAAAAABWvi7_B8kKQD9wdXac8MoZiQldmjEO643d-e_j-XXq9AmIegIbA7UHGPv |
|            | atnN21qtOMjCFWX7BReJEQnVOAj3nclRQgAYRsfSU_MrsuWb4EDtnjU7HEpoBb4 |
|            | o6ozsA_NmFWEpLeKy0uNn_WeKbAhYygrsmQGA49dclHVnz-OMVLiyM9ws       |
| project_id | 343d245e850143a096806dfaefa9afdc                                |
| user_id    | ac3377633149401296f6c0d92d79dc16                                |
+------------+-----------------------------------------------------------------+

3、作为上一节中创建的 myuser 用户,请求身份验证令牌

$ openstack --os-auth-url http://controller:5000/v3 \
  --os-project-domain-name Default --os-user-domain-name Default \
  --os-project-name myproject --os-username myuser token issue
​
Password:
+------------+-----------------------------------------------------------------+
| Field      | Value                                                           |
+------------+-----------------------------------------------------------------+
| expires    | 2016-02-12T20:15:39.014479Z                                     |
| id         | gAAAAABWvi9bsh7vkiby5BpCCnc-JkbGhm9wH3fabS_cY7uabOubesi-Me6IGWW |
|            | yQqNegDDZ5jw7grI26vvgy1J5nCVwZ_zFRqPiz_qhbq29mgbQLglbkq6FQvzBRQ |
|            | JcOzq3uwhzNxszJWmzGC7rJE_H0A_a3UFhqv8M4zMRYSbS2YF0MyFmp_U       |
| project_id | ed0b60bf607743088218b0a533d5943f                                |
| user_id    | 58126687cbcc4888bfa9ab73a2256f27                                |
+------------+-----------------------------------------------------------------+

六、创建脚本

1、创建和编辑 admin-openrc 文件并添加以下内容

# 将 ADMIN_PASS 替换为您在身份服务中为管理员用户选择的密码
$ 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_PASS
$ export OS_AUTH_URL=http://controller:5000/v3
$ export OS_IDENTITY_API_VERSION=3
$ export OS_IMAGE_API_VERSION=2

2、创建和编辑 demo-openrc 文件并添加以下内容

# 将 DEMO_PASS 替换为您在 Identity 服务中为演示用户选择的密码
$ export OS_PROJECT_DOMAIN_NAME=Default
$ export OS_USER_DOMAIN_NAME=Default
$ export OS_PROJECT_NAME=myproject
$ export OS_USERNAME=myuser
$ export OS_PASSWORD=DEMO_PASS
$ export OS_AUTH_URL=http://controller:5000/v3
$ export OS_IDENTITY_API_VERSION=3
$ export OS_IMAGE_API_VERSION=2

3、使用脚本

$ . admin-openrc

4、请求身份验证令牌

$ openstack token issue
​
+------------+-----------------------------------------------------------------+
| Field      | Value                                                           |
+------------+-----------------------------------------------------------------+
| expires    | 2016-02-12T20:44:35.659723Z                                     |
| id         | gAAAAABWvjYj-Zjfg8WXFaQnUd1DMYTBVrKw4h3fIagi5NoEmh21U72SrRv2trl |
|            | JWFYhLi2_uPR31Igf6A8mH2Rw9kv_bxNo1jbLNPLGzW_u5FC7InFqx0yYtTwa1e |
|            | eq2b0f6-18KZyQhs7F3teAta143kJEWuNEYET-y7u29y0be1_64KYkM7E       |
| project_id | 343d245e850143a096806dfaefa9afdc                                |
| user_id    | ac3377633149401296f6c0d92d79dc16                                |
+------------+-----------------------------------------------------------------+
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐