Commit Graph

490 Commits

Author SHA1 Message Date
Paul Hinze 92335b742a provider/aws: aws_main_route_table_association
This resource allows an existing Route Table to be assigned as the
"main" Route Table of a VPC. This means that the Route Table will be
used for any subnets within the VPC without an explicit Route Table
assigned [1].

This is particularly useful in getting an Internet Gateway in place as
the default for a VPC, since the automatically created Main Route Table
does not have one [2].

Note that this resource is an abstraction over an association and does not
map directly to a CRUD-able object in AWS. In order to retain a coherent
"Delete" operation for this resource, we remember the ID of the AWS-created
Route Table and reset the VPC's main Route Table to it when this
resource is deleted.

refs #843, #748

[1] http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html#RouteTableDetails
[2] http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html#Add_IGW_Routing
2015-02-03 13:47:43 -06:00
Greg Osuri 04ac1ffd02 provider/aws: fix for #915 - aws_elb.health_check attributes does not update during update 2015-02-02 19:25:54 -08:00
Phil Frost 863fd0c7d2 Avoid unnecessary updating of aws_subnet
If map_public_ip_on_launch was not specified, AWS picks a default of
"0", which is different than the "" in the state file, triggerinng an
update each time. Mark that parameter as Computed, avoiding the update.
2015-01-30 13:17:16 -05:00
Phil Frost 8eb5418c4a Implement apply_method for RDS parameters
This is necessary to support creating parameter groups with parameters
that require a reboot, since the RDS API will return an error when
attempting to set those parameters with ApplyMethod "immediate".
2015-01-30 13:06:15 -05:00
Phil Frost bfaf8ccee6 Support storage_type parameter for aws_db_instance
This allows provisioning "gp2" (general purpose SSD) storage for DB
instances.
2015-01-30 13:01:10 -05:00
Phil Frost 04e86697fb Fix error when refreshing on a deleted AWS subnet
If a subnet exists in the state file and a refresh is performed, the
read function for subnets would return an error. Now it updates the
state to indicate that the subnet no longer exists, so Terraform can
plan to recreate it.
2015-01-29 11:06:40 -05:00
Phil Frost 254b25a64f Fix aws_db_instance to not recreate each time
Several of the arguments were optional, and if omitted, they are
calculated. Mark them as such in the schema to avoid triggering an
update.

Go back to storing the password in the state file. Without doing so,
there's no way for Terraform to know the password has changed. It should
be hashed, but then interpolating the password yields a hash instead of
the password.

Make the `name` parameter optional. It's not required in any engine, and
in some (MS SQL Server) it's not allowed at all.

Drop the `skip_final_snapshot` argument. If `final_snapshot_identifier`
isn't specified, then don't make a final snapshot. As things were, it
was possible to create a resource with neither of these arguments
specified which would later fail when it was to be deleted since the RDS
API requires exactly one of the two.

Resolves issue #689.
2015-01-28 12:03:26 -05:00
Paul Hinze 3cb5ba01a7 whitespace: fix mixed case indent 2015-01-28 05:16:04 -06:00
Paul Hinze c88c4a33e1 providers/aws: ignore ec2 root devices
fixes #859

EC2 root block devices are attached automatically at launch [1] and show
up in DescribeInstances responses from then on. By skipping these when
recording state, Terraform can avoid thinking there should be block
device changes when there are none.

Note this requires that https://github.com/mitchellh/goamz/pull/214 land
first so the proper field is exposed.

[1] http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/RootDeviceStorage.html
2015-01-28 05:14:21 -06:00
Seth Vargo 918ba4c3be Merge pull request #851 from hashicorp/sethvargo/aws_envvars
Use standard AWS environment variables
2015-01-25 13:29:32 -05:00
Graham Floyd 91378ce0af Add test for launch configuration with spot price 2015-01-23 15:51:25 -06:00
nevins-b 47b244d296 adding support for egress rules in AWS Security Groups 2015-01-23 09:46:20 -05:00
Seth Vargo 072a1cf353 Read the "standard" AWS environment variables
This is 100% backwards-compatible
2015-01-22 16:09:25 -05:00
Graham Floyd c9a0627f13 Add spot_price parameter to aws_launch_configuration resource 2015-01-21 22:48:04 -06:00
Otto Jongerius 7759a28e9c No longer needed after merging of PR 804. 2015-01-21 18:48:28 +11:00
Armon Dadgar df71834ff7 Merge pull request #831 from gulyasm/log-typo
Fixed wrong cross zone balancing error log.
2015-01-20 13:20:25 -08:00
gulyasm 0486dd0624 Fixed wrong cross zone balancing error log.
If updating the cross zone balancing in the aws elb resource fails, the
error log claimed that the health check configuration failed. Fixed.
2015-01-17 16:20:35 +01:00
Jeff Mitchell f2bd1f45ab Move duplicated envDefaultFunc out of each provider and into Schema. 2015-01-16 17:25:39 +00:00
Mitchell Hashimoto 61e91017be Merge pull request #804 from PeoplePerHour/f-aws-elb-subnet
providers/aws: elb subnet change should not force a new resource
2015-01-16 08:33:32 -08:00
Panagiotis Moustafellos a49f1b5dd8 epic typo 2015-01-16 16:07:55 +02:00
Panagiotis Moustafellos cedf3a9415 providers/aws: elb subnet change acceptance test
add listeners

