一、实验目的:

1、掌握OpenStack环境搭建的基础工作

2、掌握keystone的安装与配置方法

3、掌握keystone基础接口的调用方法

二、实验步骤:

1、利用最初创建的快照克隆两台CentOS服务器,克隆的两台分别修改主机名为xxx-controller和xxx-compute1,修改IP地址为192.168.xx.10和192.168.xx.20。(xxx为自己姓名拼音,xx为自己学号后两位)。

[root@controller-zq ~]# ip addr

seesionkey 工具_seesionkey 工具

 

[root@computer-zq ~]# ip addr

seesionkey 工具_数据库_02

 

 

2、在两台主机中修改配置文件/etc/hosts,分别添加xxx-controller和xxx- compute1和IP地址之间的映射

添加主机名与ip地址映射:

[root@controller-zq ~]# vim /etc/hosts

seesionkey 工具_vim_03

 

[root@computer-zq ~]# vim /etc/hosts

seesionkey 工具_bootstrap_04

 

 

3、在controller节点上ping两个主机名,查看能否ping通。

在controller节点上ping两个主机名:

[root@controller-zq ~]# ping controller-zq

[root@controller-zq ~]# ping computer-zq 

seesionkey 工具_vim_05

可以ping通

 

在computer节点上ping两个主机名:

[root@computer-zq ~]# ping controller-zq

[root@computer-zq ~]# ping computer-zq

seesionkey 工具_数据库_06

可以ping通

 

 

4、在两个节点上分别按照时间服务,在controller设置为服务器,compute1节点为时间客户端。

控制节点:

[root@controller-zq ~]# yum install chrony

[root@controller-zq ~]# vim /etc/chrony.conf

seesionkey 工具_vim_07

 

在计算节点上ping 0.centos.pool.ntp.org,可以ping通,说明该时钟同步可以使用。

[root@computer-zq ~]# ping 0.centos.pool.ntp.org

seesionkey 工具_vim_08

 

修改配置文件内容:

要使其他节点能够连接到控制器节点上的chrony守护进程,将此密钥添加到上述相同的chrony.conf文件中:

seesionkey 工具_数据库_09

 

重启时间服务器,设置为开机自启动,并且查看其状态:

[root@controller-zq ~]# systemctl restart chronyd.service

[root@controller-zq ~]# systemctl status chronyd.service

[root@controller-zq ~]# systemctl enable chronyd.service

seesionkey 工具_数据库_10

 

计算节点:

安装时间服务器:[root@computer-zq ~]# yum install chrony

编辑/etc/chrony.conf文件:

[root@computer-zq ~]# vim /etc/chrony.conf

seesionkey 工具_seesionkey 工具_11

 

重启时间服务器,设置为开机自启动,并且查看其状态:

[root@computer-zq ~]# systemctl restart chronyd.service

[root@computer-zq ~]# systemctl enable chronyd.service

[root@computer-zq ~]# systemctl status chronyd.service

seesionkey 工具_数据库_12

 

在控制器节点上运行此命令:

[root@controller-zq ~]# chronyc sources

seesionkey 工具_vim_13

 

 

5、在controller和compute1上安装OpenStack最新的源

控制节点:

[root@controller-zq yum.repos.d]# yum install centos-release-openstack-rocky

seesionkey 工具_bootstrap_14

 

查看/etc/yum.repos.d目录下的文件:

[root@controller-zq yum.repos.d]# ll

seesionkey 工具_数据库_15

 

更新安装包:

[root@controller-zq ~]# yum upgrade

 

计算节点:

[root@computer-zq yum.repos.d]# yum install centos-release-openstack-rocky –y

seesionkey 工具_数据库_16

 

查看/etc/yum.repos.d目录下的文件:

[root@computer-zq yum.repos.d]# ll

seesionkey 工具_seesionkey 工具_17

 

更新安装包:

