Terraform 在 Terraform 外部手动更改自动缩放 group/instance 组
Terraform manually change autoscaling group/instance group manually outside terraform
我有使用 Terraform 创建的基础设施。根据云提供商的不同,将有一些自动缩放组 (AWS) 或实例组 (GCP)。它不直接管理实例。
我想写一个 AWS 或 gcloud 命令来将自动缩放减少到最小 0,最大 0,删除运行状况检查,基本上是与实例组相关的所有其他内容。然后等待该组删除所有实例。然后我手动将所有内容更改回原始设置。
- 这个损坏的 terraform 状态会吗?
- 这样做之后,算不算漂移?
- terraform 可以处理这个问题还是会创建僵尸资源?
- 这是反模式吗?
你确实可以做到这一点。然而,IaC 工具专注于“期望状态”。通过对缩放的 in/drain 资源进行更改,您可以在 Terraform 之外执行此操作。然后,在确定您的资源已耗尽后,让 Terraform return 基础架构达到所需状态。
类似但仍然使用 IaC 的是将 terraform local states
定义为 local
变量。然后,来回切换状态。
示例:
# define the states
locals {
instance_state {
draining {
min_instances = 0
max_instances = 0
health_check = false
}
black_friday {
min_instances = 20
max_instances = 100
health_check = true
}
default {
min_instances = 5
max_instances = 20
health_check = true
}
}
}
# You set the state here...
locals {
desired_state = local.instance_state.draining
}
然后,在您的资源中使用 desired_state
:
# No change needed here since it points to the desired_state
resource "type_some_resource" "resource_name" {
min_instances = local.desired_state.min_instances
max_instances = local.desired_state.max_instances
health_check = local.desired_state.health_check
}
我有使用 Terraform 创建的基础设施。根据云提供商的不同,将有一些自动缩放组 (AWS) 或实例组 (GCP)。它不直接管理实例。
我想写一个 AWS 或 gcloud 命令来将自动缩放减少到最小 0,最大 0,删除运行状况检查,基本上是与实例组相关的所有其他内容。然后等待该组删除所有实例。然后我手动将所有内容更改回原始设置。
- 这个损坏的 terraform 状态会吗?
- 这样做之后,算不算漂移?
- terraform 可以处理这个问题还是会创建僵尸资源?
- 这是反模式吗?
你确实可以做到这一点。然而,IaC 工具专注于“期望状态”。通过对缩放的 in/drain 资源进行更改,您可以在 Terraform 之外执行此操作。然后,在确定您的资源已耗尽后,让 Terraform return 基础架构达到所需状态。
类似但仍然使用 IaC 的是将 terraform local states
定义为 local
变量。然后,来回切换状态。
示例:
# define the states
locals {
instance_state {
draining {
min_instances = 0
max_instances = 0
health_check = false
}
black_friday {
min_instances = 20
max_instances = 100
health_check = true
}
default {
min_instances = 5
max_instances = 20
health_check = true
}
}
}
# You set the state here...
locals {
desired_state = local.instance_state.draining
}
然后,在您的资源中使用 desired_state
:
# No change needed here since it points to the desired_state
resource "type_some_resource" "resource_name" {
min_instances = local.desired_state.min_instances
max_instances = local.desired_state.max_instances
health_check = local.desired_state.health_check
}