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_URL
和OS_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服务搭建到此结束