使用 CloudIaC 使 terraform 的代码部署更容易

简介: CloudIaC 是一个开源基础架构自动化平台,它可以将Terraform及其他框架下的 deployment 集中到一个协作区,以方便你的整个团队使用。同时CloudIaC支持动态环境,策略合规检测,用户自助式UI 界面等功能。当您考虑使用Terraform 等低代码开发工具去实现多云资源的管控的时候,那么CloudIaC 不失为一个最佳解决方案。

背景:

CloudIaC 是一个开源基础架构自动化平台,它可以将Terraform及其他框架下的 deployment 集中到一个协作区,以方便你的整个团队使用。同时CloudIaC支持动态环境,策略合规检测,用户自助式UI 界面等功能。当您考虑使用Terraform 等低代码开发工具去实现多云资源的管控的时候,那么CloudIaC 不失为一个最佳解决方案。

基础设计架构:

img

以上为CloudIaC的一个服务基础架构,整体可以划分为 web,portal,runner, mysql, consul 五个组件,分别用来支持前端页面,后端API服务以及最后的 terraform 部署任务。其中portal和runner 中间都是使用restful API基于http 协议之间的通信,每个组件都可单独解耦去对外提供服务。各个组件也可以单独拆开使用docker 去进行单独部署。具体部署的方式请参考文档 [容器化部署],[手动部署]。那么在本篇文章当中将不再复述介绍CloudIaC的详细功能,在官方的文档上面已经介绍的非常清楚 。

下面将为大家提供两个基于CloudIaC的部署最佳实践。

案例实战: 使用CloudIaC 来部署一台阿里云ECS云服务器

1.创建服务

首先我们先通过上述的[容器化部署]或[手动部署]的方式,在本地部署一套CloudIaC服务。如果看过文档后如果觉得配置有些繁琐,那么在这里提供了基于阿里云ecs 一键部署CloudIaC 服务的方式 (该服务会在阿里云公有云服务创建收费资源,请根据自己实际情况去使用,测试完毕记得销毁):

1.下载代码

git clone https://github.com/xuxiaoahang2018/cloudiac-docker-deploy.git