[root@computer-zq ~]# yum upgrade

 

 

6、在controller安装数据库mariadb,安装后并修改配置文件,然后启动数据库服务器,并设置开机启动。

在controller安装数据库mariadb:

[root@controller-zq ~]# yum install mariadb mariadb-server python2-PyMySQL

seesionkey 工具_seesionkey 工具_18

 

创建和编辑/etc/my.cnf.d/openstack.cnf文件:

[root@controller-zq ~]# vim /etc/my.cnf.d/openstack.cnf

seesionkey 工具_bootstrap_19

 

启动数据库服务并将其配置为在系统启动时启动:

[root@controller-zq ~]# systemctl start mariadb.service

[root@controller-zq ~]# systemctl enable mariadb.service

seesionkey 工具_bootstrap_20

 

查看数据库状态:

[root@controller-zq ~]# systemctl status mariadb.service

seesionkey 工具_数据库_21

 

配置root账号的密码:

通过运行mysql_secure_installation来保护数据库服务,为数据库根帐户选择合适的密码:

[root@controller-zq ~]# mysql_secure_installation

seesionkey 工具_seesionkey 工具_22

 

[root@controller-zq ~]# mysql -u root -p

seesionkey 工具_bootstrap_23

 

 

7、在controller上安装消息队列服务rabbitmq,然后启动服务,并设置开机启动,然后为OpenStack创建用户,用户名为自己姓名拼音。

在controller上安装消息队列服务rabbitmq:

[root@controller-zq ~]# yum install rabbitmq-server

seesionkey 工具_seesionkey 工具_24

 

设置消息服务开机启动和启动消息服务:

[root@controller-zq ~]# systemctl enable rabbitmq-server.service

[root@controller-zq ~]# systemctl start rabbitmq-server.service

[root@controller-zq ~]# systemctl status rabbitmq-server.service

seesionkey 工具_vim_25

 

为OpenStack创建用户,用户名为自己姓名拼音:

配置消息服务,删除默认账号guest,添加账号zq,密码为zq2019,并将账号zq加入 administrator组:

[root@controller-zq ~]# rabbitmqctl list_users

[root@controller-zq ~]# rabbitmqctl delete_user guest

[root@controller-zq ~]# rabbitmqctl add_user zq zq2019

[root@controller-zq ~]# rabbitmqctl set_user_tags zq administractor

[root@controller-zq ~]# rabbitmqctl list_users 

seesionkey 工具_数据库_26

 

允许zq用户进行配置、写入和读取访问:

[root@controller-zq ~]# rabbitmqctl set_permissions zq ".*" ".*" ".*" 

seesionkey 工具_bootstrap_27

 

查看用户权限:

[root@controller-zq ~]# rabbitmqctl list_permissions

seesionkey 工具_vim_28

 

查看消息服务版本:

[root@controller-zq ~]# rabbitmqctl status | grep rabbit

seesionkey 工具_数据库_29

 

重启消息服务:

[root@controller-zq ~]# systemctl restart rabbitmq-server.service

seesionkey 工具_seesionkey 工具_30

 

 

8、在controller节点上安装Memcached服务,然后启动服务并设置开机启动。

[root@controller-zq ~]# yum install memcached python-memcached

seesionkey 工具_seesionkey 工具_31

 

[root@controller-zq ~]# vim /etc/sysconfig/memcached

seesionkey 工具_bootstrap_32

 

[root@controller-zq ~]# systemctl enable memcached.service

[root@controller-zq ~]# systemctl start memcached.service

[root@controller-zq ~]# systemctl status memcached.service

seesionkey 工具_数据库_33

 

[root@controller-zq ~]# yum install etcd

seesionkey 工具_seesionkey 工具_34

 

[root@controller-zq ~]# vim /etc/etcd/etcd.conf

seesionkey 工具_seesionkey 工具_35

 

[root@controller-zq ~]# systemctl enable etcd

