Terraform简介 - 基础知识和关键组件介绍

558 阅读4分钟

嗨,读者朋友们,在这篇博客中,我们将探讨Terraform的内容和原因。我们将讨论它的基础知识和关键组件。

在直接进入Terraform之前,我们需要了解_基础设施_这个术语。

_基础设施_在通用语言中被认为是处理多种不同类型的输入后得到的最终输出。

比如说,一辆汽车的基础设施主要包括车轮、发动机、转向器、离合器、刹车、加速器等。

类似地,对于创建一个云计算基础设施,也有一些主要的构建模块。

什么是Terraform?

  • _Terraform_是一个基础设施即代码(IaC)的工具,它允许你安全有效地建立、改变和版本基础设施。
  • 这包括低级别的组件,如_计算实例、存储和网络_,以及高级别的组件,如_DNS_条目、_SaaS_功能,等等。
  • _Terraform_可以管理现有的服务提供商和定制的内部解决方案。
  • 对于在terraform中编写配置,我们使用HCL。

Hashicorp配置语言(HCL

  • HCL是一个工具包,用于创建结构化的配置语言,对人和机器都很友好,可用于命令行工具。
  • 虽然它的目的是普遍有用的,但它主要是针对devops工具和服务器等。

一个简单的HCL代码看起来是这样的。

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.27"
    }
  }
  required_version = ">= 0.14.9"
}
provider "aws" {
  profile = "default"
  region  = "us-west-2"
}
resource "aws_instance" "app_server" {
  ami           = "ami-830c94e3"
  instance_type = "t2.micro"

  tags = {
    Name = "MyFirstTerraformConfiguration"
  }
}

云基础设施的关键组成部分

计算

  • 计算服务是为了在AWS计算平台上运行不同的工作负载。
  • 最重要的是,它有助于降低基础设施成本,并在世界最可靠、最安全和最有能力的云上加速创新。

在我们即将发表的博客中,我们将主要使用EC2服务。

EC2
  • 亚马逊弹性计算云(Amazon EC2)是一项网络服务,在云中提供安全、可调整大小的计算能力。它的目的是使网络规模的计算对开发者来说更容易。
resource "aws_instance" "example" {
  ami           = var.AMIS[var.AWS_REGION]
  instance_type = "t2.micro"
}

网络和内容交付

网络和内容交付的用例

  • _网络_基础 :它帮助我们快速建立、保护和监控我们的网络。
  • 应用网络: 为传统和现代应用提供更好的安全性、可用性、性能和简化的监控。
  • 边缘网络: 以个位数毫秒的延迟来传递你的数据。
  • 混合连接:在您的企业内部网络和AWS网络之间建立快速、安全和可靠的连接。

在我们即将发表的博客中,我们主要使用VPC服务。

VPC

VPC 是_虚拟私有云的意思,_使用VPC,我们为我们的AWS资源定义和配置一个逻辑上隔离的网络。

resource "aws_vpc" "main" {
  cidr_block           = "10.0.0.0/16"
  instance_tenancy     = "default"
  enable_dns_support   = "true"
  enable_dns_hostnames = "true"
  enable_classiclink   = "false"
  tags = {
    Name = "main"
  }
}

存储

  • 存储是一个完整的服务范围,为我们存储、访问、管理和分析我们的数据,以降低成本,提高敏捷性,并加速创新。
  • 通过使用云存储,我们可以减少存储成本。

在接下来的博客中,我们将主要使用S3services。

S3
  • 亚马逊简单存储服务(Amazon S3)是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。
resource "aws_s3_bucket" "b" {
  bucket = "nitin1455"
}

安全性、身份和合规性

  • 安全性、身份和合规性是为了保证我们在云中的工作负载和应用程序的安全。

  • 它的一些用例是:

    • 数据保护

    • 身份和访问管理

    • 网络和应用保护

    • 威胁检测和持续监控

    • 合规性和数据隐私

在我们即将发表的博客中,我们主要使用IAM服务。

IAM
  • IAM是为了安全地管理对服务和资源的访问。
  • 使用IAM,我们可以创建和管理AWS用户和组,并使用权限来允许和拒绝他们访问AWS资源。
resource "aws_iam_group" "administrators" {
  name = "administrators"
}

resource "aws_iam_policy_attachment" "administrators-attach" {
  name       = "administrators-attach"
  groups     = [aws_iam_group.administrators.name]
  policy_arn = "arn:aws:iam::aws:policy/AdministratorAccess"
}

# user
resource "aws_iam_user" "admin1" {
  name = "admin1"
}

谢谢你坚持到最后。如果你喜欢这篇博客,请通过竖起大拇指和分享这篇博客来表达你的谢意,如果你觉得有必要,请给我提出改进建议。