add orig subnet
2015-01-15 16:02:47 +02:00
Panagiotis Moustafellos c963793f3d providers/aws: elb subnet change should not force a new resource 2015-01-15 10:43:26 +02:00
Mitchell Hashimoto 08813e6571 Merge branch 'add-ig-tags' of https://github.com/robzienert/terraform into robzienert-add-ig-tags
Conflicts:
	builtin/providers/aws/resource_aws_internet_gateway_test.go
2015-01-10 15:28:14 -08:00
Paul Hinze f800441fe1 provider/aws: fix aws_db_instance acceptance tests
- 5.6.17 is no longer a valid mysql engine version, bumping to 5.6.21
- updating security_group_names assertion to match new set structure
  introduce in #663
2015-01-10 15:55:08 -06:00
Mitchell Hashimoto cc0ee4a6bb Merge pull request #731 from atlassian/tags
providers/aws: make tags not computed
2015-01-06 15:38:35 -08:00
Armon Dadgar eef75a7a2a Merge pull request #695 from moredip/aws_key_pair-resource
add aws_key_pair resource
2015-01-06 10:46:58 -08:00
Armon Dadgar 0ffc11c885 Merge pull request #704 from yahyapo/master
[AWS] Adding default network ACL ID and default security group ID to VPC reference attributes
2015-01-06 10:29:16 -08:00
Armon Dadgar 11dc775c25 Merge pull request #701 from ceh/issue-687
builtin/providers/aws: acceptance tests for assigning private IPs on AWS instance
2015-01-05 11:41:15 -08:00
Sander van Harmelen 54ab857a54 Merge pull request #728 from atlassian/route_diff_fix
Route diff fix
2015-01-05 10:43:02 +01:00
Sander van Harmelen 7106917e98 Merge pull request #726 from atlassian/vgw_routes
Vgw routes
2015-01-05 10:39:42 +01:00
Emil Hessman c738bf0477 builtin/providers/aws: remove unreachable code and skip unnecessary remote call
When DeleteInternetGateway is successful it returns a nil error value.
However, for a nil error value, the RetryFunc returns an error yielding a
unnecessary second call to DeleteInternetGateway in the retry logic.

The logic works because DeleteInternetGateway eventually returns an ec2.Error
with error code InvalidInternetGatewayID.NotFound since the internet gateway
has been deleted in the previous call. The return value of nil breaks the
retry logic and the deletion is deemed successful.

Fix the unnecessary second call to DeleteInternetGateway by short circuiting
with a nil error value when deletion of the internet gateway is successful on
the first try.

Add an acceptance test for internet gateway deletion and remove unreachable
code while here.
2015-01-03 21:56:44 +01:00
Otto Jongerius eb1776c7e3 "Computed" should be false 2015-01-03 18:33:18 +11:00
Otto Jongerius 66159fd008 ignore routes originating from vgws 2015-01-02 19:17:52 +11:00
Otto Jongerius f6385215f6 Merge branch 'master' into route_diff_fix 2015-01-02 19:08:53 +11:00
Otto Jongerius 9bdb2fb2d1 This change belongs in a branch 2015-01-02 19:08:33 +11:00
Otto Jongerius 19c6d04928 Do store potentially empty values. Failing to do so will generate different hashes for identical route(s). 2015-01-02 19:03:13 +11:00
Otto Jongerius 639e0c72b4 ignore routes originating from vgws 2014-12-31 10:23:34 +11:00
Rob Zienert 186af0bbb3 Changing AWS ELB to not ForceNew when listeners change 2014-12-27 22:33:33 -06:00
Rob Zienert 9fd59f09e2 Adding tags support to Internet Gateway resource 2014-12-27 22:05:15 -06:00
Sander van Harmelen 852e2f74ca Fixing aws_elb schema
If not suppling the `availability_zones`, they will be computed
(meaning an update/refresh will retrieve the info and update the values
to the state file).

