github.com/spirius/terraform@v0.10.0-beta2.0.20170714185654-87b2c0cf8fea/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