首页 > 其他分享 >一键云部署:ROS的Terraform托管服务助你轻松上线2048经典游戏

一键云部署:ROS的Terraform托管服务助你轻松上线2048经典游戏

时间:2024-05-29 10:32:45浏览次数:8  
标签:游戏 部署 2048 Terraform ROS 资源

在现代云计算环境中,自动化部署已经成为一项重要的任务。Terraform,作为HashiCorp公司的一款开源工具,以其强大的基础设施即代码(IaC)能力,使得我们能够轻松管理和部署各种云资源。

阿里云资源编排服务(Resource Orchestration Service,ROS)是一种简单易用的云计算资源自动化部署服务,提供了Terraform托管服务。因此您可以直接在ROS中部署Terraform模版。在这篇文章中,我们将详细介绍如何使用ROS的Terraform托管服务一键部署经典的2048小游戏。

首先,让我们了解一下什么是2048游戏。2048是一款基于数字的益智游戏,玩家需要在4x4的格子中滑动数字方块,每移动一次,所有方块都会向滑动的方向靠拢,同时空白位置会随机出现一个2或4,目标是合并出2048这个数字。现在,我们要将这个游戏部署到云端,让全世界的玩家都能在线体验。

部署流程

  1. 登录阿里云资源编排控制台
  2. 在左侧导航栏,单击资源栈
  3. 在顶部菜单栏的地域下拉列表,选择资源栈的所在地域,例如:华东1(杭州)
  4. 在资源栈列表页面,单击创建资源栈,然后在下拉列表中选择使用Terraform
  5. 选择模板录入方式为输入模板,并选择模板内容为Terraform
  6. 编写Terraform模板,命名为main.tf,模版内容如下,可以直接复制进去,点击下一步
variable "zone_id" {
  type        = string
  description = <<EOT
  {
    "AssociationProperty": "ZoneId",
    "Label": {
      "zh-cn": "可用区ID",
      "en": "Zone ID"
    }
  }
  EOT
}

variable "instance_type" {
  type        = string
  description = <<EOT
  {
    "Label": {
        "zh-cn": "实例类型",
        "en": "Instance Type"
    },
    "AssociationProperty": "ALIYUN::ECS::Instance::InstanceType"
  }
  EOT
  default     = "ecs.e-c1m2.large"
}

resource "alicloud_vpc" "vpc" {
  vpc_name   = "game-vpc"
  cidr_block = "192.168.0.0/16"
}

resource "alicloud_vswitch" "vswitch" {
  vpc_id     = alicloud_vpc.vpc.id
  zone_id    = var.zone_id
  cidr_block = "192.168.0.0/24"
}


resource "alicloud_security_group" "group" {
  vpc_id = alicloud_vpc.vpc.id
}

resource "alicloud_security_group_rule" "rule" {
  type              = "ingress"
  ip_protocol       = "all"
  nic_type          = "intranet"
  policy            = "accept"
  port_range        = "80/80"
  priority          = 1
  security_group_id = alicloud_security_group.group.id
  cidr_ip           = "0.0.0.0/0"
}

