Plan de Terraform que muestra los cambios que ya están aplicados.
Tengo un pipeline que crea usuarios en RabbitMQ, Minio, Keycloak y otras aplicaciones usando Terraform, pero en Minio tengo un problema. Cuando ejecuto Terraform por primera vez, el pipeline crea el bucket, la política y el usuario (hasta aquí, todo bien), pero cuando lo ejecuto en otras ocasiones, el plan de Terraform muestra cambios que no existen, porque ya ejecuté el pipeline y no hay ningún cambio, como muestra la imagen:
A continuación, mi código de Terraform para Minio:
# Crear un bucket.
resource "minio_bucket" "bucket" {
name = var.namespace
}
resource "minio_user" "user1" {
access_key = var.namespace
secret_key = var.password
policies = [
minio_canned_policy.policy1.name
# Nota: ¡usando un origen de datos aquí!
#data.minio_canned_policy.console_admin.name,
]
/*groups = [
minio_group.group2.name,
]*/
depends_on = [
minio_canned_policy.policy1,
]
}
# Crear una política.
resource "minio_canned_policy" "policy1" {
name = "policy1"
policy = <<eot
{
"version": "2012-10-17",
"statement": [
{
"effect": "allow",
"action": [
"s3:getbucketlocation",
"s3:listallmybuckets"
],
"resource": "arn:aws:s3:::${minio_bucket.bucket.name}*"
},
{
"effect": "allow",
"action": ["s3:listbucket"],
"resource": ["arn:aws:s3:::${minio_bucket.bucket.name}"]
},
{
"effect": "allow",
"action": [
"s3:putobject",
"s3:getobject",
"s3:deleteobject"
],
"resource": ["arn:aws:s3:::${minio_bucket.bucket.name}/*"]
}
]
}
eot
}
en rabbitmq, keycloak, por ejemplo, todo funciona bien.
¿alguien tiene alguna idea para resolver esto?
¡gracias! {=”” “version”:=”” “2012-10-17″,=”” “statement”:=”” [=”” {=”” “effect”:=”” “allow”,=”” “action”:=”” [=”” “s3:getbucketlocation”,=”” “s3:listallmybuckets”=”” ],=”” “resource”:=”” “arn:aws:s3:::${minio_bucket.bucket.name}“=”” },=”” {=”” “effect”:=”” “allow”,=”” “action”:=”” [“s3:listbucket”],=”” “resource”:=”” [“arn:aws:s3:::${minio_bucket.bucket.name}”]=”” },=”” {=”” “effect”:=”” “allow”,=”” “action”:=”” [=”” “s3:putobject”,=”” “s3:getobject”,=”” “s3:deleteobject”=”” ],=”” “resource”:=”” [“arn:aws:s3:::${minio_bucket.bucket.name}/“]=”” }=”” ]=”” }=”” eot=”” }=”” ="" en="" rabbitmq,="" keycloak,="" por="" ejemplo,="" todo="" funciona="" bien.="" ¿alguien="" tiene="" alguna="" idea="" para="" resolver="" esto?=""></eot
{
"version": "2012-10-17",
"statement": [
{
"effect": "allow",
"action": [
"s3:getbucketlocation",
"s3:listallmybuckets"
],
"resource": "arn:aws:s3:::${minio_bucket.bucket.name}*"
},
{
"effect": "allow",
"action": ["s3:listbucket"],
"resource": ["arn:aws:s3:::${minio_bucket.bucket.name}"]
},
{
"effect": "allow",
"action": [
"s3:putobject",
"s3:getobject",
"s3:deleteobject"
],
"resource": ["arn:aws:s3:::${minio_bucket.bucket.name}/*"]
}
]
}
eot
}
en rabbitmq, keycloak, por ejemplo, todo funciona bien.
¿alguien tiene alguna idea para resolver esto?
¡gracias!>
davy.ai
Parece que el problema está en el estado de terraform. Cuando ejecutas el pipeline nuevamente, terraform detecta cambios ya que no tiene conocimiento del estado anterior.
Puedes intentar configurar un backend para el estado de terraform, como remote state, que almacenará el estado en una ubicación centralizada. Esto asegurará que terraform tenga un registro del estado anterior y pueda detectar con precisión los cambios.
Para configurar el remote state, puedes usar una herramienta como S3 o Consul. Aquí tienes un ejemplo de cómo usar S3 para el remote state:
Además, puedes intentar usar el comando
terraform refresh
antes de ejecutarterraform plan
para asegurarte de que terraform tenga información actualizada sobre el estado actual de tu infraestructura.Esperemos que al configurar el remote state o utilizar
terraform refresh
se resuelva tu problema de detectar cambios innecesarios en Minio.