A03. openstack架构实战-keystone安装

openstack服务安装的通用步骤模板:

1:mysql中创建对用的数据库,并授权

2:在keystone创建用户,关联角色(授权)

3:在keystone上创建服务,注册api(服务目录)

4:安装服务相关的软件包

5:修改配置文件:eg:数据库的连接,rabbitmq的连接信息,keystone的认证授权信息,其他配置

6:通过命令同步数据库,创建对应的表

7:重启服务设置开机自启

 

安装keystone认证服务:(只在控制节点操作)

1:登入数据库

[root@controller01 ~]# mysql -uroot -phuayun

 

2:创建keystone数据库

MariaDB [(none)]> CREATE DATABASE keystone;
Query OK, 1 row affected (0.00 sec)

 

3:对keystone库授权相对的用户

MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
-> IDENTIFIED BY 'huayun';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
-> IDENTIFIED BY 'huayun';
Query OK, 0 rows affected (0.00 sec)

4:安装keystone的软件包:httpd服务要与python进行连接需要mod_wsgi模块

[root@controller01 ~]# yum install openstack-keystone httpd mod_wsgi -y

5:编辑文件 /etc/keystone/keystone.conf 并完成如下动作

 备份原有的配置文件

[root@controller01 ~]# cp /etc/keystone/keystone.conf /etc/keystone/keystone.conf.bak

在 [database] 部分,配置数据库访问:

[database]
connection = mysql+pymysql://keystone:huayun@controller01/keystone

 

 

 

 

在``[token]``部分,配置Fernet UUID令牌的提供者。

keeystone认证方式:UUID,PKI,Fernet

都只是生成一种随机的字符串的方法:用来各个服务验证的id

[token]
provider = fernet

 

 

 

查看手动修改配置文件的token配置文件的token

[root@controller01 ~]# md5sum /etc/keystone/keystone.conf
7a538fdacc49af8f07b89cf49d65f247 /etc/keystone/keystone.conf

 

查看使用命令配置文件的token:

还原配置文件:

[root@controller01 ~]# cp /etc/keystone/keystone.conf.bak /etc/keystone/keystone.conf
cp: overwrite ‘/etc/keystone/keystone.conf’? y

下载openstack配置文件的安装包:

[root@controller01 ~]# yum install openstack-utils -y

安装完之后会有openstack-config的命令,我们可以使用该命令进行修改配置文件

[root@controller01 ~]# openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:huayun@controller01/keystone

[root@controller01 ~]# openstack-config --set /etc/keystone/keystone.conf token provider  fernet

 

校验:无论是手动配置还是命令配置都是可以的md5值都不变

[root@controller01 ~]# md5sum /etc/keystone/keystone.conf
7a538fdacc49af8f07b89cf49d65f247 /etc/keystone/keystone.conf

 

6:同步数据库

su:linux用来切换用户

-s:指定shell

-c:指定执行命令

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

查看数据库是否同步

[root@controller01 ~]# mysql -uroot -phuayun keystone -e "show tables"
+-----------------------------+
| Tables_in_keystone |
+-----------------------------+
| access_token |
| application_credential |
| 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_tag |
| region |
| registered_limit |
| request_token |
| revocation_event |
| role |
| sensitive_config |
| service |
| service_provider |
| system_assignment |
| token |
| trust |
| trust_role |
| user |
| user_group_membership |
| user_option |
| whitelisted_config |
+-----------------------------+

 

7:初始化Fernet密钥存储库

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

初始化之后会有两个目录生成在keystone的目录下

 

 

8:配置引导身份服务:

在Queens发行之前,keystone需要在两个单独的端口上运行,以适应Identity v2 API,后者通常在端口35357上运行单独的仅管理员服务。删除v2 API后,keystone可以在同一端口上运行所有接口。

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

9:配置apached

[root@controller01 ~]# rpm -qa httpd
httpd-2.4.6-93.el7.centos.x86_64

 

编辑/etc/httpd/conf/httpd.conf文件并配置 ServerName选项以引用控制器节点(在配置文件的最后边添加即可)

