@@ -4,6 +4,7 @@ provider "aws" {
44
55locals {
66 tags = merge (var. tags , { " app" = " clawdinator" })
7+ instance_enabled = var. ami_id != " "
78}
89
910resource "aws_s3_bucket" "image_bucket" {
@@ -121,8 +122,12 @@ data "aws_iam_policy_document" "ami_importer" {
121122 sid = " ImportImage"
122123 actions = [
123124 " ec2:ImportImage" ,
125+ " ec2:ImportSnapshot" ,
126+ " ec2:DescribeImportSnapshotTasks" ,
124127 " ec2:DescribeImportImageTasks" ,
125128 " ec2:DescribeImages" ,
129+ " ec2:DescribeSnapshots" ,
130+ " ec2:RegisterImage" ,
126131 " ec2:CreateTags"
127132 ]
128133 resources = [" *" ]
@@ -153,51 +158,57 @@ data "aws_subnets" "default" {
153158}
154159
155160resource "aws_key_pair" "operator" {
161+ count = local. instance_enabled ? 1 : 0
156162 key_name = " clawdinator-operator"
157163 public_key = var. ssh_public_key
158164 tags = local. tags
159165}
160166
161167resource "aws_security_group" "clawdinator" {
168+ count = local. instance_enabled ? 1 : 0
162169 name = " clawdinator"
163170 description = " CLAWDINATOR access"
164171 vpc_id = data. aws_vpc . default . id
165172 tags = local. tags
166173}
167174
168175resource "aws_security_group_rule" "ssh_ingress" {
176+ count = local. instance_enabled ? 1 : 0
169177 type = " ingress"
170- security_group_id = aws_security_group. clawdinator . id
178+ security_group_id = aws_security_group. clawdinator [ 0 ] . id
171179 from_port = 22
172180 to_port = 22
173181 protocol = " tcp"
174182 cidr_blocks = var. allowed_cidrs
175183}
176184
177185resource "aws_security_group_rule" "gateway_ingress" {
186+ count = local. instance_enabled ? 1 : 0
178187 type = " ingress"
179- security_group_id = aws_security_group. clawdinator . id
188+ security_group_id = aws_security_group. clawdinator [ 0 ] . id
180189 from_port = 18789
181190 to_port = 18789
182191 protocol = " tcp"
183192 cidr_blocks = var. allowed_cidrs
184193}
185194
186195resource "aws_security_group_rule" "egress" {
196+ count = local. instance_enabled ? 1 : 0
187197 type = " egress"
188- security_group_id = aws_security_group. clawdinator . id
198+ security_group_id = aws_security_group. clawdinator [ 0 ] . id
189199 from_port = 0
190200 to_port = 0
191201 protocol = " -1"
192202 cidr_blocks = [" 0.0.0.0/0" ]
193203}
194204
195205resource "aws_instance" "clawdinator" {
206+ count = local. instance_enabled ? 1 : 0
196207 ami = var. ami_id
197208 instance_type = var. instance_type
198209 subnet_id = element (data. aws_subnets . default . ids , 0 )
199- vpc_security_group_ids = [aws_security_group . clawdinator . id ]
200- key_name = aws_key_pair. operator . key_name
210+ vpc_security_group_ids = [aws_security_group . clawdinator [ 0 ] . id ]
211+ key_name = aws_key_pair. operator [ 0 ] . key_name
201212 associate_public_ip_address = true
202213
203214 tags = merge (local. tags , {
0 commit comments