Tengo AWS ALB que se usa para varias instancias de EC2. En Terraform tengo un módulo alb que ya creó un balanceador de carga y oyentes, grupos objetivo para esas instancias EC2.
Quiero adjuntar la instancia ec2 al grupo objetivo. Hice esto en el módulo de instancia EC2 que obtuvo la identificación de instancia de ALB de las salidas del módulo del balanceador de carga.
Cuando ejecuto el comando de aplicación de terraform en el módulo de instancia ec2, terraform quiere crear un nuevo ALB pero ya está creado y en uso. El estado de Terraform en el módulo ec2 no conoce ALB pero quiere ejecutar el código de este módulo para obtener resultados
¿Cómo puedo organizar módulos usando ALB común para múltiples instancias de EC2 sin volver a crear ALB para cada nueva instancia de EC2?
La forma en que debes hacer esto es la siguiente:
output.tf el grupo de destino arn que le gustaría que usaran sus instancias Ec2main.tf , primero cree el balanceador de carga a través del módulo ALB, luego llame al módulo EC2 para cada instancia que desee usar, para el argumento del grupo objetivo, haga referencia al nombre del módulo ALB y su variable de salida para el grupo objetivo. Un ejemplo main.tf incluye solo las partes relevantes
module "my_alb_module" { ..... } module "my_ec2_module" { target_group_arn = module.my_alb_module.target_group }Como práctica recomendada, si tiene componentes como un equilibrador de carga y ec2, intente mantenerlos en módulos separados si desea admitir la reutilización entre recursos.
Si bien no es un ejemplo directo, consulte el código de este repositorio de GitHub , ilustra cómo se pueden exportar los valores entre módulos.