Terraform 的大致概述(确保不会误操作破坏生产环境的知识)
对于初次使用Terraform的人来说,这是一个非常简单的概述。为了不意外地删除生产环境的资源,我写了一些我认为值得了解的最基本事项。
※Terraform 还支持除了AWS之外的其他选项。
文字太多了,简单总结一下就是
terraform plan を確認後、 terraform apply でAWSリソースの反映を行います
AWS リソースの実態ではなく、ステートファイル (terraform.tfstate) の内容の方が重要です
職人の手により追加されたAWS リソースを取り込む際に、うっかり terraform apply するとAWS リソースがニフラムします
大致了解Terraform的运作方式。
使用 Terraform 进行环境构建的步骤是
-
- 写terraform文件
-
- 通过terraform plan确认更改内容
-
- 推荐仔细检查是否有奇怪的差异
- 使用terraform apply来实时应用更改内容
是。
样本
以这种状况,执行 terraform plan ,
在此之前(即时尚未更新),执行 terraform apply,
and that concludes it.
请参考官方文档了解具体的描述方法和其他命令。
https://www.terraform.io/docs/index.html
点数
terraform apply 将在 AWS 上更改资源,以确保 Terraform 文件 (*.tf) 的定义和状态文件 (*.tfstate) 的内容之间没有差异。
谨慎状态需要注意
在AWS上存在资源,但在状态文件中没有记载。
这个状态是S3在上面的样本图中。
由于未被Terraform管理,无法通过Terraform进行更改。虽然没有特别需要注意的事项,但是在Terraform的定义和AWS资源的实际情况发生冲突时,可能导致terraform apply失败。
例如,在Terraform中定义了一个与已经存在的S3存储桶具有相同名称的S3存储桶的情况下等。
在AWS上存在资源,也在状态文件中进行了记录,但在Terraform文件中未定义。
这个示例图中的RDS处于这种状态。
(如果使用Terraform删除AWS资源时会发生这种情况)
没有问题出现在通过删除这个状态的意图上。然而,在用工匠熟练的技术(AWS管理控制台)添加AWS资源之后,当后来使用Terraform来管理这个状态时,这种状态会暂时发生。
将已存在的 AWS 资源导入 Terraform 的步骤。
在Terraform中复制工匠的熟练技能需要一些工作。
-
- 通过terraform import命令,根据AWS资源的实际情况生成状态文件。
通过terraform state mv等命令来调整相关资源的定义代码的布局。
编写Terraform代码以确保terraform plan没有差异。
在这个过程中,如果不小心执行 terraform apply,那么本应该被 Terraform 吸纳的 AWS 资源会被删除。被吸纳的很可能是生产环境的资源,那将是一件十分严重的事情。
最后
非常重要的事情我再次強調一下,那就是國家檔案的內容非常重要。
因此,LiB 在 S3 上設置了版本控制以管理國家檔案。
虽然没找到 Terraform 的日历,可能不太受欢迎吧…