Terraform 系列-Terraform 简介

这篇具有很好参考价值的文章主要介绍了Terraform 系列-Terraform 简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章

👉 Terraform 系列文章

前言

最近在使用 Terraform 来置备 OCI 的 Always Free Tier, 发现它非常好用。总结学习下:Terraform 的基础知识。

什么是 Terraform?

Terraform 是一种基础架构即代码(IaC)工具,可让您安全高效地构建、更改云和本地资源并对其进行版本控制

HashiCorp Terraform 是一种基础架构即代码工具,可让您在人类可读的配置文件中定义云和本地资源,您可以对这些文件进行版本控制、重用和共享。然后,您可以使用一致的工作流程在其整个生命周期内配置和管理所有基础设施。Terraform 可以管理计算、存储和网络资源等低级组件,以及 DNS 条目和 SaaS 功能等高级组件。

Terraform 的主要特点

  • 基础设施即代码(IaC):基础设施使用高级配置语法进行描述。这允许对数据中心的蓝图进行版本控制,并像对待任何其他代码一样对待它。此外,基础设施可以共享和重复使用。

  • 执行计划(Plan):Terraform 有一个“计划”步骤,它可以生成执行计划。执行计划显示了 Terraform 在您调用 apply 时将执行的操作。这可以让您在 Terraform 操作基础设施时避免任何意外。

  • 资源图(Resource Map):Terraform 构建所有资源的图,并并行化任何非依赖资源的创建和修改。正因为如此,Terraform 尽可能高效地构建基础设施,并且运营商可以深入了解其基础设施中的依赖关系。

  • 变更自动化:复杂的变更集可以以最少的人工交互应用于您的基础架构。有了前面提到的执行计划和资源图,您就可以确切地知道 Terraform 将更改什么以及更改的顺序,从而避免许多可能的人为错误。

Terraform 的功能

这里简单罗列一下,由于笔者水平所限,可能有遗漏,请帮忙补充:

  • IaC
  • 工作空间(WorkSpace): Workspace 允许相同的配置代码有一个以上的状态 (State) 文件。这意味着部署到多个环境时,不需要将配置代码复制粘贴到不同的文件夹。每个工作空间可以使用自己的变量定义文件来参数化环境。
  • 变量(Variable): 即用户提供的值,它们能够参数化 Terraform 模块 (modules), 而不必修改源代码。
  • 运行(Run)-计划和应用(Plan & Apply)
  • 资源图
  • 供应商(Provider): Provider 是上游 API 的逻辑抽象。他们负责了解 API 交互和公开资源。如:AWS/Azure/GCP/Kubernetes/Aliyun/OCI Providers
  • 模块(Modules): 模块是 Terraform 配置的独立包,允许把相关资源组合到一起,创建出可复用的组件。要使用模块,你并不需要知道模块的工作方式,只需要知道如何设置输入和输出即可。对于提升软件抽象度和代码复用,模块是很有用的工具。类似于积木块或 Python 的 library.
  • 注册表(Registry): 发现为所有 Terraform 资源类型提供支持的 Terraform 提供程序,或查找用于快速部署通用基础结构配置的模块。类似于 Docker Registry 或 Python PypI.
  • 声明式编程: 表达计算逻辑(做什么), 但不描述控制流(怎么做). 其关注的是结果,而不是过程。
  • 云无关: 能够使用一组相同的工具和工作流,无缝运行在任意云平台上。Terraform 是云无关的,使用它能把基础设施部署到 AWS 与部署到 GCP、Azure 甚至私有云一样简单。不会被特定云供应商(如 AWS CloudFormation)所绑定,也不需要在每次改变云供应商时学习一种全新的技术。
  • 表达能力强且高度可扩展:通过使用条件语句、for 表达式、指令、模版文件、动态块、变量和许多内置函数,我们可以轻松地编写代码来实现自己的目的。Terraform 提供以下特性:
    • 115+ 个函数
    • 支持条件语句
    • 支持 for 循环
    • 支持多种类型:字符串、数字、列表、映射、布尔值、对象、复杂类型
    • 支持插件
    • 模块化
    • 等待条件
    • 模板(Template)
    • 动态块
  • 协同工作:利用 Terraform 的后端(Backend)、注册表、工作空间以及代码仓库可以做到与朋友、同事协同工作。
  • 生命周期管理:Create、Read、Update、Delete(or Destory)以及可以自定义生命周期的 create_before_destory prevent_destory ignore_changes 标志。
  • 测试: 可以通过 go test 配合 fixture 测试 Terraform 代码。
  • HCL: 人机友好的结构化配置语言,用于命令行工具。尽管旨在普遍使用,但它主要针对 devops 工具、服务器等。HCL 是专门为构建结构化配置格式而设计的语法和 API。试图在通用序列化格式(如 JSON)和围绕完整编程语言(如 Ruby)构建的配置格式之间取得折衷。
  • 安全和密钥管理: 通过和 HashiCorp(Terraform 母公司) Vault 的无缝集成实现对安全和密钥的管理。

Terraform 和竞品的比较

基于以上 Terraform 的主要功能和特点,我们将 Terraform 和 它的竞品 做一个初步比较:

📝免责声明

