Slide 5
Slide 5 text
Provisioning: An Example
# ~/code/terraform/main.yml
resource "aws_instance" "ec2_instance" {
ami = "${var.ami_id}"
count = "${var.number_of_instances}"
subnet_id = "${var.subnet_id}"
instance_type = "${var.instance_type}" user_data = "${var.user_data}"
key_name = "${var.key_name}"
vpc_security_group_ids = ["${var.security_group_ids}"]
tags {
Name = "${var.instance_name}-${count.index}"
}
associate_public_ip_address = "${var.create_public_ip_address}“
provisioner “remote-exec” {
inline = [
“git clone $ANSIBLE_REPO /tmp/ansible”,
“ansible-playbook –i ${var.ansible_inventory} –vvv ${var.playbook}
]
}
}
$> cd ~/code/terraform
$> terraform plan –var-file ./environments/dev –var
number_of_instances=1000
$> terraform apply –var-file ./environments/dev –var
number_of_instances=1000
This is how you define an AWS EC2 instance
with Terraform. You can make your own
providers for nearly any server, networking
device, or other piece of infrastructure you
want to provision.
Boom. You’ve just deployed 1,000
development EC2 instances, all configured by
Ansible. Nice.
* Until it’s not. But it usually is.