2016-02-13 3 views
1

Я хочу предоставить доступ к одной группе безопасности другой, но я не могу заставить ее работать, может кто-нибудь указать мне, где я делаю неправильно.Разрешить доступ к одной группе безопасности AWS другому с использованием terraform

здесь мой модуль main.tf:

resource "aws_security_group" "rds_sg" { 
    name = "${var.name}-${var.environment}-rds" 
    description = "Security Group ${var.name}-${var.environment}" 
    vpc_id = "${var.vpc_id}" 
    tags { 
     Name = "${var.name}-${var.environment}-rds" 
     environment = "${var.environment}" 
    } 

    // allows traffic from the SG itself 
    ingress { 
     from_port = 0 
     to_port = 0 
     protocol = "-1" 
     self = true 
    } 

    // allow traffic for TCP 3306 
    ingress { 
     from_port = 3306 
     to_port = 3306 
     protocol = "tcp" 
     security_group_id = "${var.security_group_id}" 
    } 

    // outbound internet access 
    egress { 
     from_port = 0 
     to_port = 0 
     protocol = "-1" 
     cidr_blocks = ["0.0.0.0/0"] 
    } 
} 

output "rds_sg_id" { 
    value = "${aws_db_security_group.rds_sg.id}" 
} 

модуль variables.tf:

// Module specific variables 
variable "name" { 
    default = "test" 
} 

variable "environment" { 
    default = "test" 
} 

variable "vpc_id" { 
    description = "The VPC this security group will go in" 
} 

variable "security_group_id" { 
    description = "Security Group id" 
} 

где значение security_groups_id пришел к другому модулю, так что в моем главном файле это выглядит так:

module "rds_sg" { 
    source = "./modules/rds_sg" 
    name = "tendo" 
    environment = "dev" 
    vpc_id = "${module.vpc_subnets.vpc_id}" 
    security_group_id = "${module.web_sg.web_sg_id}" 
} 

, но когда я пытаюсь выполнить «терраформировать», я получаю эту ошибку:

Errors: 

    * 1 error(s) occurred: 

* module root: module rds_sg: security_group_id is not a valid parameter 
+0

Глядя на это сообщение об ошибке У меня возникает ощущение, что security_group_id не существует внутри модуля. Можете ли вы показать код модуля? –

+0

@ LiamJones любезно просмотрите, я обновляю вопрос со всеми необходимыми деталями. Спасибо –

ответ

3

Я думаю, что я нашел этот вопрос; вы используете неправильный аргумент для обеспечения групп безопасности в main.tf модуля. См. Измененный код ниже и документацию here.

// allow traffic for TCP 3306 
ingress { 
    from_port = 3306 
    to_port = 3306 
    protocol = "tcp" 
    security_groups = ["${var.security_group_id}"] 
} 
0

Выходной идентификатор группы безопасности в качестве переменной.

output "rds_sg_id" { 
    value = "${aws_security_group.rds_sg.id}" 
} 

При использовании группы безопасности

// allow traffic for TCP 3306 
    ingress { 
     from_port = 3306 
     to_port = 3306 
     protocol = "tcp" 
     security_group_id = "${var.rds_sg_id}" 
    } 
+0

Я сделал то же самое, но все еще получаю сообщение об ошибке, можете ли вы просмотреть мой обновленный вопрос. благодаря –

 Смежные вопросы

  • Нет связанных вопросов^_^