如何使用 Terraform 构建基于 SmartX 超融合的自服务管理平台

news2025/1/4 20:06:44

越来越多的运维和开发人员发现,无法实现自动管理的基础设施已成为业务敏捷上线的阻碍。

对于基础架构运维人员来说,日常维护时,创建、回收虚拟机这一类工作的重复性很高。在创建业务虚拟机时,运维人员需要考虑资源放置最佳实践,如哪台服务器的 CPU 和内存资源比较多,以便将其优先放置。在为业务系统置备虚拟机时,也需要尽可能保证在不同的云平台上进行创建,避免因云平台故障而导致业务异常。

对于应用系统开发人员来说,现在已经在使用 DevOps 进行业务系统的敏捷开发和测试。针对一个版本的测试,在 CI/CD 流程中可以自动根据源码打包应用并进行版本的测试。但是虚拟机创建无法实现自动化——开发人员若想使用虚拟机,需要等待运维人员先成功创建虚拟机,这将阻塞 CI 的工作流。如果想要实现虚拟机生命周期的自动化管理,需要根据私有云厂商的 API 来整理自动化创建虚拟机的脚本。但是如果企业拥有多个云平台,就需要参考各个厂商的 API 来开发基础设施资源管理的功能,这就会比较繁琐。

所以,是否能将基础设施也交给代码来进行自动化管理?这样既能减轻运维人员的工作压力,也使得开发人员可以真正按需置备基础设施的资源。

这里读者可能会有一个疑问:难道一个商业的云管系统不能满足这些需求吗?其实在云平台管理上,几乎每个用户的需求都不完全一致。比如,一个用户可能希望云管平台能够和自己的 CMDB 结合,进行资源的监控,而另外一个用户则可能希望云管平台能够和自己的 OA 系统结合,进行资源的审批。一些用户还可能希望能自动将业务系统同时部署在 VMware 和 SmartX 集群上,在基础架构层做到高可用。但这些其实对于云管平台来说都有些难以实现。而且这里还有一个很关键的问题:云管平台系统是需要收费的,这无疑将增加金钱成本。

为了帮助更多企业以低成本、高效率实现“基础设施即代码”,这篇文章将为大家介绍一款强大的工具——Terraform,并通过金融机构实践说明如何利用 Terraform 实现 SmartX 超融合基础设施的自动化管理

Terraform 的工作流及优势

Terraform 是 HashiCorp 推出的的基础架构自动化编排工具,可以通过配置文件定义基础设施资源,根据配置文件来进行资源的创建、更改和回收,从而帮助用户实现“基础设施即代码”。用户可以使用相同的工作流程,配置并管理所有的基础架构,并且还可以对资源进行版本的控制。Terraform 不仅支持 AWS、GCP、阿里云等公有云厂商,还支持 VMware、路坦力、SmartX 等私有云厂商,同时还可以进行 Kubernetes、Docker 等基础设施的置备,涵盖了公有云、私有云、数据库、安全、日志、监控等基础设施在内的诸多领域。

Terraform 不仅功能强大,能够对较多的基础设施进行管理,它的使用也非常简单,主要分为三个步骤:

  1. 编写:通过一种可读性较强的语言来编写配置文件,定义基础设施所需要的资源。
  2. 计划:结合基础设施当前的状态和预定义的配置文件,初始化配置,并使用 Terraform Plan 这个命令来预览基础设施资源的规划。
  3. 应用:应用配置文件,完成资源的创建、更新和销毁。

 图片来源:“How does Terraform work?” by HashiCorp

在定义基础设施的时候,用户可以同时对多个厂商的资源进行置备,如同时定义 AWS 和阿里云的弹性计算,使得基础设施能够同时在不同的云厂商上置备资源,以满足业务对于基础设施冗余的要求。而且 Terraform 的配置是声明式的,因此对其他资源和变量的引用不会依赖于他们在配置文件中定义的顺序。

举个例子,如果用户要为运行在阿里云上的业务置备一组资源,需要创建 VPC、安全组、虚拟机、镜像、对象存储等等一系列的资源。这些资源在配置文件中的先后顺序并不重要,Terraform 会自动遵从资源的依赖关系,来确保资源可以成功地进行创建。

