Giter VIP home page Giter VIP logo

hashicorp / terraform Goto Github PK

View Code? Open in Web Editor NEW
41.2K 1.2K 9.3K 301.88 MB

Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.

Home Page: https://www.terraform.io/

License: Other

Makefile 0.02% Go 90.27% Shell 0.12% Dockerfile 0.01% HCL 0.22% MDX 9.36%
graph infrastructure-as-code terraform cloud cloud-management

terraform's Introduction

Terraform

Terraform

Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently. Terraform can manage existing and popular service providers as well as custom in-house solutions.

The key features of Terraform are:

  • Infrastructure as Code: Infrastructure is described using a high-level configuration syntax. This allows a blueprint of your datacenter to be versioned and treated as you would any other code. Additionally, infrastructure can be shared and re-used.

  • Execution Plans: Terraform has a "planning" step where it generates an execution plan. The execution plan shows what Terraform will do when you call apply. This lets you avoid any surprises when Terraform manipulates infrastructure.

  • Resource Graph: Terraform builds a graph of all your resources, and parallelizes the creation and modification of any non-dependent resources. Because of this, Terraform builds infrastructure as efficiently as possible, and operators get insight into dependencies in their infrastructure.

  • Change Automation: Complex changesets can be applied to your infrastructure with minimal human interaction. With the previously mentioned execution plan and resource graph, you know exactly what Terraform will change and in what order, avoiding many possible human errors.

For more information, refer to the What is Terraform? page on the Terraform website.

Getting Started & Documentation

Documentation is available on the Terraform website:

If you're new to Terraform and want to get started creating infrastructure, please check out our Getting Started guides on HashiCorp's learning platform. There are also additional guides to continue your learning.

Show off your Terraform knowledge by passing a certification exam. Visit the certification page for information about exams and find study materials on HashiCorp's learning platform.

Developing Terraform

This repository contains only Terraform core, which includes the command line interface and the main graph engine. Providers are implemented as plugins, and Terraform can automatically download providers that are published on the Terraform Registry. HashiCorp develops some providers, and others are developed by other organizations. For more information, see Extending Terraform.

License

Business Source License 1.1

terraform's People

Contributors

alisdair avatar apparentlymart avatar armon avatar bflad avatar catsby avatar cgriggs01 avatar crw avatar danawillow avatar gdavison avatar grubernaut avatar jasoncostello avatar jbardin avatar jen20 avatar jtopjian avatar kmoe avatar laurapacilio avatar liamcervante avatar mildwonkey avatar mitchellh avatar nfagerlund avatar paddycarver avatar pearkes avatar phinze avatar pselle avatar radeksimko avatar sean- avatar sethvargo avatar stack72 avatar tombuildsstuff avatar vancluever avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

terraform's Issues

Race condition in several tests (order dependent)

There is a race condition in graphviz test: https://github.com/hashicorp/terraform/blob/master/digraph/graphviz_test.go#L15-L18 .

This is caused by the fact that map keys in Go are randomized in order on iteration. Because TestWriteDot is testing against a constant string, it fails every time the order is different than how it was inserted. (eg. node "b" might be first or even "e")

Reference: http://blog.golang.org/go-maps-in-action "Since Go 1 the runtime randomizes map iteration order..."

This race also exists in config/merge_test.go and config/append_test.go because of the way that unknownKeys is being handled in maps before iterating to array and then diffing.

https://github.com/hashicorp/terraform/blob/master/config/merge.go#L12-L21
https://github.com/hashicorp/terraform/blob/master/config/append.go#L16-L25

Add iterator to create multiple similar resources

It's common to need to create multiple similar resources. It would be great if there were to be a way of iterating through an array or group of arrays, creating a resource for each item.

An example might be creating subnets in AWS VPC. Right now my declaration looks like this:

resource "aws_subnet" "igw-subnet-eu-west-1a" {
    vpc_id = "${aws_vpc.eu-west-1.id}"
    availability_zone = "eu-west-1a"
    cidr_block = "192.168.192.0/24"
}

resource "aws_subnet" "igw-subnet-eu-west-1b" {
    vpc_id = "${aws_vpc.eu-west-1.id}"
    availability_zone = "eu-west-1b"
    cidr_block = "192.168.193.0/24"
}

resource "aws_subnet" "igw-subnet-eu-west-1c" {
    vpc_id = "${aws_vpc.eu-west-1.id}"
    availability_zone = "eu-west-1c"
    cidr_block = "192.168.194.0/24"
}

With an iterator, maybe this could be compressed to something like:

variable subnets {
    zones = [ "eu-west-1a", "eu-west-1b", "eu-west-1c" ],
    blocks = [ "192.168.192.0/24", "192.168.193.0/24", "192.168.194.0/24" ]
}

resource "aws_subnet" "igw-subnet-${foreach(subnets,zones)}" {
    vpc_id = "${aws_vpc.eu-west-1.id}"
    availability_zone = "${foreach(subnets,zones)}"
    cidr_block = "${foreach(subnets,blocks)}"
}

Creation dependencies

Sometimes, there's a dependency that happens during creation.

Here's an example:

resource "heroku_app" "foobar" {
    name = "terraform-test-app"

    config_vars {
        foo = "bar"
    }
}

resource "heroku_addon" "papertrail" {
    app = "${heroku_app.foobar.name}"
    plan = "papertrail:choklad"
}

output "url" {
    value = "${heroku_addon.foobar.config_vars.0}=${heroku_app.foobar.config_vars.0.PAPERTRAIL_API_TOKEN}"
}

The papertrail addon needs to be created after the app due to the app attribute. But, the output (which looks at the app) needs to see a new app state after the addon has been created.

In a perfect world, the heroku_app is refreshed after the addon is created.

Connect to existing resources not created through terraform