[root@controller-zq ~]# systemctl start etcd

seesionkey 工具_seesionkey 工具_36

 

[root@controller-zq ~]# systemctl status etcd

seesionkey 工具_bootstrap_37

 

 

9、在controller上安装keystone服务。

[root@controller-zq ~]# yum install openstack-keystone httpd mod_wsgi

seesionkey 工具_vim_38

 

10、修改keystone配置文件。

备份后编辑/etc/keystone/keystone.conf文件:

seesionkey 工具_vim_39

seesionkey 工具_bootstrap_40

seesionkey 工具_vim_41

 

 

11、进入数据库,为keystone创建数据库,并创建访问用户以及对用户授权。

使用数据库访问客户端作为根用户连接到数据库服务器:

[root@controller-zq ~]# mysql -u root –p

seesionkey 工具_vim_42

 

创建keystone数据库:

MariaDB [(none)]> create database keystone;

seesionkey 工具_seesionkey 工具_43

 

授予对keystone数据库的合适的访问权限:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost'  IDENTIFIED BY '123456';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%'  IDENTIFIED BY '123456';

MariaDB [(none)]> use mysql

seesionkey 工具_vim_44

 

          MariaDB [mysql]> select user,password from user;

seesionkey 工具_vim_45

 

MariaDB [mysql]> show databases;

seesionkey 工具_seesionkey 工具_46

 

MariaDB [mysql]> use keystone;

MariaDB [keystone]> show tables;

seesionkey 工具_seesionkey 工具_47

 

 

12、初始化keystone数据库,参考命令

su -s /bin/sh -c "keystone-manage db_sync" keystone

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

[root@controller-zq ~]# mysql -u root -p

seesionkey 工具_vim_48

 

MariaDB [(none)]> use keystone

MariaDB [keystone]> show tables;

seesionkey 工具_vim_49

 

 

13、初始化keys,参考命令

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
 
keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
  --bootstrap-admin-url http://controller:35357/v3/ \
  --bootstrap-internal-url http://controller:5000/v3/ \
  --bootstrap-public-url http://controller:5000/v3/ \
  --bootstrap-region-id RegionOne

初始化Fernet密钥存储库:

[root@controller-zq ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

[root@controller-zq ~]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

seesionkey 工具_vim_50

 

启动标识服务:

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

seesionkey 工具_seesionkey 工具_51

 

配置Apache HTTP服务器:

编辑/etc/httpd/conf/httpd.conf文件:

[root@controller-zq ~]# vim /etc/httpd/conf/httpd.conf

seesionkey 工具_数据库_52

 

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

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

[root@controller-zq ~]# ll /etc/httpd/conf.d/

seesionkey 工具_vim_53

 

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

[root@controller-zq ~]# systemctl enable httpd.service

[root@controller-zq ~]# systemctl start httpd.service

[root@controller-zq ~]# systemctl status httpd.service

seesionkey 工具_bootstrap_54

 

 

14、创建域、项目、用户和角色,参考命令

创建Service Project:

  #penstack project create --domain default \

--description "Service Project" service

  创建Demo Project:

  #openstack project create --domain default \

--description "Demo Project" demo

创建 demo 用户:

  #openstack user create --domain default \

  --password-prompt demo

  创建user角色:

  #openstack role create user

  将用户租户角色连接起来:

  #openstack role add --project demo --user demo user

创建环境变量:

[root@controller-zq ~]# export OS_PROJECT_DOMAIN_NAME=Default
[root@controller-zq ~]# export OS_USER_DOMAIN_NAME=Default
[root@controller-zq ~]# export OS_PROJECT_NAME=admin
[root@controller-zq ~]# export OS_USERNAME=admin
[root@controller-zq ~]# export OS_PASSWORD=123456
[root@controller-zq ~]# export OS_AUTH_URL=http://controller-zq:5000/v3     
[root@controller-zq ~]# export OS_IDENTITY_API_VERSION=3
[root@controller-zq ~]# export OS_IMAGE_API_VERSION=2

seesionkey 工具_seesionkey 工具_55

 

查看环境变量:

[root@controller-zq ~]# export | grep OS

seesionkey 工具_vim_56

 

虽然“默认”域已经存在于本指南中的KestSton管理引导步骤中,但是创建新域的正式方式是:

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

seesionkey 工具_数据库_57

 

创建Service Project:

[root@controller-zq ~]# openstack project create --domain default --description "Service Project" service

seesionkey 工具_数据库_58

 

创建Demo Project:

[root@controller-zq ~]# openstack project create --domain default --description "Demo Project" demo-zq

seesionkey 工具_数据库_59

 

创建 demo 用户:

[root@controller-zq ~]# openstack user create --domain default  --password-prompt zhongqing

seesionkey 工具_vim_60

 

创建user角色:

[root@controller-zq ~]# openstack role create user-zq

   

seesionkey 工具_数据库_61

 

将用户租户角色连接起来:

root@controller-zq ~]# openstack role add --project demo-zq --user zhongqing user-zq