ServerName controller01

 

 

10:创建到/usr/share/keystone/wsgi-keystone.conf文件的链接

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

 

 

11:启动Apache HTTP服务,并将其配置为在系统启动时启动:

[root@controller01 ~]# systemctl start httpd && systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

 

12:配置管理帐户:

[root@controller01 ~]# export OS_USERNAME=admin
[root@controller01 ~]# export OS_PASSWORD=huayun
[root@controller01 ~]# export OS_PROJECT_NAME=admin
[root@controller01 ~]# export OS_USER_DOMAIN_NAME=Default
[root@controller01 ~]# export OS_PROJECT_DOMAIN_NAME=Default
[root@controller01 ~]# export OS_AUTH_URL=http://controller01:5000/v3
[root@controller01 ~]# export OS_IDENTITY_API_VERSION=3

 

创建域,项目,用户和角色

1:创建默认域(default)版本已经自动创建defalut,下面是为了演示创建域的方法

 

[root@controller01 ~]# openstack domain create --description "An Example Domain" example

 

 

 

 

2:创建项目:

[root@controller01 ~]# openstack project create --domain default \
> --description "Service Project" service

 

查看创建的项目

 [root@controller01 ~]# openstack project list 

 

 

 3:creates the demo project and user(实验使用)

创建demo项目:

[root@controller01 ~]# openstack project create --domain default \
> --description "Demo Project" demo

 

 创建demo用户:

[root@controller01 ~]# openstack user create --domain default \
> --password-prompt demo

 

 

[root@controller01 ~]# openstack user list 

 

 

4:user角色添加demo项目和用户

初次添加,我们发现没有user这个角色,这边我们只是为了演示iang某个角色添加到项目和用户中的操作,如果需要添加,我们需要进行创建user角色

 

[root@controller01 ~]# openstack role add --project demo --user demo user
No role with a name or ID of 'user' exists.

 

添加如下:

[root@controller01 ~]# openstack role create user
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | None |
| id | 1466c6fab11249ffa57b0cf6ff328021 |
| name | user |
+-----------+----------------------------------+
[root@controller01 ~]# openstack role add --project demo --user demo user

 

 

验证

在安装其他服务之前,请验证身份服务的操作。

注意

在控制器节点上执行这些命令。

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

[root@controller01 ~]# unset OS_AUTH_URL OS_PASSWORD

2:admin用户身份请求身份验证令牌:

[root@controller01 ~]# unset OS_AUTH_URL OS_PASSWORD
[root@controller01 ~]# openstack --os-auth-url http://controller01:35357/v3 \
> --os-project-domain-name Default --os-user-domain-name Default \
> --os-project-name admin --os-username admin token issue

 

 

3:demo用户身份请求身份验证令牌

[root@controller01 ~]# openstack --os-auth-url http://controller01:5000/v3 \
> --os-project-domain-name Default --os-user-domain-name Default \
> --os-project-name demo --os-username demo token issue
Password:

 

 

创建openstack客户端环境脚本

使用环境变量和命令选项的组合通过``openstack``客户端与身份认证服务交互。为了提升客户端操作的效率,OpenStack支持简单的客户端环境变量脚本即OpenRC 文件。这些脚本通常包含客户端所有常见的选项,当然也支持独特的选项。

 

创建脚本:

创建 admin 和 ``demo``项目和用户创建客户端环境变量脚本。本指南的接下来的部分会引用这些脚本,为客户端操作加载合适的的凭证。

 

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

vim admin-openrc

export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=huayun
export OS_AUTH_URL=http://controller01:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

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

vim demo-openrc

export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=huayun
export OS_AUTH_URL=http://controller01:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

 

 

3:使用脚本

[root@controller01 ~]# source admin-openrc 或则./admin-openrc

 

 如果需要退出登入之后永久执行该命令可以在

vim /root/.bashrc

 

 

keystone服务搭建到此结束

 

posted @ 2020-05-24 11:28  Mr-呵呵哒  阅读(275)  评论(0编辑  收藏  举报