一位大学生尝试使用Terraform构建基础设施,结果失败了
Terraform是什么?
首先,如果你对Terraform还不了解,请看一下我几个小时前写的这篇文章:
https://www.terraform.io/
如果你能理解初级文章的话,应该就不会看我的Qiita了吧。
作为一个初学者,我会解释一下我理解的Terraform。
我并没有获得很深的见解,如果有错误的话,请留下评论,谢谢。
Terraform是一款使用代码进行基础架构建设的工具,也被称为基础架构即代码(Infrastructure as Code)。
它的优点是能够轻松构建相同的环境,并且由于可以在git上进行管理,因此可以轻松恢复到先前的环境,等等。
很现代化,是的,现代化,Moli,非常现代化。
接下来,我将描述我使用Terraform构建AWS的经历。
我打算更新这篇文章,所以请不要催我更新。
请参考以下的网址。
我将在这里列出我参考过的网址:
https://dev.classmethod.jp/articles/terraform-getting-started-with-aws/
(2020/06/15)
https://qiita.com/aromanokarisu/items/42e48c2fc6379517c031
(2020/06/16)
环境
我正在使用 macOS 的 Catalina。
我主要打算使用终端。
安装
$ brew update
$ brew install terraform
如果尚未安装Homebrew,请先安装后再进行操作。
有一篇设置和其他相关信息的文章在本文章之前发布了,请参考那篇文章,因为它内容质量很高。
我还会贴上有关AWS IAM的文章。
AWS IAM
(如果你对官方文档所提供的内容无法理解,请务必访问该链接。)
首先创建IAM用户并下载AWS CLI时遇到了问题。
我之前只以根用户身份访问过AWS,这次假设有多个用户访问,所以我创建了IAM用户。
由于aws_access_key_id和aws_secret_access_key好像只能在创建时获取,所以请务必记得保存csv文件!!!!!!
另外,如果还没下载AWS CLI的人,请先进行下载。
版本管理
本次我们将使用git进行tf文件的版本管理,所以先拉取git。
如果你只克隆过git仓库而不熟悉其他操作,请参考这里。
在第二个git管理下的terraform命令中出现的错误点。
在git仓库管理下的位置。
$ terraform init
$ terraform plan
$ terraform apply
当进行操作并自动添加插件等时,这些插件会作为git的更改点被添加。理所当然,所以我将其复制到与git管理不同的目录下,然后执行上述命令。如果您知道更好的方法,请告诉我。我意识到可以在.gitignore中添加忽略tfstate等文件的描述,所以我将它们放在了存储库中。
# Local .terraform directories
**/.terraform/*
# .tfstate files
*.tfstate
*.tfstate.*
# .tfvars files
*.tfvars
可以将注释删除也可以。(2020/06/18添加说明)
摧毁
这次使用Terraform已经成功地创建了AWS实例,虽然很简单。我想,如果不需要,我想销毁临时创建的实例。
$ terraform destroy
我想确认被销毁的实例是什么(因为如果删除了,就无法查看成果物),所以我找到了确认命令和销毁特定实例的命令,写在下面。
$ terraform plan -destroy // EC2に紐づいているインスタンスのリソース名を取得
$ terraform destroy -target=[インスタンス名] -target=[インスタンス名] // 複数も可能
这里是上述参考的内容。
地区
基本来说,我们使用AWS作为我们的提供商。因此,作为一个初学者,我想知道这是什么,所以我会记录下来。
provider "aws" { //
//バージョンを固定
version = "2.23.0"
region = "ap-northeast-1"
}
好的,region的意思是地区。因为我想要逐个搞清楚不明白的事情,所以我进行了调查。
region指的是实际上有服务器的地区,所以在上述的代码中指定了东京的region。
官方文件
(2020年06月18日附注)
如果这里不对的话,请评论告诉我。如果有更好的建议,请评论告诉我。