This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| wiki:ai:bicep-terraform-comparison [2025/06/11 14:21] – ddehamer | wiki:ai:bicep-terraform-comparison [2025/06/11 14:31] (current) – ddehamer | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Bicep Terraform Comparison ====== | ====== Bicep Terraform Comparison ====== | ||
| + | |||
| + | ===== Conclusion ===== | ||
| I worked on two scripts, both doing the same thing, one in Bicep and one in Terraform. | I worked on two scripts, both doing the same thing, one in Bicep and one in Terraform. | ||
| Line 17: | Line 19: | ||
| terraform apply | terraform apply | ||
| </ | </ | ||
| + | |||
| + | ===== Bicep Code ===== | ||
| main.bicep | main.bicep | ||
| Line 312: | Line 316: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | ===== Terraform Code ===== | ||
| main.tf | main.tf | ||
| Line 498: | Line 504: | ||
| EOF | EOF | ||
| ) | ) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== AWS Comparison ===== | ||
| + | |||
| + | Bonus to show how similar AWS and Azure are with Terraform: | ||
| + | |||
| + | ==== AWS Terraform ==== | ||
| + | |||
| + | main_aws.tf | ||
| + | < | ||
| + | provider " | ||
| + | region = " | ||
| + | } | ||
| + | |||
| + | variable " | ||
| + | default = " | ||
| + | } | ||
| + | |||
| + | variable " | ||
| + | default = " | ||
| + | } | ||
| + | |||
| + | variable " | ||
| + | default = " | ||
| + | } | ||
| + | |||
| + | resource " | ||
| + | cidr_block = var.vpc_cidr | ||
| + | tags = { | ||
| + | Name = " | ||
| + | } | ||
| + | } | ||
| + | |||
| + | resource " | ||
| + | vpc_id | ||
| + | cidr_block = var.subnet1_cidr | ||
| + | availability_zone = " | ||
| + | tags = { | ||
| + | Name = " | ||
| + | } | ||
| + | } | ||
| + | |||
| + | resource " | ||
| + | vpc_id | ||
| + | cidr_block = var.subnet2_cidr | ||
| + | availability_zone = " | ||
| + | tags = { | ||
| + | Name = " | ||
| + | } | ||
| + | } | ||
| + | |||
| + | resource " | ||
| + | vpc_id = aws_vpc.main.id | ||
| + | } | ||
| + | |||
| + | resource " | ||
| + | vpc_id = aws_vpc.main.id | ||
| + | |||
| + | route { | ||
| + | cidr_block = " | ||
| + | gateway_id = aws_internet_gateway.gw.id | ||
| + | } | ||
| + | } | ||
| + | |||
| + | resource " | ||
| + | subnet_id | ||
| + | route_table_id = aws_route_table.rt.id | ||
| + | } | ||
| + | |||
| + | resource " | ||
| + | subnet_id | ||
| + | route_table_id = aws_route_table.rt.id | ||
| + | } | ||
| + | |||
| + | resource " | ||
| + | name = " | ||
| + | description = "Allow SSH and HTTP" | ||
| + | vpc_id | ||
| + | |||
| + | ingress { | ||
| + | from_port | ||
| + | to_port | ||
| + | protocol | ||
| + | cidr_blocks = [" | ||
| + | } | ||
| + | |||
| + | ingress { | ||
| + | from_port | ||
| + | to_port | ||
| + | protocol | ||
| + | cidr_blocks = [" | ||
| + | } | ||
| + | |||
| + | egress { | ||
| + | from_port | ||
| + | to_port | ||
| + | protocol | ||
| + | cidr_blocks = [" | ||
| + | } | ||
| + | } | ||
| + | |||
| + | resource " | ||
| + | ami = " | ||
| + | instance_type | ||
| + | subnet_id | ||
| + | vpc_security_group_ids | ||
| + | key_name | ||
| + | associate_public_ip_address = true | ||
| + | |||
| + | user_data = << | ||
| + | #!/bin/bash | ||
| + | apt update | ||
| + | apt install -y apache2 | ||
| + | systemctl enable apache2 | ||
| + | systemctl start apache2 | ||
| + | EOF | ||
| + | |||
| + | tags = { | ||
| + | Name = " | ||
| + | } | ||
| + | } | ||
| + | |||
| + | resource " | ||
| + | ami = " | ||
| + | instance_type | ||
| + | subnet_id | ||
| + | vpc_security_group_ids | ||
| + | key_name | ||
| + | associate_public_ip_address = true | ||
| + | |||
| + | user_data = << | ||
| + | #!/bin/bash | ||
| + | apt update | ||
| + | apt install -y apache2 | ||
| + | systemctl enable apache2 | ||
| + | systemctl start apache2 | ||
| + | EOF | ||
| + | |||
| + | tags = { | ||
| + | Name = " | ||
| + | } | ||
| } | } | ||
| </ | </ | ||