seesionkey 工具_数据库_62

 

 

15、验证用户信息

取消设置临时OS_AUTH_URL和OS_PASSWORD环境变量:

[root@controller-zq ~]# unset OS_AUTH_URL OS_PASSWORD

seesionkey 工具_数据库_63

 

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

[root@controller-zq ~]# openstack --os-auth-url http://controller-zq:5000/v3 \

> --os-project-domain-name Default --os-user-domain-name Default \

> --os-project-name admin --os-username admin token issue

seesionkey 工具_bootstrap_64

 

使用创建的zhongqing用户,请求身份验证令牌:

[root@controller-zq ~]# openstack --os-auth-url http://controller-zq:5000/v3 \

> --os-project-domain-name Default --os-user-domain-name Default \

> --os-project-name demo-zq --os-username zhongqing token issue

seesionkey 工具_seesionkey 工具_65

 

 

16、创建OpenStack客户端环境脚本

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

[root@controller-zq ~]# 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=123456

export OS_AUTH_URL=http://controller-zq:5000/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

seesionkey 工具_数据库_66

 

创建并编辑zq-openrc文件,添加以下内容:

[root@controller-zq ~]# vim zq-openrc

export OS_PROJECT_DOMAIN_NAME=Default

export OS_USER_DOMAIN_NAME=Default

export OS_PROJECT_NAME=demo-zq

export OS_USERNAME=zhongqing

export OS_PASSWORD=123456

export OS_AUTH_URL=http://controller-zq:5000/v3

export OS_IDENTITY_API_VERSION

seesionkey 工具_seesionkey 工具_67

 

加载admin-openrc文件以使用标识服务的位置、管理项目和用户凭据填充环境变量:

[root@controller-zq ~]# . admin-openrc

seesionkey 工具_seesionkey 工具_68

 

请求身份验证令牌:

[root@controller-zq ~]# openstack token issue

seesionkey 工具_vim_69

 

加载zq-openrc文件以使用标识服务的位置、管理项目和用户凭据填充环境变量:

[root@controller-zq ~]# . zq-openrc

seesionkey 工具_seesionkey 工具_70

 

请求身份验证令牌:

seesionkey 工具_vim_71

 

 

查看域列表:

[root@controller-zq ~]# openstack domain list

seesionkey 工具_数据库_72

 

查看用户列表:

[root@controller-zq ~]# openstack user list

seesionkey 工具_vim_73

 

查看角色列表:

[root@controller-zq ~]# openstack role list

seesionkey 工具_vim_74

 

查看服务列表:

[root@controller-zq ~]# openstack service list

seesionkey 工具_vim_75

 

查看项目列表:

[root@controller-zq ~]# openstack project list

seesionkey 工具_vim_76