云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

域名注册_微软云azure_返利

小七 141 0

演示HashiCorp工具与舞蹈自动化

当我们为会议或活动构建演示时,我们希望突出显示HashiCorp开源工具的独特用例。在这篇文章中,我们概述了我们如何构建舞蹈自动化来演示HashiCorp Nomad、Terraform和consur的使用,并记录了沿途的一些挑战。我们在Hashiconf2019年首次推出舞蹈舞蹈自动化的迭代,并将继续在其基础上进一步发展。游戏由一个托管在Nomad集群上的游戏服务器组成,与consur服务网格连接,由Terraform提供。»游戏目标在舞蹈中,自动控制块会随着音乐的节拍在屏幕上显示出来,当积木经过时,玩家必须轻触相应的键盘。每个块对应于HashiCorp Nomad上的一个分配。如果玩家成功地将拍板拍打到方块上,游戏将停止相应的分配。如果玩家停止分配的速度超过了游牧者重新安排的速度,则会获得奖励积分。分配的ID在每个块的上方闪烁,当没有分配时,标签变为空。成功停止分配的玩家将获得10分,超过调度程序的"空"分配将获得50分。该游戏包括一个多人模式,供玩家相互竞争。接下来,我们将更仔细地了解运行舞蹈自动化的架构。»Nomad上的游戏服务器Dance Dance Automation的服务器组件运行在Google云平台中的Nomad集群上。这些过程对玩家不可见,它们跟踪分配、分配给玩家、组织游戏和管理分数。所有的游戏、分数和分配都保存在PostgreSQL数据库中。Nomad集群中的游戏服务器和应用程序(例如Cloud Pong,我们在另一篇文章中介绍)可以作为游戏的一部分停止。»与领事建立联系在Nomad集群中,游戏服务器利用consur1.6mesh网关和服务Mesh特性。我们使用consur将游戏服务器连接到数据库,并观察从游戏客户端到服务器的流量。当游戏服务器连接到数据库和其他实例时,concur服务Mesh用mTLS加密其所有请求。当游戏客户端(特别是玩家看到的内容)连接到游戏服务器时,通过结合特使和执政者中央配置构建的API网关,将请求代理到后端游戏服务器。作为未来的一步,我们打算使用Mesh网关跨不同云中的多个集群连接到游戏服务器。»地形部署使用Terraform云,我们提供了从集群到游戏服务器的所有游戏组件。当我们对配置进行任何更改时,我们将推送到包含Terraform配置的存储库。terraformcloud从GitHub接收webhook事件并启动计划。当我们中的一个修改了Nomad作业配置,而另一个修改了DNS子域时,我们发现这一点特别有用。Terraform不仅锁定了状态,还启用了对更改和受影响的依赖项的检查。»游戏客户端当玩家进入游戏时,他们与游戏客户端进行交互。我们用开源游戏引擎Godot构建了游戏客户端。当应用程序开始时,它会调用Nomad上的游戏服务器来注册玩家并在多人模式下进入大厅。游戏中的特定操作会触发对游戏服务器的API调用。例如,游戏完成触发一个API调用,以退出游戏并发布高分。我们制作了游戏的图形和音频。为了协调玩家必须匹配的方块,我们使用了MBoy编辑器,一个为类似的Godot游戏创建的应用程序,来标记每个音符并在三个音轨上进行协调。玩家可以通过键盘控制与游戏互动,但为了增加趣味性,我们想为玩家创造一套"跳舞"的垫子。»硬件最初,我们想在覆盆子Pi上运行游戏,并将我们制作的舞蹈垫连接到GPIO引脚上。然而,我们并没有发现这款游戏在覆盆子派上的表现理想化,只好另辟蹊径。因为这个游戏是用键盘控制作为备份机制的,所以我们将舞池中的信号映射到特定的按键上。为了在比Raspberry Pi更强大的硬件上运行游戏,我们必须代理Pi中的按键并将其映射到笔记本电脑上。为了实现这一点,我们在Raspberry Pi上创建了一个服务器("按钮服务器"),将GPIO输入转换为HTTP请求,然后将这些请求转发到客户机上的服务器("密钥服务器"),该服务器接收来自Raspberry Pi的API调用并将其映射到按键。我们称之为"密钥服务器"。Raspberry Pi还托管了一个"LED服务器",它接受来自客户端的HTTP调用,然后使用GPIO打开相应的舞池。硬件带来了一些重大的挑战,因为电接触和物理损伤会影响玩家的体验。我们花了相当长的时间焊接和修理触点,甚至到五金店去买额外的线路和用品。由于一些舞蹈垫的缺陷,我们不得不用其他工作垫替换我们的打包机垫(这就是为什么在照片中,你可能会看到两个游牧民或跳马垫!)。»结论当我们在HashiConf 2019年的地板上设置舞池时,我们确实让一些参与者成功地在垫子上演奏。一些玩家甚至在几个街区内以他们的技能超过了游牧民调度员!我们将通过修复第一次迭代的硬件问题并在架构中添加更多HashiCorp工具来继续改进和扩展Dance-Dance自动化。我们希望整合Vault作为一种循环数据库凭证的方式,并使用Consult的更多服务网格来控制游戏服务器和客户端之间的流量。为了实际使用,游戏将针对树莓派进行优化,以消除对额外计算机的需要。一旦我们提高了游戏的性能,我们可以用Packer创建一个不可变的Raspbian映像,这样我们就可以快速创建多个客户端。如果您有任何问题或想了解更多信息,请随时访问社区论坛、HashiCorp用户组、活动和会议主题。欢迎来到您附近的HashiCorp社区活动,收看舞蹈自动化!