针对Terraform初学者

使用 Terraform 的原因

image.png

我目前在ZOYI Corporation工作,担任Java后端开发者的职位。由于Channel Talk功能的扩展,对于基础设施的调配,我们比以前使用的Cloud Formation更方便、可读性更高的服务需求也越来越大。

※自动提供是指根据需要预测并准备好网络、计算机设备等资源的过程。这个词来源于表示供应和设备等意义的provision(供给)一词。(出处:https://www.idcf.jp/words/provisioning.html)

在不久前参加的AWS峰会上,我接受了有关Terraform的介绍,并且从那时起,我们开始了为了全面引入而进行的学习会议。


terraform命令。

在Terraform中,使用的基本命令有以下三种:
– Init → 下载提供者(Provider)等插件,并配置工作区
– Plan → 查看执行计划和差异(即哪些资源将被创建/修改/删除)
– Apply → 执行部署操作
让我们来看一下如何使用它们。

大致的操作方法

image.png
    1. 我們將創建.tf的HCL代碼(如果想以json格式記述,則使用.tf.json副檔名)。在這裡填寫需求和配置內容。

 

    1. 下載用於所使用服務的Provider※。因為我們正在考慮將AWS的配置代碼化,所以要下載AWS的Provider。

 

    3. Provider通過調用AWS提供的基礎架構建置API,進行配置。
image.png

架构

image.png
    1. 在Terraform Core上运行的HCL代码将被创建。

 

    1. 根据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
image.png

資源設定

创建密钥对

image.png

制作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
image.png

执行apply命令

image.png

设置安全组

我們來設定SSH連接時的安全群組(防火牆/埠設定)。

创建HCL代码

image.png

执行plan命令 plan

$ terraform plan

应用apply命令运行

$ terraform apply

产生RDS

创建HCL代码

image.png

执行plan命令

$ terraform plan

申请执行apply命令。

$ terraform apply

数据如何使用

除了之前出现的提供者和资源之外,
还有其他的数据。
数据是一个命令,可以搜索并获取已经创建的实例的信息。

image.png

请看一下
您可考虑以下内容
以下是给您的参考
供您参考

以下是您提供的链接:

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

请注意,我是一个语言模型,无法直接查看或提供链接中的内容。我只能帮助您将其转化为中文表达。

广告
将在 10 秒后关闭
bannerAds