背景:
關于如何在機器上拉terraform代碼,初始化就不重復了,需要的可以查看前面的文章:
【Terraform學習】Terraform-AWS部署快速入門(快速入門)_向往風的男子的博客-CSDN博客
管理顯式依賴關系
隱式依賴關系是 Terraform 了解資源之間關系的主要方式。
但是,有時資源之間存在對Terraform不可見的依賴關系。
depends_on
該參數可以為資源創建顯式依賴關系。為了說明這一點,假設您在 EC2 實例上運行一個應用程序,該應用程序預期使用特定的 Amazon S3 存儲桶。
此依賴項是在應用程序內部配置的,因此對 Terraform 不可見。
您可以使用顯式聲明依賴項。您還可以在參數中指定多個資源,Terraform 將等到所有資源都已創建完畢后再創建目標資源。
提示:由于 Terraform 將等到創建指定資源后再創建依賴資源,因此添加顯式依賴項可能會增加 Terraform 創建基礎結構所需的時間。
將以下內容添加到
main.tf
。
resource "aws_s3_bucket" "example" {acl = "private" }resource "aws_instance" "example_c" {ami = data.aws_ami.amazon_linux.idinstance_type = "t2.micro"depends_on = [aws_s3_bucket.example] }module "example_sqs_queue" {source = "terraform-aws-modules/sqs/aws"version = "2.1.0"depends_on = [aws_s3_bucket.example, aws_instance.example_c] }
此配置包括對新模塊的引用。必須先安裝模塊,然后 Terraform 才能使用它們。
terraform get
現在應用更改
terraform apply
您將看到類似于以下內容的輸出。
aws_s3_bucket.example: Creating... aws_s3_bucket.example: Still creating... [10s elapsed] ## ... aws_s3_bucket.example: Creation complete after 1m0s [id=terraform-20200813175124184300000001] aws_instance.example_c: Creating... aws_instance.example_c: Still creating... [10s elapsed] aws_instance.example_c: Still creating... [20s elapsed] aws_instance.example_c: Still creating... [30s elapsed] aws_instance.example_c: Still creating... [40s elapsed] aws_instance.example_c: Creation complete after 44s [id=i-08a44071a2517179f] module.example_sqs_queue.aws_sqs_queue.this[0]: Creating... module.example_sqs_queue.aws_sqs_queue.this[0]: Creation complete after 6s [id=https://sqs.us-west-1.amazonaws.com/561656980159/terraform-20200813175223563000000002] module.example_sqs_queue.data.aws_arn.this[0]: Reading... module.example_sqs_queue.data.aws_arn.this[0]: Read complete after 0s [id=arn:aws:sqs:us-west-1:561656980159:terraform-20200813175223563000000002]Apply complete! Resources: 3 added, 0 changed, 0 destroyed.
由于實例和 SQS 隊列都依賴于 S3 存儲桶,因此 Terraform 會等到創建存儲桶后再開始創建其他兩個資源。