至此,我们总结一下 Terraform 的优势:

  • 本质为基础设施置备工具:与 Ansible 或 Saltstack 这类虚拟机配置工具不同,Terraform 主要帮助用户对基础设施进行置备,如对虚拟机进行全生命周期的管理。而 Ansible 更擅长虚拟机的配置,如批量升级一批 Linux 的 Open SSH 的版本。这两类工具并不冲突,用户也可以结合使用。
  • 用于管理不可变基础设施:大多数“基础设施即代码”的工具可以创建可发生变动的基础设施,来适应一些中间件的升级或增加磁盘这一类的变更。而可变基础设施的缺点在于配置会发生偏离。随着多次变更的叠加,实际供应的基础设施可能偏离原始配置,从而导致在出现问题时很难诊断、纠正配置的错误之处,以及排查性能问题。Terraform 提供的是不可变基础设施架构,随着环境每一次变化,当前配置都将替换为负责本次变更的新配置,并重新供应新的基础设施。而且,先前的配置也可以保留为版本,以便后续需要的时候进行回滚。
  • 简单易用:Terraform 不仅使用起来简单,同时使用声明式的语言,而且语法的可读性也非常高。
  • “云无关”特性:Terraform 与云厂商是解耦的,可以实现使用相同的工作流来管理不同云厂商的基础设施。在前期构建好一套工作流,后期引入其他云厂商的产品时,仍然可以使用这套工作流,无需学习多个云厂商技术,快速地维护新厂商的基础设施产品。
  • 免费且开源:Terraform 的开源社区非常活跃,现在 2400 多个 Provider 中,有 2200 多个都是由社区来进行共建的。同时,社区中的贡献者为了这个平台构建了大量的插件,整个社区的活跃也使得产品迅速发展,可以不断地引入新的功能、改进功能。

基于 Terraform 实现 SmartX 超融合“基础设施即代码”

正如前文所述,Terraform 也支持 SmartX 超融合的自动管理,这需要配合 SmartX 原生管理平台 CloudTower 来实现。

 以 SmartX 超融合基础设施为例,用户首先使用代码在配置文件中声明资源。Terraform 在运行时会读取所有具备 .tf 扩展名的配置文件,并且将它们连接在一起。随后,Terraform 会根据配置文件调用 CloudTower 的 Provider,在 SmartX 超融合基础设施上去创建和管理对应的资源。其中,Provider 是 Terraform 的插件,不同的云厂商会基于自身云平台的 API 提供对应的 Provider,而 Terraform 通过使用不同云厂商提供的 Provider,从而实现在不同的基础设施上进行资源的创建和管理。

这一方案具有以下优点:

  • 通用配置:适用于多云方案,在现有工作流中可快速编排 CloudTower 资源。仅需替换 Provider 就可管理其他平台。
  • 降低自动化难度:运维人员无需了解 CloudTower API 细节,降低了自动化运维的部署难度。业务人员仅需关心对资源的配置,无需关心资源的创建步骤和过程。
  • 开箱即用:CloudTower 提供了原生的 Modules 和 Examples,覆盖虚拟机管理、虚拟磁盘管理、快照管理、内容库管理等日常使用场景。

我们通过以下 demo 具体演示如何使用 Terraform CLI 批量管理 CloudTower 平台虚拟机,以及如何在 Jenkins 中使用 Terraform 快速置备虚拟机。

金融机构基于 Terraform 的“基础设施即代码”探索

在 Jenkins 的 demo 中我们可以看到,用户只需在 Jenkins 中填写资源的参数,Jenkins 就可以通过后台预先整理的脚本,将这些参数写入到配置文件中。Terraform 则会根据配置文件自动生成虚拟机,并且可以进行企业微信的通知。

顺着这个思路,用户在此基础上追加一些功能,就可以打造一个企业级的自服务管理平台。比如,用户可以加入 CMDB:在生成配置文件之前,先在 CMDB 中查询哪些服务器的资源比较充足,从而优先利用,并将一个应用相同功能的不同虚拟机分别放置在不同的集群上。用户也可以使用 Ansible 提前整理虚拟机应用配置的剧本(Playbook)。在虚拟机创建成功之后,用户还可以在虚拟机上安装 MySQL、Redis 或者 Kafka 等应用。