2. mac 安装terraform (已安装可跳过, 如果没有brew 可百度安装下brew)
(如果不是mac系统请参考官方文档选择特定版本安装 https://www.terraform.io/downloads.html)
brew install terraform


### 3. 配置阿里云服务ak,region等信息,这里ak 请输入自己的阿里云ak
export ALICLOUD_ACCESS_KEY=LT*************b 
export ALICLOUD_SECRET_KEY=sT*****************Ww
export ALICLOUD_REGION=cn-beijing

### 3. 进入到cloudiac-docker-deploy代码目录下运行命令
terraform init
terraform apply -auto-approve


以上就当命令运行结束后就会在阿里云k8s部署一套CloudIaC出来,我们按照以上命令行输出的公网ip 直接访问80端口即可访问。

4.部署成功后登陆CloudIac页面,提示输出账号密码,这里我们为了方便初学者使用,在配置里面写入了固定值
用户名: admin@example.com
密码: EvanTest#123

如下图: 经过一段时间的创建后(10分钟左右), 我们基于阿里云ecs 搭建的可以公网访问的CloudIaC服务就可以访问了,下面我们在浏览器输入 123.56.108.100:80 (这里请使用自己创建出来的公网ip)

img

2.创建组织/项目/用户

  1. 首先访问我们的首页,输入用户名admin@example.com 密码EvanTest#123 ,
    img
  2. 登陆进来以后右上角会有帮助文档,里面详细描述了各个功能的具体用法,有需要的同学可以点击帮助文档来进行进一步的学习,下面我们先创建一个组织。
    img

3.点击右上角的设置可以创建组织,在CloudIaC 中,可以创建多个组织,每个组织可以创建多个项目,各个组织下面所创建的云模版和项目都是基于组织去隔离的。

img

  1. 此时我们已经创建完成了一个组织,接下来我们来创建一个云模版 ,这里我们先介绍一下什么是云模版:
    img
    上述是官方的介绍,通俗点解释,就是每个terraform.tf的代码仓库,这个仓库存储的terraform.tf 就是你需要去创建的资源,大家可以使用阿里云/腾讯云/华为云 等云厂商官方封装的module 去创建所需要的资源,例如 阿里云k8smodule 等,当然也可以使用自己写的,只要上传到 github/gitea/gitlab 等代码托管仓库即可通过CloudIaC去使用。
  2. 首先我们点击设定,选择vcs ,这里vcs 的就是代码仓库托管的地址,我们在这里可以配置我们代码仓库托管的地址,我们以GitHub 为例。这里的token 我们需要去配置一个github 的token, 不会同学可以自行百度一下,也可以参考这篇文章github配置token
    img

img

  1. 当配置好 VCS 地址以后,我们可以来创建一个云模版,云模版的代码我们提前放到了 阿里云云模版demo
    在下面的terraform版本选择中,如果没有特殊要求我们选择自动匹配即可。自动匹配功能会去自动查找代码库中的 versions.tf 文件中配置的版本,如未配置,则会使用我们默认的0.14.11 版本去执行任务。
    img

7.创建项目,当云模版创建完成以后,需要归纳到项目下面,我们点击创建项目后,并将新创建的云模版划归到该项目下,到目前为止,我们的准备工作已经完成。

img

img

3.创建环境,通过云模版部署资源

首先我们点击部署新环境,这里出现我们刚刚创建的云模版,所有的环境都是基于云模版的,这里可以打一个比方,云模版和环境的关系就像 docker 的镜像和容器一样。
img

img

请注意,这里因为我们要部署阿里云的服务器,云模版需要传入阿里云的ak/sk 等信息去创建服务,所以我们这里要在环境变量里面传入阿里云ak/sk 两个参数值。
img

之后我们点击Plan计划 , 就可以在控制台预览我们此次将要部署的所有资源。
img

通过控制台的部署日志我们看到,此次环境部署,将有5个资源会被部署出来,并且会导出ecs 的公网ip , 接下来我们点击执行部署,该资源就会在阿里云中创建出来。

注意这里创建真实的资源需要管理员去审批通过后才会真实的创建:
img

如图所示,这时候我们已经创建了一个活跃的环境:

img

此时我们可以到阿里云控制台看到云服务器以及相关的vpc等已经创建成功:

img

至此我们已经完成了资源的创建。此时该资源会以一个活跃 的状态存储到环境中。

4. 删除活跃环境(销毁资源)

CloudIaC 平台特性之一就是可以基于平台去管理所有部署的公有云/私有云资源,例如现在有一些公司在服务测试的时候,需要申请上百台机器资源进行测试,那么等测试结束的时候进行统一的销毁和处理,那么CloudIaC 就非常适合这种规模化资源的申请与释放。并且一切都是基于代码去操作,不会出现配置漂移的情景。

img

点击进去以后右上角的销毁资源 按钮,之后便会发起销毁作业,会销毁我们刚才在阿里云上申请的ecs机器,
下图为销毁作业执行成功日志。

img

写在最后

本篇文章只是简单介绍了CloudIaC 的基础用法,CloudIaC 作为一个开源项目,希望可以推广基础设施即代码的工作理念,其中CloudIaC 平台还有合规检测,多云部署等更多的功能,如果各位developer 感兴趣的话,非常欢迎大家更加深入的使用,以及向我们的项目提交code, 每一个merge 的pr,您的名字将会被展示在我们项目成员里面。

后续我们将会更新更多的最佳实践文章,如何多云部署,如果跨公有私有云部署,以及一些常见工具例如Rancher 等通用工具通过 CloudIaC 一键部署,以及企业上云的样本间最佳实践,请多多关注我们。

如何找到我们

欢迎各位关注CloudIaC 开源项目的同学来交流,钉钉群:34576517

img

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
前端开发 API 数据库
Terraform: 基础设施即代码
Terraform: 基础设施即代码
170 0
|
3月前
|
弹性计算 持续交付 API
基于 ROS 的Terraform托管服务轻松部署ChatGLM-6B
文章介绍了如何利用ROS和Terraform模板轻松自动化部署基于GLM架构、优化中文对话的ChatGLM-6B模型至阿里云,提高了部署效率与便捷性,适用于多种应用场景,且模型部署过程详细,彰显了基础设施即代码(IaC)的优势。
基于 ROS 的Terraform托管服务轻松部署ChatGLM-6B
|
3月前
|
弹性计算 人工智能 持续交付
基于 ROS 的Terraform托管服务轻松部署Qwen-7B-Chat
文章介绍了如何利用ROS和Terraform模板轻松自动化部署阿里云的Qwen-7B-Chat大语言模型服务,提高了部署效率与便捷性,是实现云资源和服务快速上线的最佳实践。
基于 ROS 的Terraform托管服务轻松部署Qwen-7B-Chat
|
4月前
|
存储 安全 Devops
|
6月前
|
弹性计算 API 持续交付
基于 ROS 的 Terraform 托管服务轻松部署文本转语音系统 ChatTTS
基于 IaC 的理念,通过定义一个模板,使用 ROS 提供的 Terraform 托管服务进行自动化部署,可以非常高效快捷地部署任意云资源和应用(比如 ChatTTS 服务)。相比于手动部署或者通过 API、SDK 的部署方式,有着高效、稳定等诸多优势,也是服务上云的最佳实践。
基于 ROS 的 Terraform 托管服务轻松部署文本转语音系统 ChatTTS
|
7月前
|
弹性计算 持续交付 数据中心
一键云部署:ROS的Terraform托管服务助你轻松上线2048经典游戏
阿里云的资源编排服务ROS提供了Terraform托管能力,用户可以直接在ROS控制台上部署Terraform脚本,本文将详细介绍如何使用ROS的Terraform托管服务一键部署经典的2048小游戏到云端,让全世界的玩家都能在线体验。
EMQ
|
JSON 负载均衡 物联网
使用 Terraform 在 GCP 上一键部署 EMQX MQTT Broker
本文将指导您如何设置 GCP 项目、创建服务账户、编写 Terraform 配置文件,实现在 GCP 上轻松部署 EMQX MQTT Broker。
EMQ
165 0
使用 Terraform 在 GCP 上一键部署 EMQX MQTT Broker
|
7月前
|
运维 数据中心 数据安全/隐私保护
【Terraform实现云服务基础设施既代码(IaC)案例实战-3】:Terraform+Docker+Portainer+Gitlab+GitlabRunner搭建Tree项目
前言树苗科技公司业务上云2年有余,随着技术的不断发展。运维团队支持业务变更配置、开资源、删资源等过程加班到深夜一两点已是家常便饭。为了进一步提升工作效率,运维总监张三决定对当前业务交付路径进行统一梳理,借助IaC的理念和Terraform自动化工具逐步实施运维生产自动化,改善组内成员频繁加班且重复劳...
329 0
【Terraform实现云服务基础设施既代码(IaC)案例实战-3】:Terraform+Docker+Portainer+Gitlab+GitlabRunner搭建Tree项目
|
7月前
|
弹性计算 运维 负载均衡
【Terraform实现云服务基础设施既代码(IaC)案例实战-2】:通过Terraform实施基础IaC
前言树苗科技公司业务上云2年有余,随着技术的不断发展。运维团队支持业务变更配置、开资源、删资源等过程加班到深夜一两点已是家常便饭。为了进一步提升工作效率,运维总监张三决定对当前业务交付路径进行统一梳理,借助IaC的理念和Terraform自动化工具逐步实施运维生产自动化,改善组内成员频繁加班的现状。...
271 0
【Terraform实现云服务基础设施既代码(IaC)案例实战-2】:通过Terraform实施基础IaC
|
存储 运维 安全
App Deploy as Code! SAE & Terraform 实现 IaC 式部署应用
SAE 和 Terraform 的结合,能够帮助企业像处理代码一样管理自己的应用,对资源的操作都变得可审计,可追溯,可回滚,同时也降低人为操作带来的风险。
App Deploy as Code! SAE & Terraform 实现 IaC 式部署应用

推荐镜像

更多