Skip to content

Commit

Permalink
ess-scaling and vpc-snat examples
Browse files Browse the repository at this point in the history
Originally submitted as part of hashicorp/terraform#13731 .
  • Loading branch information
demonwy authored and apparentlymart committed Jul 7, 2017
1 parent 854daff commit 1689f9a
Show file tree
Hide file tree
Showing 11 changed files with 313 additions and 0 deletions.
17 changes: 17 additions & 0 deletions examples/ess-scaling/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
### ESS scaling configuration Example

The example launches ESS scaling configuration, will create ECS instance automatic by system schedule.

### Get up and running

* Planning phase

terraform plan

* Apply phase

terraform apply

* Destroy

terraform destroy
38 changes: 38 additions & 0 deletions examples/ess-scaling/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
data "alicloud_images" "ecs_image" {
most_recent = true
name_regex = "^centos_6\\w{1,5}[64].*"
}

resource "alicloud_security_group" "sg" {
name = "${var.security_group_name}"
description = "tf-sg"
}

resource "alicloud_security_group_rule" "ssh-in" {
type = "ingress"
ip_protocol = "tcp"
nic_type = "internet"
policy = "accept"
port_range = "22/22"
priority = 1
security_group_id = "${alicloud_security_group.sg.id}"
cidr_ip = "0.0.0.0/0"
}

resource "alicloud_ess_scaling_group" "scaling" {
min_size = "${var.scaling_min_size}"
max_size = "${var.scaling_max_size}"
scaling_group_name = "tf-scaling"
removal_policies = "${var.removal_policies}"

}

resource "alicloud_ess_scaling_configuration" "config" {
scaling_group_id = "${alicloud_ess_scaling_group.scaling.id}"
enable = "${var.enable}"

image_id = "${data.alicloud_images.ecs_image.images.0.id}"
instance_type = "${var.ecs_instance_type}"
io_optimized = "optimized"
security_group_id = "${alicloud_security_group.sg.id}"
}
7 changes: 7 additions & 0 deletions examples/ess-scaling/outputs.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
output "scaling_group_id" {
value = "${alicloud_ess_scaling_group.scaling.id}"
}

output "configuration_id" {
value = "${alicloud_ess_scaling_configuration.config.id}"
}
24 changes: 24 additions & 0 deletions examples/ess-scaling/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
variable "security_group_name" {
default = "tf-sg"
}

variable "scaling_min_size" {
default = 1
}

variable "scaling_max_size" {
default = 1
}

variable "enable" {
default = true
}

variable "removal_policies" {
type = "list"
default = ["OldestInstance", "NewestInstance"]
}

variable "ecs_instance_type" {
default = "ecs.s2.large"
}
17 changes: 17 additions & 0 deletions examples/ess-schedule/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
### ESS scaling schedule Example

The example launches ESS schedule task, which will create ECS by the schedule time.

### Get up and running

* Planning phase

terraform plan

* Apply phase

terraform apply

* Destroy

terraform destroy
51 changes: 51 additions & 0 deletions examples/ess-schedule/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
data "alicloud_images" "ecs_image" {
most_recent = true
name_regex = "^centos_6\\w{1,5}[64].*"
}

resource "alicloud_security_group" "sg" {
name = "${var.security_group_name}"
description = "tf-sg"
}

resource "alicloud_security_group_rule" "ssh-in" {
type = "ingress"
ip_protocol = "tcp"
nic_type = "internet"
policy = "accept"
port_range = "22/22"
priority = 1
security_group_id = "${alicloud_security_group.sg.id}"
cidr_ip = "0.0.0.0/0"
}

resource "alicloud_ess_scaling_group" "scaling" {
min_size = "${var.scaling_min_size}"
max_size = "${var.scaling_max_size}"
scaling_group_name = "tf-scaling"
removal_policies = "${var.removal_policies}"

}

resource "alicloud_ess_scaling_configuration" "config" {
scaling_group_id = "${alicloud_ess_scaling_group.scaling.id}"
enable = "${var.enable}"

image_id = "${data.alicloud_images.ecs_image.images.0.id}"
instance_type = "${var.ecs_instance_type}"
io_optimized = "optimized"
security_group_id = "${alicloud_security_group.sg.id}"
}

resource "alicloud_ess_scaling_rule" "rule" {
scaling_group_id = "${alicloud_ess_scaling_group.scaling.id}"
adjustment_type = "TotalCapacity"
adjustment_value = "${var.rule_adjust_size}"
cooldown = 60
}

resource "alicloud_ess_schedule" "run" {
scheduled_action = "${alicloud_ess_scaling_rule.rule.ari}"
launch_time = "${var.schedule_launch_time}"
scheduled_task_name = "tf-run"
}
11 changes: 11 additions & 0 deletions examples/ess-schedule/outputs.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
output "scaling_group_id" {
value = "${alicloud_ess_scaling_group.scaling.id}"
}

