Terraform是什么?

最近我有机会使用terraform,所以想把笔记留下来。

目标受众

    • terraformに興味はあるが実際に触ったことがない人

 

    • IaCを触ってみたい人

 

    大雑把にterraformの概念だけ知っておきたい人

Terraform是什么?

terraform是一种被称为IaC工具的工具,它能够将基础架构配置作为源代码进行管理。
需要注意的是,它只能管理基础架构配置,无法进行服务器内部的用户设置和库安装等操作。
如果想要管理服务器内部,可以考虑使用镜像部署或者结合ansible等工具来进行管理。

terraform执行顺序

在编写文件之前,我们先简要地介绍一下terraform的实际运行顺序。假设你已经安装了terraform的命令行界面(CLI)。

    • terraformファイルを書く

 

    • terraform init で初期化する

対象cloudへの認証処理が走る
依存ファイルを取得してくる
リソースなどメタ情報が詰まったファイル(state ファイル)が生成される

実行結果を確認しながらファイルを修正
実際に実行してインフラなどを立ち上げる

尽管在明确的安装命令方面有所差异,但就直觉而言,它与npm或go的获取模块类似。

Terraform的特点是什么?

Terraform使用独特的扩展名tf文件和编程语言来描述处理过程,而不是使用通用的文件格式,例如JSON。以下是官方提供的示例。

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 = "ExampleAppServerInstance"
  }
}

原生中文翻译:云原生基础设施管理工具

在natively in chinese进行的切词和生成过程策略的帮助下,以下是原文的汉语翻译:
第一个名为terraform的块是用来配置terraform自身的。你可以指定依赖库的版本,以及指定存放元数据的state文件的位置。

提供者

提供者是指定与AWS等云服务通信所需的信息。这些信息包括区域和认证信息等。本次我们通过指定AWS的配置文件来读取认证信息,并明确指定了区域。

如果您想查看其他提供商,请参考以下链接:
https://registry.terraform.io/browse/providers

资源

资源是指实际构建的基础设施,如数据库和服务器等。资源后面的字符串分别指定资源名称和变量名称。通过指定资源名称,可以在resource代码块中编写AWS的lamda或dynamo等基础设施的配置内容。

当我们想要引用变量名来查看资源所指定的基础设施内容时,可以使用它。就像下面这样的感觉。

resource "aws_instance" "app_server" {
  ami           = "ami-830c94e3"
  instance_type = "t2.micro"
  name ="test"


  tags = {
    Name = "ExampleAppServerInstance"
  }
}

resource "aws_db" "db" {
    # app_serverの情報を参照
    name = app_server.name
}

请查看以下链接中列出的实际AWS资源,并进行确认。
https://registry.terraform.io/providers/hashicorp/aws/latest/docs

初始化、确认和执行

将其设定为初始状态

完成文件后,我们执行terraform命令中的”terraform init”。这将进行初始化和认证操作。一旦成功访问指定平台的供应商并获取依赖文件,初始化就完成了。如果成功,将在存放文件的目录中生成以下文件:
.terraform
.terraform.lock.hcl

确定

当执行terraform plan时,它会检查以下内容。

    • 使用しているアカウントの権限のチェック

AWSでEC2インスタンを立ち上げる権限を持っているかなど

文法のチェック
最終的に生成されるリソースのチェック

DBのアカウントなど

执行

当执行terraform apply时,它会实际生成资源。
如果执行成功,我们可以在平台控制台上检查指定的资源是否已生成。

最后

如果能以代码方式进行管理,基础设施就可以成为一个秘密的调料,这样会让人觉得很高兴。祝您拥有愉快的 Terraform 生活。

请提供更多的上下文,以便我准确地为您翻译。

bannerAds