examples: Remove the consul example
This is now in the consul provider repository, linked from the README here.
This commit is contained in:
parent
583c24a3c2
commit
590bbe9b31
|
@ -21,4 +21,5 @@ repositories contain documentation specific to their provider:
|
||||||
* [Amazon Web Services Examples](https://github.com/terraform-providers/terraform-provider-aws/tree/master/examples)
|
* [Amazon Web Services Examples](https://github.com/terraform-providers/terraform-provider-aws/tree/master/examples)
|
||||||
* [Azure Examples](https://github.com/terraform-providers/terraform-provider-azurerm/tree/master/examples)
|
* [Azure Examples](https://github.com/terraform-providers/terraform-provider-azurerm/tree/master/examples)
|
||||||
* [CenturyLink Cloud Examples](https://github.com/terraform-providers/terraform-provider-clc/tree/master/examples)
|
* [CenturyLink Cloud Examples](https://github.com/terraform-providers/terraform-provider-clc/tree/master/examples)
|
||||||
|
* [Consul Examples](https://github.com/terraform-providers/terraform-provider-consul/tree/master/examples)
|
||||||
* [Google Cloud Examples](https://github.com/terraform-providers/terraform-provider-google/tree/master/examples)
|
* [Google Cloud Examples](https://github.com/terraform-providers/terraform-provider-google/tree/master/examples)
|
||||||
|
|
|
@ -1,49 +0,0 @@
|
||||||
# Consul Example
|
|
||||||
|
|
||||||
[Consul](http://www.consul.io) is a tool for service discovery, configuration
|
|
||||||
and orchestration. The Key/Value store it provides is often used to store
|
|
||||||
application configuration and information about the infrastructure necessary
|
|
||||||
to process requests.
|
|
||||||
|
|
||||||
Terraform provides a [Consul provider](https://www.terraform.io/docs/providers/consul/index.html) which
|
|
||||||
can be used to interface with Consul from inside a Terraform configuration.
|
|
||||||
|
|
||||||
For our example, we use the [Consul demo cluster](http://demo.consul.io)
|
|
||||||
to both read configuration and store information about a newly created EC2 instance.
|
|
||||||
The size of the EC2 instance will be determined by the "tf\_test/size" key in Consul,
|
|
||||||
and will default to "m1.small" if that key does not exist. Once the instance is created
|
|
||||||
the "tf\_test/id" and "tf\_test/public\_dns" keys will be set with the computed
|
|
||||||
values for the instance.
|
|
||||||
|
|
||||||
Before we run the example, use the [Web UI](http://demo.consul.io/ui/#/nyc1/kv/)
|
|
||||||
to set the "tf\_test/size" key to "t1.micro". Once that is done,
|
|
||||||
copy the configuration into a configuration file ("consul.tf" works fine).
|
|
||||||
Either provide the AWS credentials as a default value in the configuration
|
|
||||||
or invoke `apply` with the appropriate variables set.
|
|
||||||
|
|
||||||
Once the `apply` has completed, we can see the keys in Consul by
|
|
||||||
visiting the [Web UI](http://demo.consul.io/ui/#/nyc1/kv/). We can see
|
|
||||||
that the "tf\_test/id" and "tf\_test/public\_dns" values have been
|
|
||||||
set.
|
|
||||||
|
|
||||||
We can now teardown the infrastructure following the
|
|
||||||
[instructions here](https://www.terraform.io/intro/getting-started/destroy.html). Because
|
|
||||||
we set the 'delete' property of two of the Consul keys, Terraform
|
|
||||||
will cleanup those keys on destroy. We can verify this by using
|
|
||||||
the Web UI.
|
|
||||||
|
|
||||||
The point of this example is to show that Consul can be used with
|
|
||||||
Terraform both to enable dynamic inputs, but to also store outputs.
|
|
||||||
|
|
||||||
Inputs like AMI name, security groups, puppet roles, bootstrap scripts,
|
|
||||||
etc can all be loaded from Consul. This allows the specifics of an
|
|
||||||
infrastructure to be decoupled from its overall architecture. This enables
|
|
||||||
details to be changed without updating the Terraform configuration.
|
|
||||||
|
|
||||||
Outputs from Terraform can also be easily stored in Consul. One powerful
|
|
||||||
features this enables is using Consul for inventory management. If an
|
|
||||||
application relies on ELB for routing, Terraform can update the application's
|
|
||||||
configuration directly by setting the ELB address into Consul. Any resource
|
|
||||||
attribute can be stored in Consul, allowing an operator to capture anything
|
|
||||||
useful.
|
|
||||||
|
|
|
@ -1,44 +0,0 @@
|
||||||
# Setup the Consul provisioner to use the demo cluster
|
|
||||||
provider "consul" {
|
|
||||||
address = "demo.consul.io:80"
|
|
||||||
datacenter = "nyc1"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Setup an AWS provider
|
|
||||||
provider "aws" {
|
|
||||||
region = "${var.aws_region}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Setup a key in Consul to provide inputs
|
|
||||||
resource "consul_keys" "input" {
|
|
||||||
key {
|
|
||||||
name = "size"
|
|
||||||
path = "tf_test/size"
|
|
||||||
default = "m1.small"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Setup a new AWS instance using a dynamic ami and
|
|
||||||
# instance type
|
|
||||||
resource "aws_instance" "test" {
|
|
||||||
ami = "${lookup(var.aws_amis, var.aws_region)}"
|
|
||||||
instance_type = "${consul_keys.input.var.size}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Setup a key in Consul to store the instance id and
|
|
||||||
# the DNS name of the instance
|
|
||||||
resource "consul_keys" "test" {
|
|
||||||
key {
|
|
||||||
name = "id"
|
|
||||||
path = "tf_test/id"
|
|
||||||
value = "${aws_instance.test.id}"
|
|
||||||
delete = true
|
|
||||||
}
|
|
||||||
|
|
||||||
key {
|
|
||||||
name = "address"
|
|
||||||
path = "tf_test/public_dns"
|
|
||||||
value = "${aws_instance.test.public_dns}"
|
|
||||||
delete = true
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
variable "aws_region" {
|
|
||||||
description = "The AWS region to create resources in."
|
|
||||||
default = "us-east-1"
|
|
||||||
}
|
|
||||||
|
|
||||||
# AMI's from http://cloud-images.ubuntu.com/locator/ec2/
|
|
||||||
variable "aws_amis" {
|
|
||||||
default = {
|
|
||||||
eu-west-1 = "ami-b1cf19c6"
|
|
||||||
us-east-1 = "ami-de7ab6b6"
|
|
||||||
us-west-1 = "ami-3f75767a"
|
|
||||||
us-west-2 = "ami-21f78e11"
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue