2021 年全国职业院校技能大赛高职组云计 算赛项试卷
使用提供的用户名密码,登录提供的 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 地址到答题框。
1.使用 hostnamectl 命令查看主机名为 controller 计 0.5 分
[root@controller ~]# hostnamectl
Static hostname: controller
Icon name: computer-desktop
Chassis: desktop
Machine ID: 288e2428d6564d17badedef1027225ea
Boot ID: 987b632d57ce44628bf167bc27e3d65b
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-862.el7.x86_64
Architecture: x86-64
[root@controller ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.10 controller
192.168.100.20 compute
3.控制节点正确使用两块网卡计 0.5 分
[root@controller ~]# ip a
使用提供的 http 服务地址,在 http 服务下,存在 centos7.5 和 iaas 的网络 yum 源,使用 该 http 源作为安装 iaas 平台的网络源。分别设置 controller 节点和 compute 节点的 yum 源文 件 http.repo。完成后提交控制节点的用户名、密码和 IP 地址到答题框
[root@controller ~]# cat /etc/yum.repos.d/http.repo
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=file:///opt/openstack/iaas-repo
gpgcheck=0
enabled=1
[root@compute ~]# cat /etc/yum.repos.d/http.repo
[centos]
name=centos
baseurl=ftp://192.168.100.10/centos
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=ftp://192.168.100.10/openstack/iaas-repo
gpgcheck=0
enabled=1
在 controller 节点上部署 chrony 服务器,允许其他节点同步时间,启动服务并设置为开 机启动;在 compute 节点上指定 controller 节点为上游 NTP 服务器,重启服务并设为开机启 动。完成后提交控制节点的用户名、密码和 IP 地址到答题框。
controller
sed -i '3,6s/^/#/g' /etc/chrony.conf
echo "allow 192.168.100.0/24" >> /etc/chrony.conf
echo "local stratum 10" >> /etc/chrony.conf
compute
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#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
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3
# Enable kernel synchronization of the real-time clock (RTC).
rtcsync
# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *
# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2
# Allow NTP client access from local network.
#allow 192.168.0.0/16
# Serve time even if not synchronized to a time source.
#local stratum 10
# Specify file containing keys for NTP authentication.
#keyfile /etc/chrony.keys
# Specify directory for log files.
logdir /var/log/chrony
# Select which information is logged.
#log measurements statistics tracking
allow 192.168.100.0/24
local stratum 10
[root@compute ~]# cat /etc/chrony.conf
echo "server controller iburst" >> /etc/chrony.conf
[root@compute ~]# cat /etc/chrony.conf
[root@controller ~]# systemctl status chronyd
在 compute 节点上利用空白分区划分 2 个 20G 分区。完成后提交计算节点的用户名、 密码和 IP 地址到答题框。
使用fdisk分区,如果使用parted分区则不用完整的分出20GB
任务需要完成 openstack 平台的安装搭建及运维任务(无安装脚本),表 2 提供了在安 装过程中需要使用相关服务参数。
表 2 云平台配置信息
| 服务名称 | 变量 | 参数/密码 |
|
Mysql | root | 000000 |
| Keystone | 000000 | |
| Glance | 000000 | |
| Nova | 000000 | |
| Neutron | 000000 |
Heat 000000 Zun 000000 Keystone DOMAIN_NAME demo Admin 000000 Rabbit 000000 Glance 000000 Nova 000000 Neutron 000000 Heat 000000 Zun 000000 Neutron Metadata 000000 External Network eth1(第二块网卡名) 使用提供的脚本框架 iaas-pre-host.sh 和 openrc.sh 环境变量文件,填充脚本(只需填充 中文注释下的内容),在 controller 和 compute 节点上分别安装 openstack 平台的基础组件并 完成相关配置。(脚本框架 install_openstack.tar.gz 软件包在 http 服务下)安装完成后提交控 制节点的用户名、密码和 IP 地址到答题框。 iaas-pre-host.sh
使用提供的脚本框架 iaas-install-mysql.sh,填充脚本(只需填充中文注释下的内容), 在 controller 节点上安装 mariadb、mencached、rabbitmq 等服务并完成相关配置。完成后提 交控制节点的用户名、密码和 IP 地址到答题框。 iaas-install-mysql.sh
使用提供的脚本框架 iaas-install-keystone.sh,填充脚本(只需填充中文注释下的内容), 在 controller 节点上安装 keystone 服务并完成相关配置。完成后提交控制节点的用户名、密 码和 IP 地址到答题框。 iaas-install-keystone.sh 使用提供的脚本框架 iaas-install-glance.sh,填充脚本(只需填充中文注释下的内容), 在 controller 节点上安装 glance 服务并完成相关配置。安装完成后提交控制节点的用户名、 密码和 IP 地址到答题框。 iaas-install-glance.sh
使用提供的脚本框架 iaas-install-nova-controller.sh 和 iaas-install-nova-compute.sh,填 充脚本(只需填充中文注释下的内容),在 controller 和 compute 节点上安装 nova 服务并完 成配置。完成后提交控制节点的用户名、密码和 IP 地址到答题框。 iaas-install-nova-controller.sh 和 iaas-install-nova-compute.sh 使用提供的脚本框架 iaas-install-neutron-controller.sh 和 iaas-install-neutron-compute.sh, 填充脚本(只需填充中文注释下的内容),在 controller 和 compute 节点上安装 neutron 服务 并完成配置。完成后提交控制节点的用户名、密码和 IP 地址到答题框。 iaas-install-neutron-controller.sh 和 iaas-install-neutron-compute.sh 使用提供的脚本框架 iaas-install-dashboard.sh,填充脚本(只需填充中文注释下的内 容),在 controller 节点上安装 dashboard 服务并完成相关配置。完成后提交控制节点的用户 名、密码和 IP 地址到答题框。 iaas-install-dashboard.sh 使用提供的脚本框架 iaas-install-cinder-controller.sh 和 iaas-install-cinder-compute.sh,填 充脚本(只需填充中文注释下的内容),在 controller 和 compute 节点上安装 cinder 服务并 完成配置。完成后提交控制节点的用户名、密码和 IP 地址到答题框。 iaas-install-cinder-compute.sh
使用提供的脚本框架 iaas-install-swift-controller.sh 和 iaas-install-swift-compute.sh,填充 脚本(只需填充中文注释下的内容),在 controller 和 compute 节点上安装 swift 服务并完成 配置。完成后提交控制节点的用户名、密码和 IP 地址到答题框。 iaas-install-swift-controller.sh 和 iaas-install-swift-compute.sh 使用提供的脚本框架 iaas-install-heat.sh,填充脚本(只需填充中文注释下的内容),在 controller 节点上安装 heat 服务并完成相关配置。完成后提交控制节点的用户名、密码和 IP 地址到答题框。
iaas-install-heat.sh
【题目 1】使用 python 调用 api 实现创建 user[2 分]
在自行搭建的 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 脚本, 请准备好运行的环境,以便考试系统访问) import requests 【任务 3】OpenStack API 运维任务[10 分]
【适用平台】私有云
import json
body = {
"auth":{
"identity":{
"methods":["password"],
"password":{
"user":{
"id":"53a1cf0ad2924532aa4b7b0750dec282",
"password":"000000"
}
}
},
"scope":{
"project":{
"id":"0ab2dbde4f754b699e22461426cd0774"
}
}
}
}
保密
headers = {}
保密
headers["Accept"] = "*/*"
保密
url_token = "http://controller:35357/v3/auth/tokens"
保密
这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我
给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in
给定两个大小相等的数组,如何找到不考虑位置的匹配元素的数量?例如:[0,0,5]和[0,5,5]将返回2的匹配项,因为有一个0和一个5共同;[1,0,0,3]和[0,0,1,4]将返回3的匹配项,因为0有两场,1有一场;[1,2,2,3]和[1,2,3,4]将返回3的匹配项。我尝试了很多想法,但它们都变得相当粗糙和令人费解。我猜想有一些不错的Ruby习惯用法,或者可能是一个正则表达式,可以很好地回答这个解决方案。 最佳答案 您可以使用count完成它:a.count{|e|index=b.index(e)andb.delete_at
关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭11年前。Improvethisquestion我不经常使用ruby-通常它加起来相当于每两个月或更长时间编写一次脚本。我的大部分编程都是使用C++进行的,这与ruby有很大不同。由于我与ruby之间的差距如此之大,我总是忘记语言的基本方面(比如解析文本文件和其他简单的东西)。我想每天练习一些基本的东西,我想知道是否有一些我可以订阅的网站,并且会向我发送当天的Ruby问题或类似的东西。有人知道这样的站点/Internet服务吗?
Ruby中如何“一般地”计算以下格式(有根、无根)的JSON对象的数量?一般来说,我的意思是元素可能不同(例如“标题”被称为其他东西)。没有根:{[{"title":"Post1","body":"Hello!"},{"title":"Post2","body":"Goodbye!"}]}根包裹:{"posts":[{"title":"Post1","body":"Hello!"},{"title":"Post2","body":"Goodbye!"}]} 最佳答案 首先,withoutroot代码不是有效的json格式。它将没有包
目标我正在尝试计算自给定日期以来周的距离,而无需跳过任何步骤。我更喜欢用普通的Ruby来做,但ActiveSupport无疑是一个可以接受的选择。我的代码我写了以下内容,这似乎可行,但对我来说似乎还有很长的路要走。require'date'DAYS_IN_WEEK=7.0defweeks_sincedate_stringdate=Date.parsedate_stringdays=Date.today-dateweeks=days/DAYS_IN_WEEKweeks.round2endweeks_since'2015-06-15'#=>32.57ActiveSupport的#weeks
所有题目均有五种语言实现。C实现目录、C++实现目录、Python实现目录、Java实现目录、JavaScript实现目录题目n行m列的矩阵,每个位置上有一个元素你可以上下左右行走,代价是前后两个位置元素值差的绝对值.另外,你最多可以使用一次传送阵(只能从一个数跳到另外一个相同的数)求从走上角走到右下角最少需要多少时间。输入描述:第一行两个整数n,m,分别代表矩阵的行和列。后面n行,每行m个整数,分别代表矩阵中的元素。输出描述:一个整数,表示最少需要多少时间。
前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型