以下仅为笔者个人观点,由于眼界和知识所限,并不一定准确。仅供参考。

  • 相比 Ansible/Chef/Puppet/SaltStack 等配置管理工具. 配置管理工具主要用途是在已经存在的机器上安装和管理软件。Terraform 不是配置管理工具,它的主要作用是置备资源。Terraform 专注于数据中心和相关服务的更高级别的抽象。另外,Ansible/Chef/Puppet/SaltStack 等主要是命令式的,Terraform 是声明式的。但是它们都有丰富的扩展和生态。
  • 相比 AWS CloudFormation/GCP Deployment Manager/Azure Resource Manager. Terraform 更好,它云无关,并且支持多个提供商和服务的组合和组合。另外 Terraform 还通过使用执行计划的概念将计划阶段与执行阶段分开,以确保它完全符合预期。
  • 相比 Pulumi. Pulumi 和 Terraform 最为类似,唯一的区别在于 Pulumi 不是声明式的。孰弱孰强各有优势。
  • 相比 CrossPlane, Terraform 在面向用户/开发人员侧的抽象能力比 CrossPlane 弱一些,另外在保障配置不漂移这方面也相比 CrossPlane 弱一些。但是 Terraform 的生态(供应商和模块)要比 CrossPlane 强的多得多。

总结

本文讨论了什么是 Terraform, 它的优势、特点、使用场景, 相对于其他 IaC 工具有哪些优缺点。

本篇基本上都是一些概念性的东西,还没有进入实战环节,敬请期待后续更新。

EOF文章来源地址https://www.toymoban.com/news/detail-411731.html

到了这里,关于Terraform 系列-Terraform 简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Terraform 系列-使用 for-each 对本地 json 进行迭代

    Terraform 系列文章 Grafana 系列文章 前文 Grafana 系列 - Grafana Terraform Provider 基础 介绍了使用 Grafana Terraform Provider 创建 Datasource. 现在有这么一个现实需求: 有大量的同类型 (type) 的 datasource 需要批量添加,而且这些 datasource 的基本信息是以 json 的格式已经存在。 需要对 json 进行

    2024年02月10日
    浏览(30)
  • 【Terraform学习】Terraform配置变量(Terraform配置语言学习)

    创建 EC2 IAM 角色 导航到 IAM 在 左侧菜单 中,单击 角色  。单击 创建角色 该按钮以 创建新的 IAM 角色 。 在创建角色部分,为角色选择 可信实体类型 : AWS 服务 使用案例:EC2     单击 下一步 添加权限:现在,您可以看到 策略列表 。按名称 AdministratorAccess 搜索权限并添加。

    2024年02月15日
    浏览(32)
  • 【Terraform学习】Terraform_count使用(Terraform配置语言学习)

    一、简单使用:对于一些需要起多个重复的实例有用 当我们在Terraform 模板里面创建资源的时候,如果有多个重复的资源,我们可以通过count来指定个数,他会自动执行一个类似for loop的循环,然后我们可以通过count.index 来指向他每次循环的索引值。从编程的思维来理解,就是

    2024年02月12日
    浏览(29)
  • 【Terraform学习】使用 Terraform创建DynamoDB添加项目(Terraform-AWS最佳实战学习)

     本站以分享各种运维经验和运维所需要的技能为主 《python》:python零基础入门学习 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8》暂未更新 《docker学习》暂未更新 《ceph学习》ceph日常问题解决分享 《日志收集》ELK+各种中间件 《运

    2024年02月10日
    浏览(30)
  • 【Terraform学习】使用 Terraform 托管 S3 静态网站(Terraform-AWS最佳实战学习)

    前提条件 安装 Terraform : 地址 下载仓库代码模版 本实验代码 位于  task_s3  文件夹中 。 变量文件  variables.tf    在上面的代码中,您将 声明 , aws_access_key , aws_secret_key 和 区域变量 。 声明站点变量 ,站点的 根域和子域 。在上面的代码中 添加网站的 domain值 和 submain值

    2024年02月11日
    浏览(35)
  • 【Terraform学习】使用 Terraform 创建Amazon VPC(Terraform-AWS最佳实战学习)

    前提条件 安装 Terraform : 地址 下载仓库代码模版 本实验代码 位于  task_vpc  文件夹中 。 变量文件  variables.tf   在上面的代码中,您将 声明 , aws_access_key , aws_secret_key 和  区域变量 。 terraform.tfvar    在上面的代码中,您将 定义变量的值 。 main.tf     在上面的代码中,

    2024年02月11日
    浏览(35)
  • 【Terraform学习】使用 Terraform创建 S3 存储桶事件(Terraform-AWS最佳实战学习)

      本站以分享各种运维经验和运维所需要的技能为主 《python》:python零基础入门学习 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8》暂未更新 《docker学习》暂未更新 《ceph学习》ceph日常问题解决分享 《日志收集》ELK+各种中间件 《运

    2024年02月10日
    浏览(30)
  • 【Terraform学习】使用 Terraform 创建应用程序负载均衡器(Terraform-AWS最佳实战学习)

    前提条件 安装 Terraform : 地址 下载仓库代码模版 本实验代码 位于  task_elb  文件夹中 。 变量文件  variables.tf        在上面的代码中,您将 声明 , aws_access_key , aws_secret_key 和  区域变量 。 terraform.tfvars       在上面的代码中,您将 定义变量的值 。 main.tf        在

    2024年02月10日
    浏览(34)
  • 【Terraform学习】使用 Terraform创建Lambda函数启动EC2(Terraform-AWS最佳实战学习)

     本站以分享各种运维经验和运维所需要的技能为主 《python》:python零基础入门学习 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8》暂未更新 《docker学习》暂未更新 《ceph学习》ceph日常问题解决分享 《日志收集》ELK+各种中间件 《运

    2024年02月11日
    浏览(38)
  • 【Terraform学习】保护敏感变量(Terraform配置语言学习)

    创建 EC2 IAM 角色 导航到 IAM 在 左侧菜单 中,单击 角色  。单击 创建角色 该按钮以 创建新的 IAM 角色 。 在创建角色部分,为角色选择 可信实体类型 : AWS 服务 使用案例:EC2     单击 下一步 添加权限:现在,您可以看到 策略列表 。按名称 AdministratorAccess 搜索权限并添加。

    2024年02月13日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包