So without the `Computed = true` the diff will always flag this as a
change, even when it’s not.
2014-12-25 23:12:54 +01:00
Sander van Harmelen 57ae6a5da6 Fixing aws_instance schema
Some instance types have a block device by default. So when selecting
such an instance type, you will not set a config for the block device,
but the update/refresh func will notice one and update the state
nonetheless.

So in those cases the `block_device` becomes a `computed` field.
2014-12-25 21:58:26 +01:00
Sander van Harmelen b96f373ee9 Fixing some logic issues with the aws-instance resource
1. The schema contained a few fields that where not marked as
`computed`, while they were updated inside the resource.

2. While updating the `volume_size` it was doing so with a `string`,
but in the schema this field is set as `int`.

3. The set func for calculating the hashes for the `block` set items,
also used computed values to calculate the hash. As these values will
not be in the config, but only in the state, this will always show as a
diff. The solution is to only use the fields that aren’t computed in
order to get consistent hashes.

These where all issues before, but weren’t visible as such. All should
be good again now.
2014-12-25 18:21:05 +01:00
Yahya Poonawala 7860dc1ef6 Adding default security group id attribute reference on creation of VPC. Fixes issue #466. 2014-12-23 11:43:33 +05:30
Yahya Poonawala 634984532d Adding default network acl id attribute reference on creation of VPC. Fixes issue #466. 2014-12-22 23:08:15 +05:30
Emil Hessman 13f1f1f9ad builtin/providers/aws: acceptance tests for assigning private IPs on AWS instance 2014-12-20 20:48:07 +01:00
Pete Hodgson 5b66b9306e add aws_key_pair resource
For now this only supports importing a key pair (by specifying a
public_key) property. In the future it'd be fairly trivial to support
key pair creation, with the private key returned as a computed property.

In real world usage you'd probably want to provide that public_key
property via a variable rather than hard-coding it into a terraform
config that'd end up in source control.
2014-12-18 01:27:06 -08:00
Sander van Harmelen b58e468033 Updated the security_group attribute to use a set
This way the order returned by the API has no impact on the saved
state, preventing false positives when diffing.
2014-12-17 23:53:01 +01:00
Emil Hessman 4f3f85b165 builtin/providers/aws: vet fix
Fixes the following vet reports:

builtin/providers/aws/resource_aws_network_acl.go:191: wrong number of args for format in Errorf call: 2 needed but 3 args
builtin/providers/aws/resource_aws_network_acl.go:264: wrong number of args for format in Errorf call: 1 needed but 2 args
builtin/providers/aws/resource_aws_network_acl.go:268: wrong number of args for format in Errorf call: 1 needed but 2 args
builtin/providers/aws/resource_aws_network_acl.go:286: arg m[to_port].(int) for printf verb %s of wrong type: int
builtin/providers/aws/resource_aws_network_acl_test.go:277: arg r.NetworkAcls for printf verb %s of wrong type: []github.com/mitchellh/goamz/ec2.NetworkAcl
builtin/providers/aws/resource_aws_subnet_test.go:21: arg v.MapPublicIpOnLaunch for printf verb %s of wrong type: bool
2014-12-17 12:37:46 +01:00
Sander van Harmelen 9797881ed8 Updating the tests and refactoring the code a little
There was an error in the goamz package the prevented updating the
availability zones correctly. So PR #181 should be merged before this
one can be merged…
2014-12-16 15:21:25 +01:00
Sander van Harmelen 3aeba87e38 Updating the resource to use a set instead of a list
By using a set for the availability zones, you can use things like
`availability_zones = ["${aws_instance.web.*.availability_zone}"]`
where is very likely multiple of the same zones will be added to the
set. If you use a list here, the list will say it’s changed (even if
you add the same zone) which will force a new resource.
2014-12-16 13:13:59 +01:00
Sander van Harmelen 7e091dd7bd Merge pull request #677 from svanharmelen/f-provider-aws-fix-route53-toggling
provider/aws: fixing the flipflop problem for the aws_route53 resource
2014-12-16 11:22:54 +01:00
Sander van Harmelen a7667986f9 Updated the code so it makes use of the available functionality
The `helper/schema` package already knows how to create a set from a
slice with set items. So let’s use that functionality…
2014-12-16 11:14:33 +01:00
Mitchell Hashimoto 4f70630c52 Merge pull request #525 from pmoust/patch-2
provider/aws: update to support more regions
2014-12-15 16:40:35 -08:00
Sander van Harmelen 43a30e7d13 Finishing up the needed changes
Also executed the acceptance tests successfully now.
2014-12-16 00:59:47 +01:00
Sander van Harmelen ee7b33acf4 Fixing the flipflop problem
Actually meant as a PoC, but it works perfectly so let’s just merge
this…
2014-12-16 00:40:43 +01:00
Mitchell Hashimoto 6a663796d5 Merge pull request #663 from svanharmelen/f-fix/change-set-logic
core: refactoring the way sets work internally v2
2014-12-15 13:38:00 -08:00
Armon Dadgar 6098809ec5 Merge pull request #665 from gosuri/master
Fix for #664, crashed due to ig.Attachements being 0
2014-12-14 18:15:27 -08:00
Greg Osuri 9b9d147585 Setting the VPC id to blank for unattached igws 2014-12-14 14:05:38 -08:00
Sander van Harmelen 27a97c4498 Small gofmt update... 2014-12-14 12:32:17 +01:00
Sander van Harmelen d9af954c60 provider/aws: fixing the aws_internet_gateway resource
The resource is build so it can attach and detach the Internet Gateway
from a VPC, but as the schema has `Required` and `ForceNew` both set
to `true` for the vpc_id field it will never use these capabilities.
2014-12-14 12:20:59 +01:00
Greg Osuri 3883e47902 Fix for #664, crashed due to ig.Attachements being 0 2014-12-13 22:14:23 -08:00
Sander van Harmelen 83c760fcb3 core: refactoring the way sets work internally v2
This is a refactored solution for PR #616. Functionally this is still
the same change, but it’s implemented a lot cleaner with less code and
less changes to existing parts of TF.
2014-12-12 23:21:20 +01:00
Sander van Harmelen cc4710c952 Fixing up the tests so they actually pass
Running the tests without these changes results in this error first:

```
--- FAIL: TestAccAWSNetworkAclsOnlyIngressRulesChange (24.92 seconds)
  testing.go:121: Step 0 error: Check failed: Invalid number of ingress
entries found; count = %!s(int=3)
FAIL
exit status 1
FAIL  github.com/hashicorp/terraform/builtin/providers/aws  24.974s
```

And after fixing that one you also get a few unexpected values due to
an expected order mismatch between the items in the set versus the
items in the config.

Those are also fixed, so the test is passing now.
2014-12-12 13:25:44 +01:00
Armon Dadgar 7a3b4fa7ce Merge pull request #648 from yahyapo/master
Adding tag support to AWS EC2 route table resource.
2014-12-10 19:24:38 -08:00
Armon Dadgar 0ff62016ee provider/aws: Fixing ASG handling of not found 2014-12-10 13:27:11 -08:00
Armon Dadgar 633a08230e Merge pull request #638 from snehaso/tag_for_acl
[AWS] added tags for aws_network_acl
2014-12-10 12:59:22 -08:00
Armon Dadgar 9668c8292f Merge pull request #637 from snehaso/vpc_tenanct
[AWS] added vpc instance_tenancy
2014-12-10 12:58:50 -08:00
Armon Dadgar 8e32076d55 Merge pull request #635 from snehaso/cross_zone_lb
[AWS]  enabled cross zone load balancing
2014-12-10 10:55:54 -08:00
Yahya Poonawala b595c73d42 Adding tag support to AWS EC2 route table resource. 2014-12-11 00:03:13 +05:30
Sneha Somwanshi 5e3e8562fc added tags for aws_network_acl 2014-12-10 16:29:00 +05:30
Sneha Somwanshi 89f1a38f5b added vpc tenancy argument 2014-12-10 16:10:00 +05:30
Sneha Somwanshi 1d3e30b353 enabled cross zone load balancing 2014-12-10 12:49:43 +05:30
Armon Dadgar 82e60bb3cd Merge pull request #631 from snehaso/network_acl
aws_network_acl: return error if rule protocol is invalid
2014-12-09 09:07:44 -08:00
Sneha Somwanshi aad594aed3 aws_network_acl: return error if protocol is invalid 2014-12-08 16:53:05 +05:30
Armon Dadgar 38697d6b4c aws: Making security group ingress rules optional 2014-12-07 23:52:04 -08:00
Armon Dadgar fae29f4685 Merge pull request #506 from muralimadhu/master
Support termination policies in aws auto scaling group
2014-12-07 23:35:33 -08:00
Armon Dadgar 03d4a425b6 Merge pull request #623 from snehaso/network_acl
[AWS] added new resource aws_network_acl
2014-12-07 23:09:51 -08:00
Sneha Somwanshi 4b154b8fe7 Fixed update of ingress/egress rules 2014-12-08 11:00:55 +05:30
Armon Dadgar 7182e5618e Merge pull request #612 from MerlinDMC/feature/aws_block_device_virtual_name
allow setting the block device virtual_name
2014-12-03 12:08:07 -08:00
Armon Dadgar a2c8859f04 Merge pull request #615 from Banno/fix-aws-instance-block-devices-index-range
fixing array length for aws instance volumes
2014-12-03 12:00:31 -08:00
Sneha Somwanshi c79e6ba08b handled subnet and network acl association 2014-12-03 16:37:50 +05:30
Sneha Somwanshi 86aafdb839 test for tenancy schema 2014-12-03 15:58:51 +05:30
Sneha Somwanshi cd0f9761da rearranged the tests 2014-12-01 14:19:39 +05:30
Luke Amdor f3ff4bece8 fixing array length for aws instance volumes 2014-11-30 08:24:23 -06:00
Sneha Somwanshi 5eec8a531c Added CRUD operations for network acl 2014-11-30 17:10:54 +05:30
Sneha Somwanshi d4a887278e flatten/expand operations for network_acl 2014-11-30 17:09:37 +05:30
Sneha Somwanshi bd9e9ec0c4 Add support for network acls 2014-11-26 19:14:02 +05:30
Sneha Somwanshi dca2d9aa4c acceptance test for creating network acl 2014-11-26 19:12:59 +05:30
Sneha Somwanshi cebea04cce added provider for aws_network_acl 2014-11-26 19:12:39 +05:30
Sneha Somwanshi f63e032c23 Merge remote-tracking branch 'upstream/master' 2014-11-26 17:06:42 +05:30
Armon Dadgar ccf7f40711 Merge pull request #596 from svanharmelen/f-refactor-aws-provider
provider/aws: refactor to use the schema.Provider approach
2014-11-24 16:30:41 -08:00
Sander van Harmelen d3e1a6678d Making some last tweaks and fixing some acc tests 2014-11-24 21:22:18 +01:00
Seth Vargo eb729d17c7 Merge pull request #546 from tmtk75/dev/enable-associate-public-ip
support associate_public_ip_address for aws_launch_configuration
2014-11-24 09:58:26 -05:00
Sander van Harmelen 0725486e89 Refactored the last two resources 2014-11-24 14:04:48 +01:00
Tomotaka Sakuma db8256a4a7 add associate_public_ip_address attr to the acceptance test of aws_launch_configuration 2014-11-24 13:27:41 +09:00
Daniel Malon 1e3065ae11 allow setting the block device virtual_name 2014-11-22 09:50:22 +00:00
Sander van Harmelen eccd5ad308 Refactored about 90%
Still need to update 2 resources and check the acceptance tests, but
overall we’re nearly there 😃
2014-11-21 17:58:34 +01:00
Daniel Farina 67b03247ec Make Routes in RouteTable optional
Otherwise it is impossible to get simple configurations with the
"default" routing table, which is only the "local" route.