resource "alicloud_instance" "ecs" {
  availability_zone          = var.zone_id
  security_groups            = alicloud_security_group.group.*.id
  instance_type              = var.instance_type
  system_disk_category       = "cloud_essd"
  image_id                   = "centos_7_9_x64_20G_alibase_20220824.vhd"
  instance_name              = "game-ecs"
  vswitch_id                 = alicloud_vswitch.vswitch.id
  internet_max_bandwidth_out = 2
  user_data                  = <<EOF
#!/bin/bash
yum install -y httpd wget
systemctl start httpd
wget 'https://computenest-artifacts-cn-hangzhou.oss-cn-hangzhou-internal.aliyuncs.com/1853370294850618/cn-beijing/1697533575326/2048.tgz' -O 2048.tgz
tar xvf 2048.tgz
mv 2048/* /var/www/html && rm -rf 2048
EOF
}

output "GameUrl" {
  value = format("http://%s:80", alicloud_instance.ecs.public_ip)
}
  1. 配置模版参数:选择ECS的实例规格以及部署的可用区
  2. 点击预览模版资源可以查看将要创建的资源信息
  3. 点击创建进行2048游戏的自动化部署
  4. 部署完成后,点击资源栈的输出,可以看到2048游戏的地址,打开该链接即可游玩2048了!

标签:游戏,部署,2048,Terraform,ROS,资源
From: https://www.cnblogs.com/alicloudros/p/18219658

相关文章

  • Prism框架与Microsoft.Extensions.DependencyInjection的集成使用笔记
    在现代的WPF应用开发中,Prism框架提供了强大的模块化、依赖注入和MVVM支持,而Microsoft.Extensions.DependencyInjection提供了简洁而功能强大的依赖注入机制。另外很重要的一点是Microsoft.Extensions.*或者第三方的Nuget基本会提供Microsoft.Extensions.DependencyInjection,那么......
  • 【ROS】-- 自定义回调队列
    在ros中,我们常用的回调处理是ros::spin()或者ros::spinOnce(),但是,这两个是阻塞式单线程处理的,即当不做其他处理的情况下,某一个回调函数堵塞,其他topic或者service的回调函数就无法进入。使用ros多线程的方式可以解决该问题,但引入多线程会导致线程安全的问题。针对某些场景,......
  • 基于.NET Framework 4.8.1的ASP.NET Web用Gitlab Runner调用MSBuild之后没有bin\rosl
    摘要基于.NETFramework4.8.1的传统ASP.NETWeb程序,使用GitlabRunner自动集成,在发布的网站目录下,没有bin\Roslyn文件夹。这里涉及到容易被忽视的Roslyn编译器的知识点。Roslyn是什么?在我们的ASP.NETWeb项目源代码中有什么体现?1、web.config下有配置节点一般在web.config末......
  • ROS2入门21讲__第21讲__ROS2应用与进阶攻略
    资源汇总常用框架自主导航比如移动机器人基本都会具备的自主导航功能,ROS2提供了完整的自主导航系统框架和各种实现好的算法,即便我们不开发任何代码,也可以在自己的机器人上,使用这套系统,快速实现自主导航的基本功能。大家如果要进行相关的应用开发,可以参考这个链接中的内容:......
  • PROSJEK
    [COCI2014-2015#1]PROSJEK题目描述有一个数列aaa,现在按照下列公式求出一个数列bb......
  • vscode使用colcon build编译ros2工程时报错:The current CMakeCache.txt directory...i
    之前已经编译好了一个文件夹A下的工程然后复制出一个文件夹B,再次编译时出现了问题,报错ThecurrentCMakeCache.txtdirectory...isdifferentfrom...其实也能猜到就是当路径从A变到B,不匹配导致报错,但是不知道应该在哪里改CSDN上有个文章给出回答:删除build文件夹,当然把log和ins......
  • 机械臂与Realsense D435 相机的手眼标定ROS包
    本教程主要介绍机械臂与RealsenseD435相机手眼标定的配置及方法。系统:Ubuntu20.0.4◼ROS:Noetic◼OpenCV库:OpenCV4.2.0◼RealsenseD435:librealsensesdk(2.50.0)、realsense-ros功能包(2.3.2)◼Marker标记识别:Aruco功能包◼手眼标定:easy_handeye功能包◼Mov......
  • java 通过 microsoft graph 调用outlook(三)
    这次会添加一个Reply接口,并且使用6.10.0版本 直接上代码一,POM<!--office365--><dependency><groupId>com.microsoft.graph</groupId><artifactId>microsoft-graph</artifactId><......
  • ROS学习篇1安装(Ubuntu18.04 Bionic +ROS Melodic)
    设置sources.listsudosh-c'echo"debhttp://packages.ros.org/ros/ubuntu$(lsb_release-sc)main">/etc/apt/sources.list.d/ros-latest.list'sudoapt-keyadv--keyserver'hkp://keyserver.ubuntu.com:80'--recv-keyC1CF6E31E6......
  • 解决ROS国内rosdep init和update的相关问题
    解决ROS国内rosdepinit和update的相关问题解决办法,使用国内鱼香ROS的镜像rosdepc,感谢大佬无私馈赠。sudopip3installrosdepcsudorosdepcinitrosdepcupdate#更新已经不在支持的ROS依赖关系rosdepcupdate--include-eol#安装功能包的相关依赖rosdepcinstall--fr......