Merge pull request #2396 from sathiyas/ex-add-aws-eip
AWS Terraform Example for eip
This commit is contained in:
commit
4828ae12e7
|
@ -0,0 +1,11 @@
|
|||
# Elastic IP Example
|
||||
|
||||
The eip example launches a web server, installs nginx. It also creates security group
|
||||
|
||||
To run, configure your AWS provider as described in https://www.terraform.io/docs/providers/aws/index.html
|
||||
|
||||
Running the example
|
||||
|
||||
run `terraform apply -var 'key_name={your_key_name}}'`
|
||||
|
||||
Give couple of mins for userdata to insatll nginx, and then type the Elastic IP from outputs in your browser and see the nginx welcome page
|
|
@ -0,0 +1,69 @@
|
|||
# Specify the provider and access details
|
||||
provider "aws" {
|
||||
region = "${var.aws_region}"
|
||||
}
|
||||
|
||||
resource "aws_eip" "default" {
|
||||
instance = "${aws_instance.web.id}"
|
||||
vpc = true
|
||||
}
|
||||
|
||||
# Our default security group to access
|
||||
# the instances over SSH and HTTP
|
||||
resource "aws_security_group" "default" {
|
||||
name = "eip_example"
|
||||
description = "Used in the terraform"
|
||||
|
||||
# SSH access from anywhere
|
||||
ingress {
|
||||
from_port = 22
|
||||
to_port = 22
|
||||
protocol = "tcp"
|
||||
cidr_blocks = ["0.0.0.0/0"]
|
||||
}
|
||||
|
||||
# HTTP access from anywhere
|
||||
ingress {
|
||||
from_port = 80
|
||||
to_port = 80
|
||||
protocol = "tcp"
|
||||
cidr_blocks = ["0.0.0.0/0"]
|
||||
}
|
||||
|
||||
# outbound internet access
|
||||
egress {
|
||||
from_port = 0
|
||||
to_port = 0
|
||||
protocol = "-1"
|
||||
cidr_blocks = ["0.0.0.0/0"]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
resource "aws_instance" "web" {
|
||||
instance_type = "t2.micro"
|
||||
|
||||
# Lookup the correct AMI based on the region
|
||||
# we specified
|
||||
ami = "${lookup(var.aws_amis, var.aws_region)}"
|
||||
|
||||
# The name of our SSH keypair you've created and downloaded
|
||||
# from the AWS console.
|
||||
#
|
||||
# https://console.aws.amazon.com/ec2/v2/home?region=us-west-2#KeyPairs:
|
||||
#
|
||||
key_name = "${var.key_name}"
|
||||
|
||||
# Our Security group to allow HTTP and SSH access
|
||||
security_groups = ["${aws_security_group.default.name}"]
|
||||
|
||||
# We run a remote provisioner on the instance after creating it.
|
||||
# In this case, we just install nginx and start it. By default,
|
||||
# this should be on port 80
|
||||
user_data = "${file("userdata.sh")}"
|
||||
#Instance tags
|
||||
tags {
|
||||
Name = "eip-example"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
output "address" {
|
||||
value = "${aws_instance.web.private_ip}"
|
||||
}
|
||||
output "elastic ip" {
|
||||
value = "${aws_eip.default.public_ip}"
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/bash -v
|
||||
apt-get update -y
|
||||
apt-get install -y nginx > /tmp/nginx.log
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
variable "aws_region" {
|
||||
description = "The AWS region to create things in."
|
||||
default = "us-east-1"
|
||||
}
|
||||
|
||||
# ubuntu-trusty-14.04 (x64)
|
||||
variable "aws_amis" {
|
||||
default = {
|
||||
"us-east-1" = "ami-5f709f34"
|
||||
"us-west-2" = "ami-7f675e4f"
|
||||
}
|
||||
}
|
||||
|
||||
variable "key_name" {
|
||||
description = "Name of the SSH keypair to use in AWS."
|
||||
}
|
||||
|
Loading…
Reference in New Issue