I'm wondering if there's a supported way to bootstrap the state file in an existing environment. I'm imagining basically a terraform apply --noop that still outputs a state file as if it had succeeded so that the next terraform plan would show no changes but future changes could be made via terraform. I guess it'd need a way to associate the existing instance ids with the noop-created instances.

Curious if anything like this exists or is in the works.

Support for OpenStack

Heat is mentioned in the docs as an analog to Terraform, but I don't see OpenStack listed as a provider. Are there plans for this support?

Windows download contains all files twice

After unpacking the ZIP file there are all executeables in the root directory and in a directory named bin. Is that on purpose? Looks like they're the same files.

Issue creating security group (Handle Sets)

After I created this security group

resource "aws_security_group" "cluster-member" {
  vpc_id = "${aws_vpc.deis.id}"
  name = "cluster-member"
  description = "cluster-member"
  ingress {
    cidr_blocks = ["0.0.0.0/0"]
    protocol = "tcp"
    from_port = 22
    to_port = 22
  }
  ingress {
    security_groups = ["${aws_security_group.cluster-balancer.id}"]
    protocol = "tcp"
    from_port = 80
    to_port = 80
  }
  ingress {
    security_groups = ["${aws_security_group.cluster-balancer.id}"]
    protocol = "tcp"
    from_port = 2222
    to_port = 2222
  }
}

I see this output from terraform plan:

~ aws_security_group.cluster-member
    ingress.1.cidr_blocks.#: "0" => ""
    ingress.2.cidr_blocks.#: "0" => ""

And terraform apply fails with this message:

* Resource type 'aws_security_group' doesn't support update

Encrypted SSH Keys

When using key_file to choose which key to use for connection / provisioning on SSH I used a key that was encrypted and the error message was very... cryptic. (pun intended).

Reference: https://code.google.com/p/go/issues/detail?id=6650

Excerpt

ParsePrivateKey fails with an error like this:

asn1: structure error: tags don't match (16 vs {class:1 tag:28 length:11 > isCompound:true}) {optional:false explicit:false application:false defaultValue: tag: > stringType:0 set:false omitEmpty:false} pkcs1PrivateKey

ELB health check defaults to TCP

I've created an ELB instance with the following settings:

 listener {                                                                                                                                                                    
    instance_port = 80                                                                                                                                                        
    instance_protocol = "http"                                                                                                                                                  
    lb_port = 80                                                                                                                                                              
    lb_protocol = "http"                                                                                                                                                        
}

When the ELB is created, the service check of the load balancer defaults to TCP:80. Is there any reason that it isn't HTTP:80/? Maybe this should be configurable?

Thanks!

Physical machine and network switches provider documentation missing

Browsing through the documentation I can't find anywhere explained how the physical machine and network switches deployments are being done.

For example here: http://www.terraform.io/docs/providers/index.html

[...] Examples of resources include physical machines, VMs, network switches, containers, etc. [...]

But there is no section for physical machines nor network switches in the list of providers.

Is it not available yet or am I looking in the wrong places?

Thank you.

Add Papertrail provider

If I get some time I might implement this. It would be great to be able to add Papertrail systems and be able to add them as drains on a heroku app.

/cc @leonsodhi

Panic creating AWS security group

Trying to create this security group results in a panic.