output "configuration_id" {
value = "${alicloud_ess_scaling_configuration.config.id}"
}

output "configuration_ari" {
value = "${alicloud_ess_scaling_configuration.config.ari}"
}
32 changes: 32 additions & 0 deletions examples/ess-schedule/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
variable "security_group_name" {
default = "tf-sg"
}

variable "scaling_min_size" {
default = 1
}

variable "scaling_max_size" {
default = 1
}

variable "enable" {
default = true
}

variable "removal_policies" {
type = "list"
default = ["OldestInstance", "NewestInstance"]
}

variable "ecs_instance_type" {
default = "ecs.s2.large"
}

variable "rule_adjust_size" {
default = 3
}

variable "schedule_launch_time" {
default = "2017-04-01T01:59Z"
}
87 changes: 87 additions & 0 deletions examples/vpc-snat/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
provider "alicloud" {
region = "cn-hangzhou"
}

data "alicloud_instance_types" "1c2g" {
cpu_core_count = 1
memory_size = 2
instance_type_family = "ecs.n1"
}

data "alicloud_zones" "default" {
"available_instance_type"= "${data.alicloud_instance_types.1c2g.instance_types.0.id}"
"available_disk_category"= "${var.disk_category}"
}

resource "alicloud_vpc" "default" {
name = "tf_vpc"
cidr_block = "${var.vpc_cidr}"
}

resource "alicloud_vswitch" "default" {
vpc_id = "${alicloud_vpc.default.id}"
cidr_block = "${var.vswitch_cidr}"
availability_zone = "${data.alicloud_zones.default.zones.0.id}"
}

resource "alicloud_nat_gateway" "default" {
vpc_id = "${alicloud_vpc.default.id}"
spec = "Small"
name = "test_foo"
bandwidth_packages = [{
ip_count = 2
bandwidth = 5
zone = "${data.alicloud_zones.default.zones.0.id}"
}]
depends_on = [
"alicloud_vswitch.default"]
}
resource "alicloud_snat_entry" "default"{
snat_table_id = "${alicloud_nat_gateway.default.snat_table_ids}"
source_vswitch_id = "${alicloud_vswitch.default.id}"
snat_ip = "${element(split(",", alicloud_nat_gateway.default.bandwidth_packages.0.public_ip_addresses),0)}"
}

resource "alicloud_forward_entry" "default"{
forward_table_id = "${alicloud_nat_gateway.default.forward_table_ids}"
external_ip = "${element(split(",", alicloud_nat_gateway.default.bandwidth_packages.0.public_ip_addresses),1)}"
external_port = "80"
ip_protocol = "tcp"
internal_ip = "${alicloud_instance.default.private_ip}"
internal_port = "8080"
}

resource "alicloud_security_group" "sg" {
name = "tf_sg"
description = "tf_sg"
vpc_id = "${alicloud_vpc.default.id}"
}

resource "alicloud_security_group_rule" "http-in" {
type = "ingress"
ip_protocol = "tcp"
nic_type = "intranet"
policy = "accept"
port_range = "80/80"
priority = 1
security_group_id = "${alicloud_security_group.sg.id}"
cidr_ip = "0.0.0.0/0"
}

resource "alicloud_instance" "default" {
# cn-beijing
availability_zone = "${data.alicloud_zones.default.zones.0.id}"
security_groups = ["${alicloud_security_group.sg.id}"]

vswitch_id = "${alicloud_vswitch.default.id}"

# series II
instance_charge_type = "PostPaid"
instance_type = "${var.instance_type}"
internet_max_bandwidth_out = 0
io_optimized = "${var.io_optimized}"

system_disk_category = "cloud_efficiency"
image_id = "${var.image_id}"
instance_name = "tf_vpc_snat"
}
7 changes: 7 additions & 0 deletions examples/vpc-snat/ouputs.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
output "instance_id" {
value = "${alicloud_instance.default.id}"
}

output "bindwidth_package_ip" {
value = "${alicloud_nat_gateway.default.bandwidth_packages.0.public_ip_addresses}"
}
22 changes: 22 additions & 0 deletions examples/vpc-snat/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@

variable "vpc_cidr" {
default = "10.1.0.0/21"
}
variable "vswitch_cidr" {
default = "10.1.1.0/24"
}
variable "rule_policy" {
default = "accept"
}
variable "instance_type" {
default = "ecs.n1.small"
}
variable "image_id" {
default = "ubuntu_140405_64_40G_cloudinit_20161115.vhd"
}
variable "io_optimized" {
default = "optimized"
}
variable "disk_category"{
default = "cloud_efficiency"
}

0 comments on commit 1689f9a

Please sign in to comment.