CloudIaC 漂移检测功能详解

简介: 云霁CloudIaC 是一款开源的基于terraform 的低代码平台管理库,本篇文章主要介绍其中关于配置漂移的处理方式。

前言:

CloudIaC 是基于基础设施即代码构建的云环境自动化管理平台。 CloudIaC 将易于使用的界面与强大的治理工具相结合,让您可以快速轻松的在云中部署和管理环境。其中结合了开源工具Terraform的强大功能,是一个贯彻 IAC(基础设施即代码)的开源项目。 目前正在快速的版本迭代当中,那么随着v0.8版本的更新,CloudIaC 平台也推出了配置漂移检测这样一个非常有特色的功能,那么接下来本篇文章主要是介绍 v0.8 漂移检测功能,关于CloudIaC 项目的其他相关文章,大家感兴趣的也可以移步以下链接:

  1. 使用 CloudIaC 使 terraform 的代码部署更容易
  2. CloudIaC快速入门文档


环境搭建

  1. CloudIaC 官方文档中提供了非常多的部署方式,包括本地部署,容器部署,以及k8s部署等等,具体官方的部署方式我们可以通过上述的 CloudIaC快速入门文档 中找到具体的介绍,这里我们使用对新手比较友好,最简单的使用terraform 一键部署的方式:


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请输入自己的阿里云akexport ALICLOUD_ACCESS_KEY=LT*************bexportALICLOUD_SECRET_KEY=sT*****************WwexportALICLOUD_REGION=cn-beijing4. 进入到cloudiac-docker-deploy代码目录下运行命令terraform init
terraform apply -auto-approve
以上就当命令运行结束后就会在阿里云ecs服务器上部署一套CloudIaC出来,我们按照以上命令行输出的公网ip 直接访问80端口即可访问。
5. 部署成功后登陆CloudIac页面,提示输出账号密码,这里我们为了方便初学者使用,在配置里面写入了固定值用户名: admin@example.com
密码: EvanTest#123
以上步骤均可在 使用 CloudIaC 使 terraform 的代码部署更容易 看到,这里我们就不介绍基础的入门步骤了,当环境创建好以后,我们来看一下CloudIaC 提供的配置漂移检测功能。


配置漂移概念

   

  在服务开发的过程中,我们经常可能会听到或者遇到如下的一种情况: "我在测试环境做了一个修改,但是忘记在生产服务器上也做这样的改动"。在排查bug,或者处理线上问题时经常会出现这样的场景如上,当机器配置环境发生改变,导致程序和预期结果不符,我们可以简称为配置漂移。在工作当中,这种情景应该非常常见,现在大多数的程序员在工作开发流程可能如下图:

如图上,目前很多程序采用的是容器化部署到服务器中,保证开发/测试环境的一致性,但是在实际开发过程中,对测试环境可能会进行一些列的修改和调试,最后导致服务器配置出现漂移。那么为了保持多台服务器的配置一致性,一般有以下几种方法,一种是不允许非系统管理员对服务器进行操作,二是"凤凰服务器",定期按照基础配置去重启机器或服务。

CloudIaC 提供了第三种方式 : 基础设施即代码(IAC) 通过把基础设置和服务通过低代码(terraform hcl)配置的方式去管控,定时检测服务端配置和配置文件(terraform tf.file)异同,对发生偏移的服务进行通知或直接进行纠偏。

实现原理

  CloudIaC 偏移检测功能本质使用的是terraform 工具的terraform plan 功能,通过用户配置的定时任务表达式,去定时执行 terraform plan 命令检测服务端和配置模版是否出现了偏差,当发现出现了配置漂移的情景时候,会根据用户的配置执行自动纠偏 terraform apply 重新订正偏移的环境配置,或者保持漂移信息,等待用户进行处理。

实现原理如下图:

如图上所示,每次根据定时配置去执行偏移检测任务时候,会把任务的信息保存到环境历史记录里面,我们可以通过历史记录查看部署的应用出现了多少次偏移,以及是否进行了自动纠偏。


案例实战


 下面我们实际操作来给大家演示一下如何在CloudIaC(version >= 0.8)中去配置使用漂移检测功能。首先我们需要创建一个可用的环境,这里我们通过云模版(也可以使用自己封装的terraform module)创建了一台阿里云的Ecs服务器。


如图所示,在创建的时候,我们在 环境 >> 高级设置 >> 合规 里面通过勾选 漂移检测,并且填入定时任务表达式,这时候,我们通过CloudIaC 部署的环境就会开始漂移检测任务。

此时我们先看一下我们环境部署成功后,我们环境的详情,可以在资源里面看到具体资源创建:

同时此刻我们登陆阿里云的控制台,可以看到创建出来的ecs云服务器详情,

此刻,我们将这台ecs 的描述信息直接在控制台上进行修改:



如上,我们手动使我们的环境进行了改动,这样原服务器模版里面的配置和我们实际配置的参数已经出现了偏差,那么这种情况就属于配置漂移因为我们在CloudIaC上配置了漂移检测发现服务,定时2分钟去巡检一下服务端和本次配置文件的差异,现在我们可以在CloudIaC上看到已经检测到了漂移信息:


这时候我们点进资源详情里面,看到资源图标变黄的,就是该资源发生了漂移配置,点击图标,我们可以在右侧弹出框里面看到详细的漂移详情:

instance_name              = "yunji_iac_upadte" -> "tf_ecs_test"