除此之外,用户还可以加入申请、审批和交付流程。应用人员只需登录到前端页面就可申请资源(预申请虚拟机数量、CPU、内存和存储需求等)、选择是否需要部署应用,和提交资源的申请。之后就是一系列自动流程:申请会进入公司的 OA 流程,开始审批;审批通过后,自动开始置备虚拟机,并且按需部署应用;资源创建成功后,自动反馈虚拟机和应用的关键信息,方便应用人员直接进行使用。这就实现了企业级的自服务管理平台。

 

金融行业用户实践:基于 Terraform + CloudTower 实现自服务

某金融行业用户基于上述架构,使用 Terraform + CloudTower 自主开发了符合公司需求的基础架构运维平台,并结合 CMDB 实现了资源的使用、统计和规划。

整个运维平台的后端使用了 Terraform 管理虚拟机的生命周期、使用 Ansible 管理虚拟机的配置、使用 Python 编写企业应用的部署脚本、使用 CMDB 存储资源生命周期的配置记录,并为虚拟机置备的集群、存储、服务器提供了最佳的放置建议。同时,用户按照公司业务模式特点,增加了自身所需要的功能,包括 IP 地址、网络、用户和权限的管理。

通过这一运维平台,用户实现了基础架构云平台上虚拟机和企业级应用的自动化交付。整个交付流程实现了标准化、自动化、流程化以及数据化,极大地缩短了交付周期,在减轻运维人员工作量的同时方便了后续资源的审计和追溯

 

想要尝试搭建自己的企业自服务管理平台?您可通过以下链接,在 Terraform 官方网站获取 CloudTower Provider 插件,轻松实现基础设施自动化:https://registry.terraform.io/Providers/smartxworks/cloudtower

参考资料:

1. How does Terraform work?

https://developer.hashicorp.com/terraform/intro#how-does-terraform-work

点击下载超融合套件社区版,免费体验 CloudTower 管理平台,即刻开启基础架构自动化之旅。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/118677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于神经网络和遗传算法的飞鹦鹉机器学习

这是一个HTML5项目的源代码,该项目使用神经网络和遗传算法在Flappy Bird视频游戏中实现机器学习算法。该程序教一只小鸟如何以最佳方式拍打,以便尽可能长时间地安全地飞过障碍物。 所有代码都是用HTML5编写的,使用Phaser框架和Synaptic Neu…

ssh 命令

勿以恶小而为之,勿以善小而不为---- 刘备 简单说,SSH是一种网络协议,用于计算机之间的加密登录。 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的&#xff0c…

SpringBoot 自动装配原理,一文掌握!|原创

本文详细讲解了 SpringBoot 自动装配原理,可以直接拉到最后看总结。由于 Spring 源码比较复杂,是需要一些基础的。如果有不懂的地方,欢迎提问!点击上方“后端开发技术”,选择“设为星标” ,优质资源及时送达…

【C语言】函数详解

🔥🔥 欢迎来到小林的博客!!       🛰️博客主页:✈️小林爱敲代码       🛰️专栏:✈️C语言快速入门       🛰️欢迎关注:👍点…

【Spring【IOC】】——17、@Resource注解和@Inject注解?

📫作者简介:zhz小白 公众号:小白的Java进阶之路 专业技能: 1、Java基础,并精通多线程的开发,熟悉JVM原理 2、熟悉Java基础,并精通多线程的开发,熟悉JVM原理,具备⼀定的线…

【算法题解】6.合并两个有序数组

文章目录题目解法一:双指针解题思路图解代码实现复杂度分析解法二:逆向双指针解题思路图解代码实现复杂度分析题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素…

Plaxis软件:Python命令流自动建模与应用

有限单元法在岩土工程问题中应用非常广泛,很多商业软件如Plaxis/Abaqus/Comsol等都采用有限单元解法。在使用各大软件进行数值模拟建模的过程中,您是否发现GUI界面中重复性的点击输入工作太繁琐?从而拖慢了设计或方案必选进程?针对…

day30【代码随想录】回溯之分割回文串、复原IP地址、子集

文章目录前言一、分割回文串(力扣131)二、复原IP地址(力扣93)三、子集(力扣78)总结前言 1、分割回文串 2、复原IP地址 3、子集 一、分割回文串(力扣131) 给你一个字符串 s&#xf…

