【赛程名称】云计算赛项第一场-私有云
某企业拟使用 OpenStack 搭建一个企业云平台,以实现资源池化弹性管理、企业应用集 中管理、统一安全认证和授权等管理。 系统架构如图 1 所示,IP 地址规划如表 1 所示。
使用提供的用户名密码,登录提供的 OpenStack 私有云平台,自行使用 CentOS7.5 镜像 创建两台云主机,控制节点 flavor 使用 4v_12G_100G 的配置,计算节点 flavor 使用 4v_8G_100G_50G 的配置。第一张网卡使用提供的网络,第二张网卡使用的网络自行创建(网 段为 10.10.X.0/24,X 为工位号)。创建完云主机后确保网络正常通信,然后按以下要求配 置服务器:
(1)设置控制节点主机名为 controller,设置计算节点主机名为 compute;
(2)修改 hosts 文件将 IP 地址映射为主机名; 完成后提交控制节点的用户名、密码和 IP 地址到答题框。
[root@localhost ~]# hostnamectl set-hostname controller
[root@localhost ~]# hostnamectl set-hostname compute
[root@localhost ~]# logout
[root@controller ~]# vi /etc/hosts
192.168.100.10 controller
192.168.100.20 compute
[root@controller ~]# scp /etc/hosts compute:/etc/hosts
#题目没有要求关闭防火墙 我们在练习的时候还是先把它给关闭了
使用提供的 http 服务地址,在 http 服务下,存在 centos7.5 和 iaas 的网络 yum 源,使用 该 http 源作为安装 iaas 平台的网络源。分别设置 controller 节点和 compute 节点的 yum 源文 件 http.repo。完成后提交控制节点的用户名、密码和 IP 地址到答题框。
上传如下两个软件包
CentOS-7.5-x86_64-DVD-1804.iso
chinaskills_cloud_iaas.iso
[root@controller ~]# mkdir /opt/{centos,iaas}
[root@controller ~]# mount CentOS-7.5-x86_64-DVD-1804.iso /opt/centos/
[root@controller ~]# mount chinaskills_cloud_iaas.iso /opt/iaas/
[root@controller ~]# mv /etc/yum.repos.d/* /home/
比赛的时候只需要使用提供的url替换如下的baseurl即可,以上的都可以不用进行操作
[root@controller ~]# vi /etc/yum.repos.d/http.repo
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=file:///opt/iaas/iaas-repo
gpgcheck=0
enabled=1
[root@controller ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
centos centos 3,971
iaas iaas 3,232
repolist: 7,203
[root@controller ~]# yum install -y httpd
[root@controller ~]# vi /etc/httpd/conf/httpd.conf
DocumentRoot "/opt/"
<Directory "/opt">
..............
[root@controller ~]# rm -rf /etc/httpd/conf.d/welcome.conf #需要执行这一步
[root@controller ~]# systemctl start httpd
[root@controller ~]# systemctl enable httpd
计算节点操作
[root@compute ~]# vi /etc/yum.repos.d/http.repo
[centos]
name=centos
baseurl=http://192.168.100.10/centos/
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=http://192.168.100.10/iaas/iaas-repo/
gpgcheck=0
enabled=1
[root@compute ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
centos centos 3,971
iaas iaas 3,232
repolist: 7,203
在 controller 节点上部署 chrony 服务器,允许其他节点同步时间,启动服务并设置为开 机启动;在 compute 节点上指定 controller 节点为上游 NTP 服务器,重启服务并设为开机启 动。完成后提交控制节点的用户名、密码和 IP 地址到答题框。
[root@controller ~]# yum install -y chrony
[root@controller ~]# vi /etc/chrony.conf
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server controller iburst
minsources 2
allow 192.168.100.0/24
local stratum 10
[root@controller ~]# systemctl restart chronyd
[root@controller ~]# systemctl enable chronyd
[root@controller ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- controller 10 6 17 7 -6852ns[-6852ns] +/- 17us
计算节点操作
[root@compute ~]# yum install -y chrony
[root@compute ~]# vi /etc/chrony.conf
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server controller iburst
[root@compute ~]# systemctl restart chronyd
[root@compute ~]# systemctl enable chronyd
[root@compute ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* controller 10 6 17 9 +374ns[ +49us] +/- 335us
在 compute 节点上利用空白分区划分 2 个 20G 分区。完成后提交计算节点的用户名、 密码和 IP 地址到答题框。
[root@compute ~]# fdisk /dev/sdb
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-83886079, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-83886079, default 83886079): +20G
Partition 1 of type Linux and of size 20 GiB is set
Command (m for help): w
#重复执行两次即可
[root@compute ~]# lsblk
sdb 8:16 0 40G 0 disk
├─sdb1 8:17 0 20G 0 part
└─sdb2 8:18 0 20G 0 part
表 2 云平台配置信息
使用提供的脚本框架 iaas-pre-host.sh 和 openrc.sh 环境变量文件,填充脚本(只需填充 中文注释下的内容),在 controller 和 compute 节点上分别安装 openstack 平台的基础组件并 完成相关配置。(脚本框架 install_openstack.tar.gz 软件包在 http 服务下)安装完成后提交控 制节点的用户名、密码和 IP 地址到答题框。
控制节点操作
[root@controller ~]# yum install -y iaas-xiandian
[root@controller ~]# sed -i 's/^.//g' /etc/xiandian/openrc.sh
[root@controller ~]# sed -i 's/PASS=/PASS=000000/g' /etc/xiandian/openrc.sh
[root@controller ~]# vi /etc/xiandian/openrc.sh
HOST_IP=192.168.100.10
HOST_PASS=000000
HOST_NAME=controller
HOST_IP_NODE=192.168.100.20
HOST_PASS_NODE=000000
HOST_NAME_NODE=compute
network_segment_IP=192.168.100.0/24
RABBIT_USER=openstack
RABBIT_PASS=000000
DB_PASS=000000
DOMAIN_NAME=demo
ADMIN_PASS=000000
DEMO_PASS=000000
KEYSTONE_DBPASS=000000
GLANCE_DBPASS=000000
GLANCE_PASS=000000
NOVA_DBPASS=000000
NOVA_PASS=000000
NEUTRON_DBPASS=000000
NEUTRON_PASS=000000
METADATA_SECRET=000000
INTERFACE_IP=192.168.100.10
INTERFACE_NAME=ens37
Physical_NAME=provider
minvlan=101
maxvlan=200
CINDER_DBPASS=000000
CINDER_PASS=000000
BLOCK_DISK=sdb1
SWIFT_PASS=000000
OBJECT_DISK=sdb2
STORAGE_LOCAL_NET_IP=192.168.100.20
HEAT_DBPASS=000000
HEAT_PASS=000000
ZUN_DBPASS=000000
ZUN_PASS=000000
KURYR_DBPASS=000000
KURYR_PASS=000000
CEILOMETER_DBPASS=000000
CEILOMETER_PASS=000000
AODH_DBPASS=000000
AODH_PASS=000000
BARBICAN_DBPASS=000000
BARBICAN_PASS=000000
[root@controller ~]# scp /etc/xiandian/openrc.sh compute:/etc/xiandian/openrc.sh
[root@controller ~]# source /etc/xiandian/openrc.sh
[root@controller ~]# iaas-pre-host.sh
计算节点
[root@compute ~]# vi /etc/xiandian/openrc.sh
.....
INTERFACE_IP=192.168.100.20
.....
[root@compute ~]# source /etc/xiandian/openrc.sh
[root@compute ~]# iaas-pre-host.sh
使用提供的脚本框架 iaas-install-mysql.sh,填充脚本(只需填充中文注释下的内容), 在 controller 节点上安装 mariadb、mencached、rabbitmq 等服务并完成相关配置。完成后提 交控制节点的用户名、密码和 IP 地址到答题框。
[root@controller ~]# iaas-install-mysql.sh
使用提供的脚本框架 iaas-install-keystone.sh,填充脚本(只需填充中文注释下的内容), 在 controller 节点上安装 keystone 服务并完成相关配置。完成后提交控制节点的用户名、密 码和 IP 地址到答题框。
[root@controller ~]# iaas-install-keystone.sh
使用提供的脚本框架 iaas-install-glance.sh,填充脚本(只需填充中文注释下的内容), 在 controller 节点上安装 glance 服务并完成相关配置。安装完成后提交控制节点的用户名、 密码和 IP 地址到答题框。
[root@controller ~]# iaas-install-glance.sh
使用提供的脚本框架 iaas-install-nova-controller.sh 和 iaas-install-nova-compute.sh,填 充脚本(只需填充中文注释下的内容),在 controller 和 compute 节点上安装 nova 服务并完 成配置。完成后提交控制节点的用户名、密码和 IP 地址到答题框。
[root@controller ~]# iaas-install-nova-controller.sh
[root@compute ~]# iaas-install-nova-compute.sh
使用提供的脚本框架iaas-install-neutron-controller.sh和iaas-install-neutron-compute.sh, 填充脚本(只需填充中文注释下的内容),在 controller 和 compute 节点上安装 neutron 服务 并完成配置。完成后提交控制节点的用户名、密码和 IP 地址到答题框。
[root@controller ~]# iaas-install-neutron-controller.sh
[root@compute ~]# iaas-install-neutron-compute.sh
使用提供的脚本框架 iaas-install-dashboard.sh,填充脚本(只需填充中文注释下的内 容),在 controller 节点上安装 dashboard 服务并完成相关配置。完成后提交控制节点的用户 名、密码和 IP 地址到答题框。
[root@controller ~]# iaas-install-dashboard.sh
使用提供的脚本框架 iaas-install-cinder-controller.sh 和 iaas-install-cinder-compute.sh,填 充脚本(只需填充中文注释下的内容),在 controller 和 compute 节点上安装 cinder 服务并 完成配置。完成后提交控制节点的用户名、密码和 IP 地址到答题框。
[root@controller ~]# iaas-install-cinder-controller.sh
[root@compute ~]# iaas-install-cinder-compute.sh
使用提供的脚本框架 iaas-install-swift-controller.sh 和 iaas-install-swift-compute.sh,填充 脚本(只需填充中文注释下的内容),在 controller 和 compute 节点上安装 swift 服务并完成 配置。完成后提交控制节点的用户名、密码和 IP 地址到答题框。
[root@controller ~]# iaas-install-swift-controller.sh
[root@compute ~]# iaas-install-swift-compute.sh
使用提供的脚本框架 iaas-install-heat.sh,填充脚本(只需填充中文注释下的内容),在 controller 节点上安装 heat 服务并完成相关配置。完成后提交控制节点的用户名、密码和 IP 地址到答题框。
[root@controller ~]# iaas-install-heat.sh
在自行搭建的 OpenStack 私有云平台或提供的 all-in-one 平台上,根据 http 服务中提供 的 Python-api.tar.gz 软件包,完成 python3.6 软件和依赖库的安装。在 controller 节点的/root目录下创建create_user.py 文件,编写 python 代码对接 OpenStack API,完成用户的创建。要 求在 OpenStack 私有云平台中创建用户 chinaskill,描述为“API create user!”。执行完代码 要求输出“用户创建成功”。根据上述要求编写 python 代码,完成后,将 controller 节点的 IP 地址,用户名和密码提交。(考试系统会连接到你的 controller 节点,去执行 python 脚本, 请准备好运行的环境,以便考试系统访问)
提前安装好python3.6
[root@controller api]# python3 --version
Python 3.6.8
[root@controller ~]# vi create_user.py
import requests
import json
body = {
'auth':{
'identity':{
'methods':['password'],
'password':{
'user':{
'name':'admin',
'domain':{
'name':'demo'
},
'password':'000000'
}
}
},
'scope':{
'project':{
'domain':{
'name':'demo'
},
'name':'admin'
}
}
}
}
headers = {'Content-Type':'application/json'}
def get_token():
result = requests.post('http://192.168.100.10:5000/v3/auth/tokens',headers=headers,json=body).headers['X-Subject-Token']
print(result)
return result
..............................