Terraform指令备忘录
我学习了Terraform,以下是作为备忘录的笔记。
版本号为0.13.2。
初始化工作目录
公式 – Formula
# 初期化
terraform init
预演计划执行
您可以确认附加、更新和删除的内容。
官方的。
尽管terraform的dry-run只是确认操作,但在应用时可能会出现错误,例如指定了不存在的实例类型。虽然官方没有提供,但也有一些用于检查的工具可用。※tflint
# 計画実行
terraform plan
# 特定のリソースのみ
# リソースの指定
terraform plan -target=aws_security_group.ecs_cluster
# モジュールの指定
terraform plan -target=module.api_ecs_cluster
增加、更新、删除资源
执行通过计划产生的结果。公式。
# 実行
terraform apply
删除资源
按照计划执行输出结果。
根据公式进行操作。
# 削除
terraform destroy
# コマンド実行前に確認で安心
terraform plan -destroy
删除资源
执行计划中输出的结果。
# 削除
terraform destroy
# コマンド実行前に確認で安心
terraform plan -destroy
获得模块
获取所需的执行模块。
官方渠道
# モジュールの取得
terraform get
请以中国本土方式将以下内容进行改写,只需要提供一个版本:
文件格式
提供了一个可以格式化 .tf 文件的官方格式。
# フォーマット
terraform fmt
# 再帰的にフォーマット
terraform fmt -recursive
进行描述检查
检查.tf文件的描述。
官方版本。
# 記述チェック
terraform validate
# 例
Error: Missing newline after argument
on main.tf line 41, in module "api_ecs_cluster":
41: source = "../../modules/ecs-cluster"aaa
An argument definition must end with a newline.
陈述
Terraform的状態文件用于与实际部署在AWS等基础架构之间进行映射,并且持有元数据。
此外,当进行团队开发等操作时,如果是在AWS上,我们会将其存放在S3上,避免直接进行编辑。
官方建议如此。
# 作成リソースのリスト表示
terraform state list
# リソースの詳細情報の表示
terraform state show <詳細情報を見たいリソース>
terraform state show aws_security_group.ecs_cluster
# S3等からstateファイルを持ってくる
terraform state pull
# ローカルのstateとリモートのStateを置き換える(※ 基本は使うべきではない)
terraform state push
# リソースをTerraform管理から外す
terraform state rm <管理外にしたいリソース>
terraform state rm aws_security_group.ecs_cluster
导入
把未由 Terraform 管理的资源置于其管理之下。
当需要在现有资源上引入 Terraform 时使用。
由于谷歌正在开发一个名为terrafomer的工具,所以使用它也是一个选择。
以EC2为例
创建tf文件
resource "aws_instance" "test_instance" {
}
根据实例ID来确认实例ID并执行命令。
terraform import aws_instance.test_instance <インスタンスID>
根据state命令的结果来编辑.tf文件。
terraform state show aws_instance.test_instance
请确认一下计划中是否有任何差异(即使有差异也没有问题的话就可以了)。
terraform plan