github.com/paybyphone/terraform@v0.9.5-0.20170613192930-9706042ddd51/examples/alicloud-build-lnmp/main.tf (about) 1 2 provider "alicloud" { 3 region = "${var.region}" 4 } 5 6 data "alicloud_instance_types" "1c2g" { 7 cpu_core_count = 2 8 memory_size = 4 9 instance_type_family = "ecs.n1" 10 } 11 12 data "alicloud_images" "centos" { 13 most_recent = true 14 name_regex = "^centos_7\\w.*" 15 } 16 17 data "alicloud_zones" "default" { 18 "available_instance_type"= "${data.alicloud_instance_types.1c2g.instance_types.0.id}" 19 "available_disk_category"= "${var.disk_category}" 20 } 21 22 resource "alicloud_vpc" "default" { 23 cidr_block = "${var.vpc_cidr}" 24 } 25 26 resource "alicloud_vswitch" "vsw" { 27 vpc_id = "${alicloud_vpc.default.id}" 28 cidr_block = "${var.vswitch_cidr}" 29 availability_zone = "${data.alicloud_zones.default.zones.0.id}" 30 } 31 32 resource "alicloud_security_group" "sg" { 33 name = "sg" 34 vpc_id = "${alicloud_vpc.default.id}" 35 } 36 37 resource "alicloud_security_group_rule" "in-all" { 38 type = "ingress" 39 ip_protocol = "all" 40 nic_type = "intranet" 41 policy = "accept" 42 port_range = "-1/-1" 43 priority = 1 44 security_group_id = "${alicloud_security_group.sg.id}" 45 cidr_ip = "0.0.0.0/0" 46 } 47 48 resource "alicloud_security_group_rule" "en-all" { 49 type = "egress" 50 ip_protocol = "all" 51 nic_type = "intranet" 52 policy = "accept" 53 port_range = "-1/-1" 54 priority = 1 55 security_group_id = "${alicloud_security_group.sg.id}" 56 cidr_ip = "0.0.0.0/0" 57 } 58 59 resource "alicloud_instance" "webserver" { 60 security_groups = ["${alicloud_security_group.sg.id}"] 61 vswitch_id = "${alicloud_vswitch.vsw.id}" 62 63 # series II 64 instance_charge_type = "PostPaid" 65 instance_type = "${data.alicloud_instance_types.1c2g.instance_types.0.id}" 66 internet_max_bandwidth_out = 0 67 io_optimized = "${var.io_optimized}" 68 69 system_disk_category = "${var.disk_category}" 70 image_id = "${data.alicloud_images.centos.images.0.id}" 71 72 instance_name = "tf_lnmp" 73 password= "${var.ecs_password}" 74 75 user_data = "${data.template_file.shell.rendered}" 76 } 77 78 data "template_file" "shell" { 79 template = "${file("userdata.sh")}" 80 81 vars { 82 db_name = "${var.db_name}" 83 db_user = "${var.db_user}" 84 db_pwd = "${var.db_password}" 85 db_root_pwd = "${var.db_root_password}" 86 } 87 } 88 89 resource "alicloud_nat_gateway" "default" { 90 vpc_id = "${alicloud_vpc.default.id}" 91 spec = "Small" 92 bandwidth_packages = [{ 93 ip_count = 2 94 bandwidth = 10 95 zone = "${data.alicloud_zones.default.zones.0.id}" 96 }] 97 depends_on = [ 98 "alicloud_vswitch.vsw"] 99 } 100 101 resource "alicloud_forward_entry" "dnat"{ 102 forward_table_id = "${alicloud_nat_gateway.default.forward_table_ids}" 103 external_ip = "${element(split(",", alicloud_nat_gateway.default.bandwidth_packages.0.public_ip_addresses),1)}" 104 external_port = "any" 105 ip_protocol = "any" 106 internal_ip = "${alicloud_instance.webserver.private_ip}" 107 internal_port = "any" 108 } 109 110 resource "alicloud_snat_entry" "snat"{ 111 snat_table_id = "${alicloud_nat_gateway.default.snat_table_ids}" 112 source_vswitch_id = "${alicloud_vswitch.vsw.id}" 113 snat_ip = "${element(split(",", alicloud_nat_gateway.default.bandwidth_packages.0.public_ip_addresses),0)}" 114 } 115 116 117 118 119