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

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 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的部署最佳实践。

案例实战: 使用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

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
EMQ
|
10月前
|
JSON 负载均衡 物联网
使用 Terraform 在 GCP 上一键部署 EMQX MQTT Broker
本文将指导您如何设置 GCP 项目、创建服务账户、编写 Terraform 配置文件,实现在 GCP 上轻松部署 EMQX MQTT Broker。
EMQ
117 0
使用 Terraform 在 GCP 上一键部署 EMQX MQTT Broker
EMQ
|
存储 JSON 安全
使用 Terraform 在 AWS 上快速部署 MQTT 集群
本文将以 MQTT 消息服务器 EMQX 为例,采用 AWS 作为公有云平台,介绍如何使用 Terraform 快速部署一个高可用的 MQTT 集群。
EMQ
206 0
使用 Terraform 在 AWS 上快速部署 MQTT 集群
EMQ
|
存储 JSON 安全
使用 Terraform 在阿里云上快速部署 MQTT 集群
本文将以分布式物联网 MQTT 消息服务器 EMQX 为例,采用阿里云作为公有云平台,介绍如何使用 Terraform 快速部署一个高可用的 MQTT 集群。
EMQ
234 0
使用 Terraform 在阿里云上快速部署 MQTT 集群
|
运维 自然语言处理 Kubernetes
为 Serverless Devs 插上 Terraform 的翅膀,实现企业级多环境部署(下)
在上篇中,主要介绍了 Serverless Devs 多环境功能的使用,用户读完可能会些疑问,本文会就一些常见问题进行下回答。
|
存储 弹性计算 监控
为 Serverless Devs 插上 Terraform 的翅膀,实现企业级多环境部署(上)
Serverless Devs 离不开对云资源的操作,但支持新资源时需要开发相应的组件代码;​ 如果将环境模板的定义通过 Terraform IaC 来完成,在 Serverless Devs 的体系内不仅能良好地衔接,还能够极大拓宽用户领域;​ 用户可以通过编写 Terraform 文件来定义自己的基础设施,用 Serverless Devs 完成所有工作流的串联。​
|
运维 自然语言处理 Kubernetes
为 Serverless Devs 插上 Terraform 的翅膀,解耦代码和基础设施,实现企业级多环境部署(下)
在上篇《为 Serverless Devs 插上 Terraform 的翅膀,实现企业级多环境部署(上)》中,主要介绍了 Serverless Devs 多环境功能的使用,用户读完可能会些疑问,本文会就一些常见问题进行回答。
为 Serverless Devs 插上 Terraform 的翅膀,解耦代码和基础设施,实现企业级多环境部署(下)
|
存储 弹性计算 运维
Terraform一键部署ECS实例
Terraform一键部署ECS实例
872 0
Terraform一键部署ECS实例
|
数据中心 弹性计算 存储
Terraform 一分钟部署阿里云ECS集群(含视频)
“企业上云”是当下大势所趋,“提效、降成本” 是企业上云、迁云和管理云必须关注的问题。今天将从一个集群部署的场景出发,介绍阿里云如何借助生态工具Terraform持续降低企业上云、迁云和管理云的成本。
2642 0
Terraform 一分钟部署阿里云ECS集群(含视频)
|
存储 弹性计算 数据中心
Terraform 一分钟部署阿里云ECS集群(含视频)
“企业上云”是当下大势所趋,“提效、降成本” 是企业上云、迁云和管理云必须关注的问题。今天将从一个集群部署的场景出发,介绍阿里云如何借助生态工具Terraform持续降低企业上云、迁云和管理云的成本。
5385 1
|
数据中心
单库单服解决方案terraform部署实践
本例通过terraform在阿里云创建单库单服整体架构,通过这一最佳实践让读者理解terraform的模块化编程管理思路,提高云资源创建效率和自动化运维水平。
2786 0

推荐镜像

更多