Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

388
Visualizações
Terraform: use el ID del grupo de seguridad creado en un archivo separado para la creación de instancias EC2

He usado este módulo para crear un grupo de seguridad en AWS VPC. ¿Cómo hago referencia al recurso creado a partir de esto en un archivo separado? Estoy creando nuestra instancia de bastión en un directorio separado en el mismo repositorio.

La configuración de mi bastión se parece a la siguiente, usa el módulo Terraform EC2 y funciona si codifico el ID del grupo de seguridad vpc, pero quiero que pueda tomarlo directamente cuando se crea el grupo de seguridad, ya que esto podría cambiar en el futuro. ..

terraform/aws/layers/bastion/main.tf

 provider "aws" { region = var.region } module "ec2-instance" { source = "terraform-aws-modules/ec2-instance/aws" name = "bastion" instance_count. = 1 ami = var.image_id instance_type = var.instance_type vpc_security_group_ids = ["${}"] subnet_id = var.subnet iam_instance_profile = "aws-example-ec2-role" tags = { Layer = "Bastion" } }

Así he creado el grupo de seguridad: terraform/aws/global/vpc/bastion_sg.tf

 module "bastion-sg" { source = "terraform-aws-modules/security-group/aws" name = "Bastion" description = "Bastion example group" vpc_id = "vpc-12345" ingress_with_cidr_blocks = [ { from_port = ## to_port = ## protocol = "##" description = "Bastion SSH" cidr_blocks = "1.2.3.4/5" }, { from_port = ## to_port = ## protocol = "##" description = "Bastion SSH" cidr_blocks = "1.2.3.4/5" } ] egress_with_source_security_group_id = [ { from_port = ## to_port = ## protocol = "##" description = "Access to default server security group" source_security_group_id = "sg-12345" }, { from_port = ## to_port = ## protocol = "##" description = "Access to db" source_security_group_id = "sg-12345" } ] }

¿Necesito enviar el ID del grupo de seguridad a outputs.tf donde he creado bastion_sg.tf antes de poder hacer referencia a bastion/main.tf como se muestra a continuación?

 module "bastion_sg" source "../../global/vpc"

y luego de alguna manera pasar la ID a vpc_security_group_id = ?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

No usaría terraform-aws-modules. Usaría los recursos del proveedor de aws como aws_security_group y aws_security_group_rules directamente. Desde Terraform 0.12, estos módulos de un solo recurso no ofrecen ningún beneficio, solo mayor complejidad.

Este es un ejemplo de lo que podría ser su código con recursos directos del proveedor de AWS y sin módulos superfluos:

 provider "aws" { region = var.region } resource "aws_instance" "bastion" { name = "bastion" ami = var.image_id instance_type = var.instance_type vpc_security_group_ids = [aws_security_group.bastion.id] subnet_id = var.subnet iam_instance_profile = "aws-example-ec2-role" tags = { Layer = "Bastion" } } resource "aws_security_group" "bastion_from_ssh" { name = "Bastion" description = "Bastion example group" vpc_id = "vpc-12345" } resource "aws_security_group_rule" "allow_ssh" { type = "ingress" from_port = ## to_port = ## protocol = "##" description = "Bastion SSH" cidr_blocks = ["1.2.3.4/5"] } resource "aws_security_group_rule" "bastion_to_db" { type = "egress" from_port = ## to_port = ## protocol = "##" description = "Access to default server security group" source_security_group_id = "sg-12345" } output "security_group_id" { value = aws_security_group.bastion_from_ssh.id }

Ejemplo: Hacer referencia a la salida en otro módulo:

 module "bastion" { source = "path/to/dir/with/code/above" // ... any variables it needs } resource "aws_security_group" "app_server" { name = "AppServer" description = "App Server group" vpc_id = "vpc-12345" } resource "aws_security_group_rule" "allow_ssh_to_app_server" { security_group_id = module.bastion.security_group_id type = "egress" from_port = 22 to_port = 22 protocol = "tcp" description = "SSH to App Server" source_security_group_id = aws_security_group.app_server.id } resource "aws_security_group_rule" "allow_ssh_from_bastion" { security_group_id = aws_security_group.app_server.id type = "ingress" from_port = 22 to_port = 22 protocol = "tcp" description = "SSH from Bastion" source_security_group_id = module.bastion.security_group_id }
over 4 years ago · Santiago Trujillo Relatório

0

De la documentación del módulo que está utilizando, estos son los resultados .

La forma de referenciarlos en tu propia terraformación sería:

 module.bastion-sg.this_security_group_id

Entonces, su archivo terraform/aws/layers/bastion/main.tf se vería así:

 provider "aws" { region = var.region } module "ec2-instance" { source = "terraform-aws-modules/ec2-instance/aws" name = "bastion" instance_count. = 1 ami = var.image_id instance_type = var.instance_type vpc_security_group_ids = [module.bastion-sg.this_security_group_id] subnet_id = var.subnet iam_instance_profile = "aws-example-ec2-role" tags = { Layer = "Bastion" } }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda