针对Terraform初学者
使用 Terraform 的原因

我目前在ZOYI Corporation工作,担任Java后端开发者的职位。由于Channel Talk功能的扩展,对于基础设施的调配,我们比以前使用的Cloud Formation更方便、可读性更高的服务需求也越来越大。
※自动提供是指根据需要预测并准备好网络、计算机设备等资源的过程。这个词来源于表示供应和设备等意义的provision(供给)一词。(出处:https://www.idcf.jp/words/provisioning.html)
在不久前参加的AWS峰会上,我接受了有关Terraform的介绍,并且从那时起,我们开始了为了全面引入而进行的学习会议。
terraform命令。
在Terraform中,使用的基本命令有以下三种:
– Init → 下载提供者(Provider)等插件,并配置工作区
– Plan → 查看执行计划和差异(即哪些资源将被创建/修改/删除)
– Apply → 执行部署操作
让我们来看一下如何使用它们。
大致的操作方法

-
- 我們將創建.tf的HCL代碼(如果想以json格式記述,則使用.tf.json副檔名)。在這裡填寫需求和配置內容。
-
- 下載用於所使用服務的Provider※。因為我們正在考慮將AWS的配置代碼化,所以要下載AWS的Provider。
- 3. Provider通過調用AWS提供的基礎架構建置API,進行配置。

架构

-
- 在Terraform Core上运行的HCL代码将被创建。
-
- 根据HCL代码,将下载用于相应服务的(在本例中是AWS)插件和配置器(Providers和Provisioners)。之后,Terraform Core和插件将通过RPC进行通信。
- 通过客户端库作为共同的通信协议,调用上游API实现供应。
教程
让我们使用Terraform创建AWS的EC2实例和RDS。
安装
brew install terraform
版本确认
terraform --version
供應商設置
创建HCL代码
请以~/terraform/provider.tf(或provider.tf.json)的文件名创建配置文件。
可以用terraform format或json格式创建。
provider "aws" {
access_key = "your_aws_iam_access_key"
secret_key = "your_secret_key"
region = "ap-northeast-2"
}
其它定义方法请参考这里。
执行init命令
$ terraform init

資源設定
创建密钥对

制作HCL程式
提供者.tf
resource "aws_key_pair" "ec2_admin" {
key_name = "ec2_admin"
public_key = "${file(~/.ssh/ec2_admin.pub)}"
}
在资源类型中,”aws_key_pair”是一种资源类型,它的前缀是”aws_*”。”ec2_admin”是一个本地变量(资源名称),可以自由命名,并且可以从HCL代码中引用。
执行计划指令
让我们按照以下方式执行Terraform的plan命令。
$ terraform plan

执行apply命令

设置安全组
我們來設定SSH連接時的安全群組(防火牆/埠設定)。
创建HCL代码

执行plan命令 plan
$ terraform plan
应用apply命令运行
$ terraform apply
产生RDS
创建HCL代码

执行plan命令
$ terraform plan
申请执行apply命令。
$ terraform apply
数据如何使用
除了之前出现的提供者和资源之外,
还有其他的数据。
数据是一个命令,可以搜索并获取已经创建的实例的信息。

请看一下
您可考虑以下内容
以下是给您的参考
供您参考
以下是您提供的链接:
1. https://events.linuxfoundation.org/wp-content/uploads/2017/12/Hashicorp-Terraform-Deep-Dive-with-no-Fear-Victor-Turbinsky-Texuna.pdf
2. https://www.44bits.io/ko/post/terraform_introduction_infrastrucute_as_code
请注意,我是一个语言模型,无法直接查看或提供链接中的内容。我只能帮助您将其转化为中文表达。