Win10如何显示文件后缀名?显示后缀名的简单方法

现在大多数用户使用的电脑都是Win10系统,有时我们重装电脑系统,会发现电脑出现一些问题,比如文件后缀名不显示出来。如何显示文件后缀名?方法很简单,跟着下面的详细操作步骤走,轻轻松松Get回消失的文件后缀…

Http和Https和SSL工作原理

相关概念 Http:超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上,是Web协议族中非常重要的一个协议。协议版本包含Http1.0、Http1.1 和Http2.0. Https&…

【3D游戏基础】蒙皮骨骼动画与骨架

效果目标!画出蒙皮动画的骨架。视频https://www.bilibili.com/video/BV1pM411m7YwPPThttps://zfxdvouj61.feishu.cn/file/boxcnwgESO6zdQetO7oNhKboNsd以下为PPT文字稿,建议还是看视频讲讲自己对蒙皮骨骼动画的理解,并在 Cocos Creator 3.6 中…

全志Tina Linux MPP (多媒体框架)开发指南支持百问网T113 D1-H哪吒DongshanPI-D1s V853-Pro等开发板

1 简述 整理 MPP sample 使用说明文档的目的是:使 MPP sample 更好用。 2 简介 MPP sample 一般存放在 MPP Middleware 的 sample 目录下。此外,MPP Framework 的 demo 目录下也有一些 sample。 本文档主要介绍 MPP Middleware 各 sample 的基本使用方…

【再学Tensorflow2】TensorFlow2的建模流程:疫情发展趋势分析

TensorFlow2的建模流程:疫情发展趋势分析时间序列简介基本概念平稳性白噪声随机游走(Random Walk)识别一个时间序列Augmented Dickey-Fuller Test(ADF)Kwiatkowski-Phillips-Schmidt-Shin Test(KPSS)时间序列模型预测准确度的衡量衡量预测准确…

舆情监测系统适用哪些行业,如何选择舆情监测系统?

当前,去网上搜索第三方舆情监测工具可以看到很多家不同公司的产品,比如TOOM舆情监测系统,那我们该如何选择舆情监测系统?舆情监测系统到底适用什么行业,带着这些疑问,接下来我们简单了解一下。 ​一、舆情监测系统适…

6.前端笔记-JS-流程控制

1、流程控制 通过控制代码的执行顺序实现我们要完成的功能。控制代码按照什么结构顺序执行 有三种结构:顺序结构、分支结构、循环结构 1.1 顺序流程控制 最简单、最基本的流程控制。程序按照代码的先后顺序,依次执行 1.2 分支流程控制 从上到下执行…

ArcGIS基础实验操作100例--实验8绘制中点连线

本实验专栏来自于汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据: 请访问实验1(传送门) 基础编辑篇--实验8 绘制中点连线 目录 一、实验背景 二、实验数据 三、实验步骤 (1&…

【操作系统】CPU平均负载和使用率

1.CPU的平均负载 (1)什么是CPU的平均负载 单位时间内系统处于【可运行状态】和【不可中断状态】的平均进程数,就是平均活跃进程数,和CPU使用率并没有直接关系 可运行状态 正在使用CPU或者正在等待CPU的进程用 ps aux命令看到的…

【OpenCV-Python】教程:9-1 级联分类器训练

OpenCV Python 级联分类器训练 【介绍】 使用增强的弱分类器级联包括两个主要阶段: 训练和检测阶段。使用基于HAAR或LBP模型的检测,在object detection tutorial中进行了描述。本文档概述了训练您自己的增强弱分类器级联所需的功能。当前的手册将走过所有不同的阶段: 收集训练…

机器学习-决策树算法原理及实现-附python代码

1.决策树-分类树 sklearn.tree.DecisionTreeClassifier官方地址: https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier 在机器学习中,决策树是最常用也是最强大的监督学…

用双因子认证2FA替换Google authenticator谷歌令牌,助力准上市公司实现等保安全审计

21世纪初,某人力资源科技公司试水HR SaaS赛道,以大客户为目标客群,持续深耕,稳扎稳打,如今已是一家专门为中大型企业提供一体化HR SaaS及人才管理产品/解决方案的头部企业。其产品覆盖了从员工招募、入职、管理到离职的…