shell 地形文字

8fq7wneg  于 2023-01-21  发布在  Shell
关注(0)|答案(1)|浏览(97)

创建了一个EC2示例使用terraform,现在我想修改示例类型没有手动干预。它应该自动改变使用 Package 脚本。
示例我使用terraform启动了一个AWS ec2示例,并进行了示例类型、示例数量等基本配置。但当我想将示例计数从1更改为2或通过编辑terraform代码手动更改任何配置时。
1.我想通过wrappr脚本自动执行该阶段
Main.tf
平台{必需的供应商{ aws = { source =“hashicorp/aws”} }资源“aws示例”“{ ami =变量.ami示例类型=变量.示例类型
网络接口{网络接口ID =var.network接口ID设备索引= 0 }信用规格{ cpu信用=“无限”} }
Var.tf
变量“网络接口ID”{类型=字符串默认值=“来自aws的网络ID”}
变量“ami”{类型=字符串默认值=“ami-005 e54 dee 72 cc 1d 00”}
变量“示例类型”{类型=字符串默认值=“t2.micro”}
在这里,我想将“示例类型”t2.Micro自动修改为t2.large,而无需手动进入var.tf文件

eufgjt7s

eufgjt7s1#

如果我没理解错你的问题:
您希望有一个Terraform脚本,即使您想更改基础架构中的某些内容,如示例数、机器类型等,也不想更改它。
对于此用例,您可以通过创建自定义 *.tfvars文件或使用TF_VAR_*环境变量,从Terraform计划/应用中为变量提供值(更多信息请参见:)。
例如,对于如下脚本:

terraform {
  required_providers {
    aws = {
      source = "hashicorp/aws"
    }
  }
}
resource "aws_instance" "myinstance" {
  count         = var.instance_count
  ami           = var.ami
  instance_type = var.instance_type

  network_interface {
    network_interface_id = var.network_interface_id
    device_index         = 0
  }

  credit_specification {
    cpu_credits = "unlimited"
  }
}

# Var.tf
variable "network_interface_id" {
  type    = string
  default = "network_id_from_aws"
}

variable "ami" {
  type    = string
  default = "ami-005e54dee72cc1d00"
}

variable "instance_type" {
  type    = string
  default = "t2.micro"
}

variable "instance_count" {
  type   = number
  defult = 1
}

我会将这一行添加到我的 Package 器脚本(假设它是从CI管道运行的bash脚本)

terraform plan -var instance_count=2 -var instance_type=t2.large

或者,我将根据脚本输入动态创建一个*.tfvars文件
然而,如果你想做更多的事情,考虑到Terraform是一种IaaC技术,你可能想让Terraform脚本尽可能接近现实(你在云环境中拥有的)。

相关问题