79 lines
1.6 KiB
Markdown
79 lines
1.6 KiB
Markdown
---
|
|
layout: "intro"
|
|
page_title: "Count"
|
|
sidebar_current: "examples-count"
|
|
---
|
|
|
|
# Count Example
|
|
|
|
The count parameter on resources can simplify configurations
|
|
and let you scale resources by simply incrementing a number.
|
|
|
|
Additionally, variables can be used to expand a list of resources
|
|
for use elsewhere.
|
|
|
|
## Command
|
|
|
|
```
|
|
terraform apply \
|
|
-var 'aws_access_key=YOUR_ACCESS_KEY' \
|
|
-var 'aws_secret_key=YOUR_SECRET_KEY'
|
|
```
|
|
|
|
## Configuration
|
|
|
|
```
|
|
variable "aws_access_key" {}
|
|
variable "aws_secret_key" {}
|
|
variable "aws_region" {
|
|
default = "us-west-2"
|
|
}
|
|
|
|
# Ubuntu Precise 12.04 LTS (x64)
|
|
variable "aws_amis" {
|
|
default = {
|
|
"eu-west-1": "ami-b1cf19c6",
|
|
"us-east-1": "ami-de7ab6b6",
|
|
"us-west-1": "ami-3f75767a",
|
|
"us-west-2": "ami-21f78e11"
|
|
}
|
|
}
|
|
|
|
# Specify the provider and access details
|
|
provider "aws" {
|
|
access_key = "${var.aws_access_key}"
|
|
secret_key = "${var.aws_secret_key}"
|
|
region = "${var.aws_region}"
|
|
}
|
|
|
|
resource "aws_elb" "web" {
|
|
name = "terraform-example-elb"
|
|
|
|
# The same availability zone as our instances
|
|
availability_zones = ["${aws_instance.web.*.availability_zone}"]
|
|
|
|
listener {
|
|
instance_port = 80
|
|
instance_protocol = "http"
|
|
lb_port = 80
|
|
lb_protocol = "http"
|
|
}
|
|
|
|
# The instances are registered automatically
|
|
instances = ["${aws_instance.web.*.id}"]
|
|
}
|
|
|
|
|
|
resource "aws_instance" "web" {
|
|
instance_type = "m1.small"
|
|
ami = "${lookup(var.aws_amis, var.aws_region)}"
|
|
|
|
# This will create 4 instances
|
|
count = 4
|
|
}
|
|
|
|
output "address" {
|
|
value = "Instances: ${aws_instance.web.*.id}"
|
|
}
|
|
```
|