github.com/mcuadros/ascode@v1.3.1/starlark/types/testdata/hcl_integration.star (about) 1 load("os", "os") 2 load("assert.star", "assert") 3 4 aws = tf.provider("aws", "2.13.0") 5 aws.region = "us-west-2" 6 7 # Based on: 8 # https://www.terraform.io/docs/providers/aws/r/instance.html#example 9 vpc = aws.resource.vpc() 10 vpc.cidr_block = "172.16.0.0/16" 11 vpc.tags = {"Name": "tf-example"} 12 13 subnet = aws.resource.subnet() 14 subnet.vpc_id = vpc.id 15 subnet.cidr_block = "172.16.0.0/24" 16 subnet.availability_zone = "us-west-2a" 17 subnet.tags = {"Name": "tf-example"} 18 19 iface = aws.resource.network_interface() 20 iface.subnet_id = subnet.id 21 iface.private_ips = ["172.16.10.100"] 22 iface.tags = {"Name": "primary_network_iterface"} 23 24 ubuntu = aws.data.ami() 25 ubuntu.most_recent = True 26 ubuntu.filter(name = "name", values = ["ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*"]) 27 ubuntu.filter(name = "virtualization-type", values = ["hvm"]) 28 ubuntu.owners = ["099720109477"] 29 30 instance = aws.resource.instance() 31 instance.ami = ubuntu.id 32 instance.instance_type = "t2.micro" 33 instance.credit_specification.cpu_credits = "unlimited" 34 instance.network_interface = [{ 35 "network_interface_id": iface.id, 36 "device_index": 0 37 }] 38 39 # Based on: 40 # https://www.terraform.io/docs/providers/aws/r/autoscaling_group.html#mixed-instances-policy 41 template = aws.resource.launch_template() 42 template.name_prefix = "example" 43 template.image_id = ubuntu.id 44 template.instance_type = "c5.large" 45 46 group = aws.resource.autoscaling_group() 47 group.availability_zones = ["us-east-1a"] 48 group.min_size = 1 49 group.max_size = 1 50 group.desired_capacity = 1 51 group.mixed_instances_policy = { 52 "launch_template": { 53 "launch_template_specification": { 54 "launch_template_id": template.id, 55 }, 56 "override": [ 57 {"instance_type": "c4.large"}, 58 {"instance_type": "c3.large"} 59 ], 60 }, 61 } 62 63 # Based on: 64 # https://learn.hashicorp.com/terraform/getting-started/dependencies.html#implicit-and-explicit-dependencies 65 bucket = aws.resource.s3_bucket() 66 bucket.bucket = "terraform-getting-started-guide" 67 bucket.acl = "private" 68 69 example = aws.resource.instance() 70 example.ami = "ami-2757f631" 71 example.instance_type = "t2.micro" 72 example.depends_on(bucket) 73 74 assert.eq(hcl(tf).replace("\r", ""), os.read_file("fixtures/aws.tf").replace("\r", ""))