我试着入门了一些Terraform
Terraform 是什么?
Terraform是一个开源服务,被称为一种IaC(基础设施即代码)工具,可以有效构建开发资源。它是一种可以根据代码定义的构建配置,在云环境如aws上自动部署所需的基础设施的工具!
※这次我们将使用AWS来继续讨论。
使用Terraform进行开发的大致流程
-
- 创建帐户(用于Terraform操作云环境)
-
- 通过代码定义环境
- 部署
据说最新的云资源中,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需要执行创建、更改、删除等操作,因此需要附加适当的策略。
由于这次只是为了尝试,我们将其配置为可以对所有资源进行完全访问。
【步骤】
-
- 登录到AWS管理控制台
-
- 在IAM > 用户中创建用户
-
- 通过”直接附加策略”,此次添加了”AdministratorAccess”策略。
-
- 在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入门。
感谢大家阅读到这里!