resource "aws_security_group" "cluster-member" {
  vpc_id = "${aws_vpc.deis.id}"
  name = "cluster-member"
  description = "cluster-member"
  ingress {
    cidr_blocks = ["0.0.0.0/0"]
    protocol = "tcp"
    from_port = 22
    to_port = 22
  }
  ingress {
    security_groups = ["${aws_security_group.cluster-balancer.id}"]
    protocol = "tcp"
    from_port = 80
    to_port = 80
  }
  ingress {
    security_groups = ["${aws_security_group.cluster-balancer.id}"]
    protocol = "tcp"
    from_port = 2222
    to_port = 2222
  }
}
panic: interface conversion: interface is nil, not []interface {}
2014/07/29 09:28:46 terraform-provider-aws:
2014/07/29 09:28:46 terraform-provider-aws: goroutine 32 [running]:
2014/07/29 09:28:46 terraform-provider-aws: runtime.panic(0x444b9c0, 0xc2082b1340)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/runtime/panic.c:279 +0xf5
2014/07/29 09:28:46 terraform-provider-aws: github.com/hashicorp/terraform/builtin/providers/aws.expandIPPerms(0xc20833a900, 0x3, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0)
2014/07/29 09:28:46 terraform-provider-aws:     /Users/david/Code/go/src/github.com/hashicorp/terraform/builtin/providers/aws/structure.go:76 +0x6c0
2014/07/29 09:28:46 terraform-provider-aws: github.com/hashicorp/terraform/builtin/providers/aws.resource_aws_security_group_create(0xc2080198b0, 0xc2080c28a0, 0x44955c0, 0xc2080042a0, 0xc2080136f0, 0x0, 0x0)
2014/07/29 09:28:46 terraform-provider-aws:     /Users/david/Code/go/src/github.com/hashicorp/terraform/builtin/providers/aws/resource_aws_security_group.go:70 +0x9b2
2014/07/29 09:28:46 terraform-provider-aws: github.com/hashicorp/terraform/helper/resource.(*Map).Apply(0xc208036068, 0xc2080198b0, 0xc2080c28a0, 0x44955c0, 0xc2080042a0, 0x0, 0x0, 0x0)
2014/07/29 09:28:46 terraform-provider-aws:     /Users/david/Code/go/src/github.com/hashicorp/terraform/helper/resource/map.go:63 +0x22a
2014/07/29 09:28:46 terraform-provider-aws: github.com/hashicorp/terraform/builtin/providers/aws.(*ResourceProvider).Apply(0xc2080042a0, 0xc2080198b0, 0xc2080c28a0, 0x4877a30, 0x0, 0x0)
2014/07/29 09:28:46 terraform-provider-aws:     /Users/david/Code/go/src/github.com/hashicorp/terraform/builtin/providers/aws/resource_provider.go:107 +0x71
2014/07/29 09:28:46 terraform-provider-aws: github.com/hashicorp/terraform/rpc.(*ResourceProviderServer).Apply(0xc208000de0, 0xc2080c41b0, 0xc2080c4bc0, 0x0, 0x0)
2014/07/29 09:28:46 terraform-provider-aws:     /Users/david/Code/go/src/github.com/hashicorp/terraform/rpc/resource_provider.go:237 +0x6e
2014/07/29 09:28:46 terraform-provider-aws: reflect.Value.call(0x4407440, 0x4495b98, 0x0, 0x130, 0x44c88b0, 0x4, 0xc208004f60, 0x3, 0x3, 0x0, ...)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/reflect/value.go:563 +0x1210
2014/07/29 09:28:46 terraform-provider-aws: reflect.Value.Call(0x4407440, 0x4495b98, 0x0, 0x130, 0xc208004f60, 0x3, 0x3, 0x0, 0x0, 0x0)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/reflect/value.go:411 +0xd7
2014/07/29 09:28:46 terraform-provider-aws: net/rpc.(*service).call(0xc208019040, 0xc208035840, 0xc208000e48, 0xc20804a090, 0xc208043440, 0x43673e0, 0xc2080c41b0, 0x0, 0x160, 0x4367440, ...)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/net/rpc/server.go:382 +0x1c7
2014/07/29 09:28:46 terraform-provider-aws: created by net/rpc.(*Server).ServeCodec
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/net/rpc/server.go:453 +0x427
2014/07/29 09:28:46 terraform-provider-aws:
2014/07/29 09:28:46 terraform-provider-aws: goroutine 16 [IO wait]:
2014/07/29 09:28:46 terraform-provider-aws: net.runtime_pollWait(0x4823b18, 0x72, 0x0)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/runtime/netpoll.goc:146 +0x66
2014/07/29 09:28:46 terraform-provider-aws: net.(*pollDesc).Wait(0xc20802a300, 0x72, 0x0, 0x0)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/net/fd_poll_runtime.go:84 +0x46
2014/07/29 09:28:46 terraform-provider-aws: net.(*pollDesc).WaitRead(0xc20802a300, 0x0, 0x0)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/net/fd_poll_runtime.go:89 +0x42
2014/07/29 09:28:46 terraform-provider-aws: net.(*netFD).Read(0xc20802a2a0, 0xc2080a6000, 0x1000, 0x1000, 0x0, 0x4822528, 0x23)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/net/fd_unix.go:232 +0x34c
2014/07/29 09:28:46 terraform-provider-aws: net.(*conn).Read(0xc208036078, 0xc2080a6000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/net/net.go:122 +0xe7
2014/07/29 09:28:46 terraform-provider-aws: bufio.(*Reader).fill(0xc208004420)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/bufio/bufio.go:97 +0x1b3
2014/07/29 09:28:46 terraform-provider-aws: bufio.(*Reader).Read(0xc208004420, 0xc208000ee0, 0x1, 0x9, 0x1, 0x0, 0x0)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/bufio/bufio.go:175 +0x230
2014/07/29 09:28:46 terraform-provider-aws: io.ReadAtLeast(0x4823db0, 0xc208004420, 0xc208000ee0, 0x1, 0x9, 0x1, 0x0, 0x0, 0x0)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/io/io.go:289 +0xf7
2014/07/29 09:28:46 terraform-provider-aws: io.ReadFull(0x4823db0, 0xc208004420, 0xc208000ee0, 0x1, 0x9, 0x0, 0x0, 0x0)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/io/io.go:307 +0x71
2014/07/29 09:28:46 terraform-provider-aws: encoding/gob.decodeUintReader(0x4823db0, 0xc208004420, 0xc208000ee0, 0x9, 0x9, 0x0, 0x1, 0x0, 0x0)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/encoding/gob/decode.go:66 +0xa6
2014/07/29 09:28:46 terraform-provider-aws: encoding/gob.(*Decoder).recvMessage(0xc2080a4000, 0xc208036930)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/encoding/gob/decoder.go:73 +0x57
2014/07/29 09:28:46 terraform-provider-aws: encoding/gob.(*Decoder).decodeTypeSequence(0xc2080a4000, 0xc208042f00, 0x0)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/encoding/gob/decoder.go:159 +0x49
2014/07/29 09:28:46 terraform-provider-aws: encoding/gob.(*Decoder).DecodeValue(0xc2080a4000, 0x4370e00, 0xc208042f00, 0x0, 0x160, 0x0, 0x0)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/encoding/gob/decoder.go:227 +0x193
2014/07/29 09:28:46 terraform-provider-aws: encoding/gob.(*Decoder).Decode(0xc2080a4000, 0x4370e00, 0xc208042f00, 0x0, 0x0)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/encoding/gob/decoder.go:204 +0x279
2014/07/29 09:28:46 terraform-provider-aws: net/rpc.(*gobServerCodec).ReadRequestHeader(0xc208025e30, 0xc208042f00, 0x0, 0x0)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/net/rpc/server.go:401 +0x5b
2014/07/29 09:28:46 terraform-provider-aws: net/rpc.(*Server).readRequestHeader(0xc208035840, 0x4823e00, 0xc208025e30, 0x0, 0x0, 0xc208042f00, 0x45c2a00, 0x0, 0x0)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/net/rpc/server.go:552 +0x9b
2014/07/29 09:28:46 terraform-provider-aws: net/rpc.(*Server).readRequest(0xc208035840, 0x4823e00, 0xc208025e30, 0xc20804a090, 0xc208043440, 0x43673e0, 0x0, 0x0, 0x0, 0x0, ...)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/net/rpc/server.go:519 +0xbe
2014/07/29 09:28:46 terraform-provider-aws: net/rpc.(*Server).ServeCodec(0xc208035840, 0x4823e00, 0xc208025e30)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/net/rpc/server.go:438 +0x69
2014/07/29 09:28:46 terraform-provider-aws: net/rpc.(*Server).ServeConn(0xc208035840, 0x4823d00, 0xc208036078)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/net/rpc/server.go:430 +0x170
2014/07/29 09:28:46 terraform-provider-aws: github.com/hashicorp/terraform/plugin.Serve(0x44955c0, 0xc2080042a0, 0x0, 0x0)
2014/07/29 09:28:46 terraform-provider-aws:     /Users/david/Code/go/src/github.com/hashicorp/terraform/plugin/server.go:88 +0x9b6
2014/07/29 09:28:46 terraform-provider-aws: main.main()
2014/07/29 09:28:46 terraform-provider-aws:     /Users/david/Code/go/src/github.com/hashicorp/terraform/builtin/bins/provider-aws/main.go:9 +0x48
2014/07/29 09:28:46 terraform-provider-aws:
2014/07/29 09:28:46 terraform-provider-aws: goroutine 19 [finalizer wait]:
2014/07/29 09:28:46 terraform-provider-aws: runtime.park(0x4014030, 0x4743358, 0x4741dc9)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/runtime/proc.c:1369 +0x89
2014/07/29 09:28:46 terraform-provider-aws: runtime.parkunlock(0x4743358, 0x4741dc9)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/runtime/proc.c:1385 +0x3b
2014/07/29 09:28:46 terraform-provider-aws: runfinq()
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/runtime/mgc0.c:2644 +0xcf
2014/07/29 09:28:46 terraform-provider-aws: runtime.goexit()
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/runtime/proc.c:1445
2014/07/29 09:28:46 terraform-provider-aws:
2014/07/29 09:28:46 terraform-provider-aws: goroutine 20 [syscall]:
2014/07/29 09:28:46 terraform-provider-aws: os/signal.loop()
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/os/signal/signal_unix.go:21 +0x1e
2014/07/29 09:28:46 terraform-provider-aws: created by os/signal.init·1
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/os/signal/signal_unix.go:27 +0x32
2014/07/29 09:28:46 terraform-provider-aws:
2014/07/29 09:28:46 terraform-provider-aws: goroutine 22 [chan receive]:
2014/07/29 09:28:46 terraform-provider-aws: github.com/hashicorp/terraform/plugin.func·009()
2014/07/29 09:28:46 terraform-provider-aws:     /Users/david/Code/go/src/github.com/hashicorp/terraform/plugin/server.go:78 +0x62
2014/07/29 09:28:46 terraform-provider-aws: created by github.com/hashicorp/terraform/plugin.Serve
2014/07/29 09:28:46 terraform-provider-aws:     /Users/david/Code/go/src/github.com/hashicorp/terraform/plugin/server.go:84 +0x8b8
2014/07/29 09:28:46 terraform-provider-aws:
2014/07/29 09:28:46 terraform-provider-aws: goroutine 33 [syscall]:
2014/07/29 09:28:46 terraform-provider-aws: runtime.goexit()
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/runtime/proc.c:1445
2014/07/29 09:28:46 terraform-provider-aws:
2014/07/29 09:28:46 terraform-provider-aws: goroutine 50 [runnable]:
2014/07/29 09:28:46 terraform-provider-aws: net/http.(*persistConn).writeLoop(0xc2082362c0)
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/net/http/transport.go:885 +0x38f
2014/07/29 09:28:46 terraform-provider-aws: created by net/http.(*Transport).dialConn
2014/07/29 09:28:46 terraform-provider-aws:     /usr/local/Cellar/go/1.3/libexec/src/pkg/net/http/transport.go:601 +0x957
2014/07/29 09:28:46 [ERROR] Error walking 'aws_security_group.cluster-member': 1 error(s) occurred:

* unexpected EOF
2014/07/29 09:28:46 [INFO] Apply walk complete
2014/07/29 09:28:46 [DEBUG] /Users/david/Code/go/bin/terraform-provider-aws: plugin process exited
2014/07/29 09:28:46 waiting for all plugin processes to complete...
2014/07/29 09:28:46 [DEBUG] /Users/david/Code/go/bin/terraform-provider-aws: plugin process exited
2014/07/29 09:28:46 [DEBUG] /Users/david/Code/go/bin/terraform-provider-aws: plugin process exited
2014/07/29 09:28:46 [DEBUG] /Users/david/Code/go/bin/terraform-provider-aws: plugin process exited

Adding a provision block to an existing server doesn't work

I had the following resource:

resource "digitalocean_droplet" "test" {
    image = "ubuntu-14-04-x64"
    name = "test"
    region = "sfo1"
    size = "512mb"
    ipv6 = true
    ssh_keys = [ "fingerprint" ]
}

After running terraform apply, I then added:

provisioner "remote-exec" {
  script = "provision.sh"
}

Running terraform apply again didn't result in the provisioner executing.

Destroying(commenting briefly) and recreating the resource, resulted in the provisioner running as expected on the new instance.

EIP in EC2-VPC wrong value assumed

According to the documentation at http://www.terraform.io/docs/providers/aws/r/eip.html, the following code that is present in file: builtin/providers/aws/resource_aws_eip.go, in commit: ebd50ab assumes the wrong type of value:

if rs.Attributes["vpc"] == "true" {
       vpc = true
       domainOpt = "vpc"
}

From the documentation, rs.Attributes["vpc"] should be the VPC ID from AWS and not a boolean value. Running the code as is with the VPC ID from AWS throws the following error:

1 error(s) occurred:
* Failure associating instances: You must specify an allocation id when mapping an address to a VPC instance (InvalidParameterCombination)

Changing the value to "true" in my .tf file fixes the problem, but that is not consistent with the documentation.

Also the example in the documentation should use ${aws_instance.web.id} instead of ${aws_instance.web.instance_id}.

I see there has been pretty recent work on this file, so maybe the documentation will change between now and the finished tool. But as it stands either the documentation or the code should be changed.

.tfvars file doesn't seem to be loaded by default

According to the documentation, a file with the extension .tfvars should be loaded automatically. However, in practice this doesn't seem to be occurring for me.

I have a terraform.tfvars file with the following contents:

access_key = "myaccesskey"
secret_key = "mysecretkey"

However, running terraform plan doesn't seem to include those variables:

$ terraform plan
There are warnings and/or errors related to your configuration. Please
fix these before continuing.

Errors:

  * Required variable not set: access_key
  * Required variable not set: secret_key

Running terraform plan -var-file=terraform.tfvars, however, does work:

$ terraform plan -var-file=terraform.tfvars
Refreshing Terraform state prior to plan...


No changes. Infrastructure is up-to-date. This means that Terraform
could not detect any differences between your configuration and
the real physical resources that exist. As a result, Terraform
doesn't need to do anything.

Am I missing something?

RDS engine version ignored

When I setup my RDS instance as below I end up with an instance running MySQL 5.6.x rather than the 5.5.27 I requested. I checked and I can manually create an instance using this MySQL version fine.

resource "aws_db_instance" "default" {
    identifier = "mydb-terraform-rds"
    allocated_storage = 20
    engine = "mysql"
    engine_version = "5.5.27"
    instance_class = "db.m1.small"
    name = "dbname"
    username = "dbuser"
    password = "apassword"
    security_group_names = ["${aws_db_security_group.default.name}"]
    multi_az = true
    backup_retention_period = 7
    backup_window = "03:30-04:30"
    skip_final_snapshot = true
}

Option to output to stdout while provisioning

Hey Terraform Team,

So I've been playing with Terraform and used it to setup a Digital Ocean droplet with simple installation of GemInABox on it to have a personal gem server. One thing that threw me was that since ruby takes half a century to compile I became concerned and logged into the box manually and did a ps aux. It would be nice to see what provisioning is currently doing and maybe even some timer output.

Digital Ocean provider replaces public ip address with the private one if private_networking enabled

Given the following configuration

resource "digitalocean_droplet" "webtest" {
  image = "centos-6-5-x64"
  name = "webtest-1"
  region = "nyc2"
  size = "512mb"
  private_networking = true
  ssh_keys = ["${var.ssh_signature}"]

  provisioner "local-exec" {
    command = "cd .. && knife solo prepare root@${digitalocean_droplet.webtest.ipv4_address} nodes/web-production.json"
  }
  provisioner "local-exec" {
    command = "cd .. && knife solo cook root@${digitalocean_droplet.webtest.ipv4_address} nodes/web-production.json"
  }
}

I expect it to provision using connection root@public-ip, but in fact by enabling private_networking, it changes to be the private key, so not able to SSH in.

Error on changing AWS resource AMI ID

Hello,

I noticed an error when I run an "apply" after changing an AWS resource's AMI ID. I started out with:

provider "aws" {
  access_key = "xxxxxx"
  secret_key = "xxxxxx"
  region = "us-east-1"
}

resource "aws_instance" "example" {
  ami = "ami-408c7f28"
  instance_type = "t1.micro"
}

and created an AWS instance. After modifying the AMI id:

resource "aws_instance" "example" {
  ami = "ami-aa7ab6c2"
  instance_type = "t1.micro"
}

when I ran apply, I got this error:

aws_instance.example: Destroying...
aws_instance.example: Destruction complete
aws_instance.example: Modifying...
  ami: "ami-408c7f28" => "ami-aa7ab6c2"
aws_instance.example: Error: Error launching source instance: The parameter groupName cannot be used with the parameter subnet (InvalidParameterCombination)
Error applying plan:

1 error(s) occurred:

* Error launching source instance: The parameter groupName cannot be used with the parameter subnet (InvalidParameterCombination)

I have not specified groupName or subnet anywhere so I am guessing there is some problem with the defaults. Or maybe, the error message needs to be corrected?

AWS Provider: Invalid CIDR boundary seems to succeed, then fails on next update

I messed up and specified an incorrect CIDR range for my VPC: 192.168.200.0/19. I should of course have specified 192.168.192.0/19.

When I ran apply, everything seemed to create fine, but immediately specifying plan after running the update showed the VPC would be deleted - AWS had created a VPC with the correct CIDR block, but the tfstate didn't reflect this. Running the apply to see what would happen the update failed - it tried to delete the VPC, but with subnets still inside it.

Perhaps the easiest way to solve would be to check cidr_block statements are on valid boundaries?

Store arrays in variables

I have lists of security groups and or lists of ec2 instances that i would like to to keep in arrays ( separated by files which are auto loaded by *.tf ) so i know when i change things in one place, it gets changed in another.

Right now vars can only hold strings or key value maps, but not arrays (if i am reading the docs and error messages correctly)

Environment variables in .tf files

Hey! This is a very cool project.

I browsed all over the documentation and couldn't find a way to interpolate environment variables in a configuration file. Is this possible?

AWS security group error

Been enjoying playing with this today. Only one snag so far - it doesn't seem to like me setting the 'security groups' attr of the aws_securityy_group -> ingress. Works fine with cidr_blocks though

My .tf

provider "aws" {
    access_key = "${var.access_key}"
    secret_key = "${var.secret_key}"
    region = "${var.region}"
}

resource "aws_security_group" "coreos-terraform" {
    name = "coreos-terraform"
    description = "coreos terraform description"
    ingress {
        from_port = 22
        to_port = 22
        protocol = "tcp"
        cidr_blocks = ["0.0.0.0/0"]
    }
    ingress {
        from_port = 4001
        to_port = 7001
        protocol = "tcp"
        security_groups = ["sg-a4b9001"]
    }
}

And the log created:

2014/07/29 16:04:29 [DEBUG] Creating graph...
2014/07/29 16:04:29 [DEBUG] Starting plugin: /etc/terraform/terraform-provider-aws []string{"/etc/terraform/terraform-provider-aws"}
2014/07/29 16:04:29 [DEBUG] Waiting for RPC address for: /etc/terraform/terraform-provider-aws
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 Plugin address: unix /tmp/tf-plugin334779785
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 Waiting for connection...
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 Serving a plugin connection...
2014/07/29 16:04:29 [DEBUG] Graph created and valid. 3 nouns.
2014/07/29 16:04:29 [INFO] Validating provider: aws
2014/07/29 16:04:29 [INFO] Validating resource: aws_security_group.coreos-terraform
2014/07/29 16:04:29 [INFO] Writing backup state to: terraform.tfstate.backup
2014/07/29 16:04:29 [DEBUG] Creating graph...
2014/07/29 16:04:29 [DEBUG] Starting plugin: /etc/terraform/terraform-provider-aws []string{"/etc/terraform/terraform-provider-aws"}
2014/07/29 16:04:29 [DEBUG] Waiting for RPC address for: /etc/terraform/terraform-provider-aws
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 Plugin address: unix /tmp/tf-plugin004221541
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 Waiting for connection...
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 Serving a plugin connection...
2014/07/29 16:04:29 [DEBUG] Graph created and valid. 3 nouns.
2014/07/29 16:04:29 [INFO] Configuring provider: aws
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Building AWS auth structure
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Building AWS region structure
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Initializing EC2 connection
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Initializing ELB connection
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Initializing AutoScaling connection
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Initializing S3 connection
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Initializing RDS connection
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Initializing Route53 connection
2014/07/29 16:04:29 [INFO] Walking: aws_security_group.coreos-terraform (Graph node: aws_security_group.coreos-terraform)
2014/07/29 16:04:29 [DEBUG] Creating graph...
2014/07/29 16:04:29 [DEBUG] Starting plugin: /etc/terraform/terraform-provider-aws []string{"/etc/terraform/terraform-provider-aws"}
2014/07/29 16:04:29 [DEBUG] Waiting for RPC address for: /etc/terraform/terraform-provider-aws
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 Plugin address: unix /tmp/tf-plugin427491718
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 Waiting for connection...
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 Serving a plugin connection...
2014/07/29 16:04:29 [DEBUG] Graph created and valid. 3 nouns.
2014/07/29 16:04:29 [INFO] Configuring provider: aws
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Building AWS auth structure
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Building AWS region structure
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Initializing EC2 connection
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Initializing ELB connection
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Initializing AutoScaling connection
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Initializing S3 connection
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Initializing RDS connection
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Initializing Route53 connection
2014/07/29 16:04:29 [INFO] Walking: aws_security_group.coreos-terraform (Graph node: aws_security_group.coreos-terraform)
2014/07/29 16:04:29 [DEBUG] aws_security_group.coreos-terraform: Executing diff
2014/07/29 16:04:29 [DEBUG] Creating graph...
2014/07/29 16:04:29 [DEBUG] Starting plugin: /etc/terraform/terraform-provider-aws []string{"/etc/terraform/terraform-provider-aws"}
2014/07/29 16:04:29 [DEBUG] Waiting for RPC address for: /etc/terraform/terraform-provider-aws
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 Plugin address: unix /tmp/tf-plugin139824041
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 Waiting for connection...
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 Serving a plugin connection...
2014/07/29 16:04:29 [DEBUG] Graph created and valid. 3 nouns.
2014/07/29 16:04:29 [INFO] Apply walk starting
2014/07/29 16:04:29 [INFO] Configuring provider: aws
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Building AWS auth structure
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Building AWS region structure
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Initializing EC2 connection
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Initializing ELB connection
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Initializing AutoScaling connection
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Initializing S3 connection
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Initializing RDS connection
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Initializing Route53 connection
2014/07/29 16:04:29 [INFO] Walking: aws_security_group.coreos-terraform (Graph node: aws_security_group.coreos-terraform)
2014/07/29 16:04:29 [DEBUG] aws_security_group.coreos-terraform: Executing Apply
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [DEBUG] Security Group create configuration: ec2.SecurityGroup{Id:"", Name:"coreos-terraform", Description:"coreos terraform description", VpcId:""}
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [INFO] Security Group ID: sg-519f4334
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [DEBUG] Waiting for SG () to exist
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [DEBUG] Waiting for state to become: exists
2014/07/29 16:04:29 terraform-provider-aws: 2014/07/29 16:04:29 [TRACE] Waiting 100ms before next try
2014/07/29 16:04:31 terraform-provider-aws: panic: interface conversion: interface is nil, not []interface {}
2014/07/29 16:04:31 terraform-provider-aws: 
2014/07/29 16:04:31 terraform-provider-aws: goroutine 26 [running]:
2014/07/29 16:04:31 terraform-provider-aws: runtime.panic(0x84b0a0, 0xc208133b80)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/runtime/panic.c:279 +0xf5
2014/07/29 16:04:31 terraform-provider-aws: github.com/hashicorp/terraform/builtin/providers/aws.expandIPPerms(0xc2081b9d40, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/gopath/src/github.com/hashicorp/terraform/builtin/providers/aws/structure.go:76 +0x6c0
2014/07/29 16:04:31 terraform-provider-aws: github.com/hashicorp/terraform/builtin/providers/aws.resource_aws_security_group_create(0xc2080175e0, 0xc2080b7fc0, 0x895220, 0xc2080042a0, 0xc208013750, 0x0, 0x0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/gopath/src/github.com/hashicorp/terraform/builtin/providers/aws/resource_aws_security_group.go:70 +0x9b2
2014/07/29 16:04:31 terraform-provider-aws: github.com/hashicorp/terraform/helper/resource.(*Map).Apply(0xc20803a068, 0xc2080175e0, 0xc2080b7fc0, 0x895220, 0xc2080042a0, 0x0, 0x0, 0x0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/gopath/src/github.com/hashicorp/terraform/helper/resource/map.go:63 +0x22a
2014/07/29 16:04:31 terraform-provider-aws: github.com/hashicorp/terraform/builtin/providers/aws.(*ResourceProvider).Apply(0xc2080042a0, 0xc2080175e0, 0xc2080b7fc0, 0x7f13452c4a30, 0x0, 0x0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/gopath/src/github.com/hashicorp/terraform/builtin/providers/aws/resource_provider.go:107 +0x71
2014/07/29 16:04:31 terraform-provider-aws: github.com/hashicorp/terraform/rpc.(*ResourceProviderServer).Apply(0xc208000de0, 0xc2080b98f0, 0xc2080cc0a0, 0x0, 0x0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/gopath/src/github.com/hashicorp/terraform/rpc/resource_provider.go:237 +0x6e
2014/07/29 16:04:31 terraform-provider-aws: reflect.Value.call(0x806c40, 0x8957f8, 0x0, 0x130, 0x8c73d0, 0x4, 0xc208004cc0, 0x3, 0x3, 0x0, ...)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/reflect/value.go:563 +0x1210
2014/07/29 16:04:31 terraform-provider-aws: reflect.Value.Call(0x806c40, 0x8957f8, 0x0, 0x130, 0xc208004cc0, 0x3, 0x3, 0x0, 0x0, 0x0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/reflect/value.go:411 +0xd7
2014/07/29 16:04:31 terraform-provider-aws: net/rpc.(*service).call(0xc208017040, 0xc208045800, 0xc208000f10, 0xc208048090, 0xc208039520, 0x767420, 0xc2080b98f0, 0x0, 0x160, 0x767480, ...)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/net/rpc/server.go:382 +0x1c7
2014/07/29 16:04:31 terraform-provider-aws: created by net/rpc.(*Server).ServeCodec
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/net/rpc/server.go:453 +0x427
2014/07/29 16:04:31 terraform-provider-aws: 
2014/07/29 16:04:31 terraform-provider-aws: goroutine 16 [IO wait]:
2014/07/29 16:04:31 terraform-provider-aws: net.runtime_pollWait(0x7f1345440b40, 0x72, 0x0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/runtime/netpoll.goc:146 +0x66
2014/07/29 16:04:31 terraform-provider-aws: net.(*pollDesc).Wait(0xc208028290, 0x72, 0x0, 0x0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/net/fd_poll_runtime.go:84 +0x46
2014/07/29 16:04:31 terraform-provider-aws: net.(*pollDesc).WaitRead(0xc208028290, 0x0, 0x0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/net/fd_poll_runtime.go:89 +0x42
2014/07/29 16:04:31 terraform-provider-aws: net.(*netFD).Read(0xc208028230, 0xc2080a5000, 0x1000, 0x1000, 0x0, 0x7f134543f550, 0xb)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/net/fd_unix.go:232 +0x34c
2014/07/29 16:04:31 terraform-provider-aws: net.(*conn).Read(0xc20803a078, 0xc2080a5000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/net/net.go:122 +0xe7
2014/07/29 16:04:31 terraform-provider-aws: bufio.(*Reader).fill(0xc208004360)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/bufio/bufio.go:97 +0x1b3
2014/07/29 16:04:31 terraform-provider-aws: bufio.(*Reader).Read(0xc208004360, 0xc208000ef0, 0x1, 0x9, 0x1, 0x0, 0x0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/bufio/bufio.go:175 +0x230
2014/07/29 16:04:31 terraform-provider-aws: io.ReadAtLeast(0x7f1345440dd8, 0xc208004360, 0xc208000ef0, 0x1, 0x9, 0x1, 0x0, 0x0, 0x0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/io/io.go:289 +0xf7
2014/07/29 16:04:31 terraform-provider-aws: io.ReadFull(0x7f1345440dd8, 0xc208004360, 0xc208000ef0, 0x1, 0x9, 0x0, 0x0, 0x0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/io/io.go:307 +0x71
2014/07/29 16:04:31 terraform-provider-aws: encoding/gob.decodeUintReader(0x7f1345440dd8, 0xc208004360, 0xc208000ef0, 0x9, 0x9, 0x0, 0x1, 0x0, 0x0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/encoding/gob/decode.go:66 +0xa6
2014/07/29 16:04:31 terraform-provider-aws: encoding/gob.(*Decoder).recvMessage(0xc2080a6000, 0xc20803a8d0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/encoding/gob/decoder.go:73 +0x57
2014/07/29 16:04:31 terraform-provider-aws: encoding/gob.(*Decoder).decodeTypeSequence(0xc2080a6000, 0xc208038f00, 0x0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/encoding/gob/decoder.go:159 +0x49
2014/07/29 16:04:31 terraform-provider-aws: encoding/gob.(*Decoder).DecodeValue(0xc2080a6000, 0x770de0, 0xc208038fe0, 0x0, 0x160, 0x0, 0x0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/encoding/gob/decoder.go:227 +0x193
2014/07/29 16:04:31 terraform-provider-aws: encoding/gob.(*Decoder).Decode(0xc2080a6000, 0x770de0, 0xc208038fe0, 0x0, 0x0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/encoding/gob/decoder.go:204 +0x279
2014/07/29 16:04:31 terraform-provider-aws: net/rpc.(*gobServerCodec).ReadRequestHeader(0xc208023e60, 0xc208038fe0, 0x0, 0x0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/net/rpc/server.go:401 +0x5b
2014/07/29 16:04:31 terraform-provider-aws: net/rpc.(*Server).readRequestHeader(0xc208045800, 0x7f1345440e28, 0xc208023e60, 0x0, 0x0, 0xc208038fe0, 0x9c1400, 0x0, 0x0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/net/rpc/server.go:552 +0x9b
2014/07/29 16:04:31 terraform-provider-aws: net/rpc.(*Server).readRequest(0xc208045800, 0x7f1345440e28, 0xc208023e60, 0xc208048090, 0xc208039520, 0x767420, 0x0, 0x0, 0x0, 0x0, ...)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/net/rpc/server.go:519 +0xbe
2014/07/29 16:04:31 terraform-provider-aws: net/rpc.(*Server).ServeCodec(0xc208045800, 0x7f1345440e28, 0xc208023e60)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/net/rpc/server.go:438 +0x69
2014/07/29 16:04:31 terraform-provider-aws: net/rpc.(*Server).ServeConn(0xc208045800, 0x7f1345440d28, 0xc20803a078)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/net/rpc/server.go:430 +0x170
2014/07/29 16:04:31 terraform-provider-aws: github.com/hashicorp/terraform/plugin.Serve(0x895220, 0xc2080042a0, 0x0, 0x0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/gopath/src/github.com/hashicorp/terraform/plugin/server.go:88 +0x9b6
2014/07/29 16:04:31 terraform-provider-aws: main.main()
2014/07/29 16:04:31 terraform-provider-aws:     /opt/gopath/src/github.com/hashicorp/terraform/builtin/bins/provider-aws/main.go:9 +0x48
2014/07/29 16:04:31 terraform-provider-aws: 
2014/07/29 16:04:31 terraform-provider-aws: goroutine 19 [finalizer wait]:
2014/07/29 16:04:31 terraform-provider-aws: runtime.park(0x416580, 0xd438b8, 0xd2fac9)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/runtime/proc.c:1369 +0x89
2014/07/29 16:04:31 terraform-provider-aws: runtime.parkunlock(0xd438b8, 0xd2fac9)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/runtime/proc.c:1385 +0x3b
2014/07/29 16:04:31 terraform-provider-aws: runfinq()
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/runtime/mgc0.c:2644 +0xcf
2014/07/29 16:04:31 terraform-provider-aws: runtime.goexit()
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/runtime/proc.c:1445
2014/07/29 16:04:31 terraform-provider-aws: 
2014/07/29 16:04:31 terraform-provider-aws: goroutine 20 [syscall]:
2014/07/29 16:04:31 terraform-provider-aws: os/signal.loop()
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/os/signal/signal_unix.go:21 +0x1e
2014/07/29 16:04:31 terraform-provider-aws: created by os/signal.init·1
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/os/signal/signal_unix.go:27 +0x32
2014/07/29 16:04:31 terraform-provider-aws: 
2014/07/29 16:04:31 terraform-provider-aws: goroutine 22 [chan receive]:
2014/07/29 16:04:31 terraform-provider-aws: github.com/hashicorp/terraform/plugin.func·009()
2014/07/29 16:04:31 terraform-provider-aws:     /opt/gopath/src/github.com/hashicorp/terraform/plugin/server.go:78 +0x62
2014/07/29 16:04:31 terraform-provider-aws: created by github.com/hashicorp/terraform/plugin.Serve
2014/07/29 16:04:31 terraform-provider-aws:     /opt/gopath/src/github.com/hashicorp/terraform/plugin/server.go:84 +0x8b8
2014/07/29 16:04:31 terraform-provider-aws: 
2014/07/29 16:04:31 terraform-provider-aws: goroutine 17 [syscall]:
2014/07/29 16:04:31 terraform-provider-aws: runtime.goexit()
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/runtime/proc.c:1445
2014/07/29 16:04:31 terraform-provider-aws: 
2014/07/29 16:04:31 terraform-provider-aws: goroutine 39 [runnable]:
2014/07/29 16:04:31 terraform-provider-aws: net/http.(*persistConn).writeLoop(0xc2080c18c0)
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/net/http/transport.go:885 +0x38f
2014/07/29 16:04:31 terraform-provider-aws: created by net/http.(*Transport).dialConn
2014/07/29 16:04:31 terraform-provider-aws:     /opt/go/src/pkg/net/http/transport.go:601 +0x957
2014/07/29 16:04:31 [ERROR] Error walking 'aws_security_group.coreos-terraform': 1 error(s) occurred:

* unexpected EOF
2014/07/29 16:04:31 [INFO] Apply walk complete
2014/07/29 16:04:31 [DEBUG] /etc/terraform/terraform-provider-aws: plugin process exited
2014/07/29 16:04:31 waiting for all plugin processes to complete...
2014/07/29 16:04:31 [DEBUG] /etc/terraform/terraform-provider-aws: plugin process exited
2014/07/29 16:04:31 [DEBUG] /etc/terraform/terraform-provider-aws: plugin process exited
2014/07/29 16:04:31 [DEBUG] /etc/terraform/terraform-provider-aws: plugin process exited

Hope that helps some,

P

Support for Cygwin

For 0.1.0 I get this when running terraform:

/usr/local/bin/terraform.exe: error while loading shared libraries: ?: cannot open shared object file: No such file or directory

Feature request: user_data argument for AWS launch configurations

While it is possible to pass user data to EC2 instances via the user_data attribute, it does not appear to be possible to pass user data to an aws_launch_configuration resource.

Since user data is commonly used for bootstrapping autoscaling nodes, a user_data argument for launch configs would be very useful.

Thank you!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.