通过详情可以了解到是ecs 资源名称进行了改变。如此我们便可以监控资源是否发生漂移。还可以通过配置通知邮箱来将具体的漂移信息发送到配置的邮箱里面。

漂移自动恢复


以上介绍了CloudIaC如何去检测到配置漂移,以及查看方式。那么假如我们希望服务端和配置端永远保持一下,那么我们可以勾选 自动纠正漂移 ,该模式会在CloudIaC 服务发现其部署的环境出现漂移的情况下,对出现漂移的资源进行纠正,使服务端永远和本地配置保持一致。

该模式请慎重使用,因为该模式使用需要预先勾选自动审批按钮,请合理使用该功能,避免出现预期外的情况。

此时,我们在资源部署历史里面可以看到, 当我们扫描到漂移检测时候,因为勾选了自动纠正漂移模式,CloudIaC 自动去发起了一个apply 部署任务,将漂移信息进行了纠正,此时我们在看阿里云控制台:

实例ecs的名称已经被自动变更回来。如上我们本期的关于CloudIaC 漂移检测的功能已经简单介绍完成,我们的开源项目地址: https://github.com/idcos/cloudiac 欢迎大家一起参与共建。

联系我们:
钉钉群: 34576517                      

         

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
存储 缓存 内存技术
USB容量大小对传输速度影响有多大
USB容量大小对传输速度影响有多大
USB容量大小对传输速度影响有多大
|
机器学习/深度学习 安全 算法
技术焦点篇|Cheetah猎豹及其在隐语中的实现
技术焦点篇|Cheetah猎豹及其在隐语中的实现
1588 1
|
缓存 API 区块链
ccxt中文教程
CCXT官方教程中文版由汇智网翻译整理,访问地址:http://cw.hubwiz.com/card/c/ccxt-dev-manual/。 CCXT是一个JavaScript / Python / PHP 开发库,用于数字货币的交易与电子商务,支持众多的比特币/以太币/山寨币交易市场和商户API。
10137 2
|
安全 数据处理 数据安全/隐私保护
C/S架构与B/S架构的适用场景分析
C/S架构(客户端/服务器架构)与B/S架构(浏览器/服务器架构)在适用场景上各有特点,主要取决于应用的具体需求、用户群体、系统维护成本、跨平台需求等因素。
1362 6
|
Ubuntu 安全 Shell
Ubuntu服务器安全性提升:修改SSH默认端口号
在Ubuntu服务器上,SSH(Secure Shell)是一种至关重要的远程连接工具。它提供了一种安全的方式来远程连接和管理计算机系统,通过加密通信来确保数据的保密性和完整性。SSH协议广泛用于计算机网络中,用于远程管理、文件传输和安全通信等任务。然而,SSH默认使用的端口号是22,这也是黑客们常常尝试入侵的目标之一。为了提高服务器的安全性,我们通常建议修改SSH的默认端口号,以减少未经授权的访问和潜在的风险。接下来,我们将详细介绍如何在Ubuntu上执行这一关键操作。
832 4
Ubuntu服务器安全性提升:修改SSH默认端口号
|
存储 数据采集 数据挖掘
“湖仓一体架构及其应用”写作框架,系统架构设计师
随着5G、大数据、人工智能、物联网等技术的不断成熟,各行各业的业务场景日益复杂,企业数据呈现出大规模、多样性的特点,特别是非结构化数据呈现出爆发式增长趋势。在这一背景下,企业数据管理不再局限于传统的结构化OLTP(On-Line Transaction Processing)数据交易过程,而是提出了多样化、异质性数据的实时处理要求。传统的数据湖(Data Lake)在事务一致性及实时处理方面有所欠缺,而数据仓库(Data Warehouse)也无法应对高并发、多数据类型的处理。因此,支持事务一致性、提供高并发实时处理及分析能力的湖仓一体(Lake House)架构应运而生。湖仓一体架构在成本、
544 2
|
SQL Java 关系型数据库
MyBatis-Plus 分页魅力绽放!紧跟技术热点,带你领略数据分页的高效与便捷
【8月更文挑战第29天】在 Java 开发中,数据处理至关重要,尤其在大量数据查询与展示时,分页功能尤为重要。MyBatis-Plus 作为一款强大的持久层框架,提供了便捷高效的分页解决方案。通过封装数据库分页查询语句,开发者能轻松实现分页功能。在实际应用中,只需创建 `Page` 对象并设置页码和每页条数,再通过 `QueryWrapper` 构建查询条件,调用 `selectPage` 方法即可完成分页查询。MyBatis-Plus 不仅生成分页 SQL 语句,还自动处理参数合法性检查,并支持条件查询和排序等功能,极大地提升了系统性能和稳定性。
565 0
|
Ubuntu Shell Docker
GPU_nvidia-container-toolkit安装和配置
GPU_nvidia-container-toolkit安装和配置
4309 1
|
数据采集 运维 监控
服务水平协议(SLA)监控究竟是个啥??
服务水平协议(SLA)监控究竟是个啥??
2971 1
|
存储 弹性计算 API
使用 CloudIaC 使 terraform 的代码部署更容易
CloudIaC 是一个开源基础架构自动化平台,它可以将Terraform及其他框架下的 deployment 集中到一个协作区,以方便你的整个团队使用。同时CloudIaC支持动态环境,策略合规检测,用户自助式UI 界面等功能。当您考虑使用Terraform 等低代码开发工具去实现多云资源的管控的时候,那么CloudIaC 不失为一个最佳解决方案。
1767 1
使用 CloudIaC 使 terraform 的代码部署更容易