The following contents of main.tf expose the bug, and boots an instance
fine after this patch is applied:

    variable aws_access_key {}
    variable aws_secret_key {}
    variable aws_ubuntu_ami {}

    provider "aws" {
        access_key = "${var.aws_access_key}"
        secret_key = "${var.aws_secret_key}"
        region = "us-east-1"
    }

    resource "aws_vpc" "default" {
        cidr_block = "10.0.0.0/20"
    }

    resource "aws_route_table" "private" {
        vpc_id = "${aws_vpc.default.id}"
        # Note the lack of "route" sub-key here.
    }

    resource "aws_subnet" "private" {
        vpc_id = "${aws_vpc.default.id}"
        cidr_block = "10.0.1.0/24"
    }

    resource "aws_route_table_association" "private" {
        subnet_id = "${aws_subnet.private.id}"
        route_table_id = "${aws_route_table.private.id}"
    }

    # Demonstrate an instance can be booted fine in this fashion.
    resource "aws_instance" "sample" {
        ami = "${var.aws_ubuntu_ami}"
        instance_type = "t2.micro"
        subnet_id = "${aws_subnet.private.id}"
    }

terraform.tfvars for completeness:

    aws_access_key = "..."
    aws_secret_key = "..."

    # A public Trusty AMI
    aws_ubuntu_ami = "ami-9aaa1cf2"
2014-11-19 22:04:44 -08:00
Armon Dadgar e53bf23c0c provider/aws: Fixing merge conflict 2014-11-19 17:17:18 -08:00
Armon Dadgar 735e83a146 Merge branch 'master' of https://github.com/serenitus/terraform into serenitus-master 2014-11-19 17:15:15 -08:00