我试着入门了一些Terraform

Terraform 是什么?

Terraform是一个开源服务,被称为一种IaC(基础设施即代码)工具,可以有效构建开发资源。它是一种可以根据代码定义的构建配置,在云环境如aws上自动部署所需的基础设施的工具!

※这次我们将使用AWS来继续讨论。

使用Terraform进行开发的大致流程

    1. 创建帐户(用于Terraform操作云环境)

 

    1. 通过代码定义环境

 

    部署

据说最新的云资源中,Terraform并不支持所有资源,有些资源需要手动处理,所以不能完全依赖Terraform来完成所有操作。

为了使用Terraform进行环境搭建

1. 安装AWS CLI

请参考以下网址安装CLI!
https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html

$ aws --version

如果您填入此处并且显示版本,则表示安装已完成!

创建一个IAM用户

为了使用Terraform,创建IAM用户。
由于Terraform需要执行创建、更改、删除等操作,因此需要附加适当的策略。
由于这次只是为了尝试,我们将其配置为可以对所有资源进行完全访问。

【步骤】

    1. 登录到AWS管理控制台

 

    1. 在IAM > 用户中创建用户

 

    1. 通过”直接附加策略”,此次添加了”AdministratorAccess”策略。

 

    1. 在IAM > 用户 > (创建的用户)> 安全凭证 > 创建访问密钥 中选择。

 

    将获取到的访问密钥ID和秘密访问密钥保存。

* 如果这些信息外泄,由于拥有这些用户信息,任何人都可以进行任意操作,故需谨慎处理。我认为最好采取一些防范措施,比如引入 git-secrets!

好的,现在用户已成功创建,接下来我们将使用“aws configure”命令设置认证信息。这是我输入的内容:

$ aws configure --profile terraform_test
AWS Access Key ID: (先程取得した、アクセスキーID)
AWS Secret Access Key: (先程取得した、シークレットアクセスキー)
Default region name: ap-northeast-1
Default output format: json

您可以使用以下命令来确认是否已注册验证信息。

$ cat ~/.aws/credentials

3. 安装Terraform

我們將安裝一個稱為tfenv的工具,它可以幫助我們管理Terraform的版本。然後使用tfenv來進行Terraform的安裝。

$ brew install tfenv

通过以下命令确认已安装可以使用的tfenv版本。

$ tfenv list-remote

我知道可能会有很多选项显示出来,但这次我们决定使用1.4.6版本。

$ tfenv install 1.4.6

$ tfenv use 1.4.6

$ terraform --version
Terraform v1.4.6
on darwin_arm64

我证实使用Terraform是可行的!

在VSCode中安装Terraform的扩展功能。

我认为安装HashiCorp Terraform非常方便,它可以提供代码自动补全等功能!

尝试使用一点点Terraform。

目标:尝试将 EC2 实例部署并启动在默认的 VPC 和子网中。

创建一个文件夹。

$ mkdir terraform_test

我会逐步创建文件。

$ touch main.tf

尝试将EC2实例的启动步骤写在main.tf文件中。

# ----------------------------
# Provider
# ----------------------------
provider "aws" {
  profile = "terraform_test"
  region  = "ap-northeast-1"
}

# ----------------------------
# Variables
# ----------------------------
variable "project" {
  type = string
}

variable "environment" {
  type = string
}

# ----------------------------
# EC2 instance
# ----------------------------
resource "aws_instance" "test_ec2" {
    ami = "ami-◯◯" #AMIのID
    instance_type = "t2.micro"

  tags = {
    Name    = "${var.project}-${var.environment}-ec2"
    # Namw  = test-dev-ec2 となります。
   }
}
$ touch terraform.tfvars 
project = "test"
environment = "dev"

如果能写到这里,我会启动EC2。
我会在包含上述两个文件的目录中执行以下操作!

因为是初次执行,所以会执行初始化操作init。

$ terraform init

如果你想格式化代码,可以使用以下命令进行格式化!

$ terraform fmt

确认所述的代码的定义内容!

$ terraform plan

确认是否会产生意图中的行为(在本例中是否会创建EC2实例)。

最後,我们会执行定义的内容来创建EC2实例。

$ terraform apply

如果在AWS管理控制台上创建了EC2实例,则表示成功!!

使用Terraform删除所有在AWS中定义的资源。

$ terraform destory

每次都打”terraform”真是麻烦啊…

在 ~/.zshrc 文件中先写好别名。

#terraform
 alias tf='terraform'

最后

在tf文件中,使用了一种名为HCL2的独特语法或写法。由于我还在摸索中,所以在阅读官方文档的同时尝试进行编写。。。。
https://developer.hashicorp.com/terraform/language

因为这是通过试用后的输出进行的,所以我会继续学习更好的写作和使用方法。
一旦我变得熟悉了,就能够创建更复杂的环境,然后再次进行输出。

暂且先学了一点点Terraform入门。
感谢大家阅读到这里!

bannerAds