Commit Graph

20033 Commits

Author SHA1 Message Date
James Bardin 45a9edb763 make state mv and rm work with remote states
The default value for the -state flag was overriding the location of any
remote state.
2017-07-27 09:41:39 -04:00
Martin Atkins 23ef0e3247 website: more-elaborate "terraform init" docs
The "terraform init" command has a lot of different functionality now,
making it hard to follow all of the options in the previous presentation.
Instead, here we describe each of the steps and its associated options
separately, hopefully making it easier to understand what each option
relates to.

In addition, much of the detail around backend partial configuration is
factored out into the backend configuration page, where it seems more
"at home"; previously it felt hard to follow exactly how partial
configuration would be used, due to the information on it being split over
two different pages.
2017-07-25 08:25:49 -07:00
Martin Atkins 539f0db74e examples: remove openstack example
This has now moved into the openstack provider repository, linked from
the README here.
2017-07-24 16:02:13 -07:00
Martin Atkins d32a0e8e1f examples: remove digitalocean example
This has now moved into the digitalocean provider repository, linked from
the README here.
2017-07-24 15:50:21 -07:00
Martin Atkins 590bbe9b31 examples: Remove the consul example
This is now in the consul provider repository, linked from the README
here.
2017-07-24 15:32:47 -07:00
Martin Atkins 583c24a3c2 examples: Update README to reflect 0.10 init/apply workflow
Previous instructions assumed the pre-0.9 version of init, which served
a different purpose.
2017-07-24 15:23:49 -07:00
Martin Atkins 0e0c7883e4 examples: Remove the clc example
This has now moved into the repository for the CenturyLink Cloud provider,
linked from the README here.
2017-07-24 15:20:11 -07:00
Martin Atkins 3b95c85f18 examples: Remove the Google Cloud examples
These are now in the provider's own repository, linked from the README
here.
2017-07-24 15:08:40 -07:00
seph 29ebe07e1e Update link to the AWS example 2017-07-24 14:52:29 -05:00
Jake Champlin 0c69e46649 Update CHANGELOG.md 2017-07-24 11:15:01 -04:00
Jake Champlin f98cfc9018 Merge pull request #15617 from svanharmelen/b-chef-provisioner
provisioner/chef: fix panic
2017-07-24 09:14:13 -06:00
protondonor fc3782f051 Document failure behavior for `import` command.
- Remove link to issue 11835.
2017-07-22 08:48:19 -07:00
protondonor 1069aab47a Document changes to terraform import in the release notes.
- Documentation based on the commit message for the change
(9a398a7793)
2017-07-22 08:48:19 -07:00
Sander van Harmelen b01f68f343 provisioner/chef: fix panic
Fixes #15431
Fixes #15500
2017-07-22 09:58:58 +02:00
Martin Atkins e079e9d339 examples: remove azure examples
These have now moved into the AzureRM provider repository, linked from the
README here.
2017-07-21 17:53:10 -07:00
Martin Atkins 9be103b62d examples: Remove AliCloud and AWS examples
The examples for these providers have moved into the providers' own
repositories, so this is just cleaning up the old copies in the main repo
to avoid any confusion caused by the duplication.

The examples readme has links to these provider-specific examples so that
people looking for them in the old location can still find them.
2017-07-21 16:51:24 -07:00
James Bardin 0bca383b6b Merge pull request #15528 from alrs/command-swallowed-errors
Fix swallowed errors in command package.
2017-07-20 08:57:10 -04:00
Jake Champlin c40be7cd14 Merge pull request #15598 from alrs/helper-swallowed-error
Fix swallowed err in acctest package
2017-07-20 00:33:15 -06:00
Lars Lehtonen e34f194b31
Fix swallowed err in acctest package 2017-07-19 16:24:41 -07:00
Lars Lehtonen 119996b815
Return immediately after newly-added error condition 2017-07-19 15:46:21 -07:00
Martin Atkins 8666d36609 Merge #15596: docker image build configurations 2017-07-19 15:04:24 -07:00
Martin Atkins 1fac5de738 release: clean up after v0.10.0-rc1 2017-07-19 14:07:06 -07:00
Martin Atkins 243951c70a
v0.10.0-rc1 2017-07-19 14:05:43 -07:00
Martin Atkins 2b3b62dab5 build: documentation for the new docker image release process
At the time of commit this file contains some things that are not yet true
due to the dockerhub configuration not having been updated. This therefore
remains aspirational until merged, after which the docherhub configuration
will be updated.
2017-07-19 13:02:39 -07:00
Martin Atkins 0f9af4dfa9 build: configuration for building "release" docker images
These are different than our "full" images because they include a binary
already released to releases.hashicorp.com, whereas the root Dockerfile
directly builds from the current work tree.

This particular Dockerfile is not intended to be run manually, but rather
exists only to drive the dockerhub automated build.
2017-07-19 12:59:13 -07:00
Martin Atkins 909c45488f build: Move the "full" Dockerfile into the root of our main repo
Previously this lived in a separate repo docker-hub-images, shared with
other products. Having multiple products sharing a repo complicates
release processes and works against some assumptions made by the Dockerhub
build system.

The "full" Dockerfile contains a Terraform binary built from source, and
so it can be used with any arbitrary Terraform source tree. This doesn't
yet include the "light" Dockerfile, which instead makes an image from
official binaries already on releases.hashicorp.com. That will follow in
a subsequent commit.
2017-07-19 12:40:21 -07:00
James Bardin cb5739f1a0 update CHANGELOG.md 2017-07-19 12:57:07 -04:00
Martin Atkins f6dace3476 website: document the Checkpoint service and how to disable it
This is documented for all other Hashicorp products using this service but
was missed for Terraform. This serves as a disclosure of the fact that
Terraform reaches out to a Hashicorp service, an explanation of the
purpose of that request, and instructions on how to disable it in
environments where it is inappropriate or cannot be supported due to a
firewall or other connectivity restrictions.
2017-07-18 16:48:16 -07:00
Martin Atkins da0aec1b32 website: attempt to clarify "terraform import" usage docs
Based on feedback from #15569 that the previous example was too abstract
and did not give enough context about what each of the different arguments
mean and how they generalize to other resource types.
2017-07-18 16:35:14 -07:00
James Bardin 9a7ffbfb1b Merge pull request #15566 from hashicorp/jbardin/state-serial
Add warning to mismatched plan state
2017-07-18 18:09:00 -04:00
James Bardin dd9a54c661 Merge pull request #15435 from hashicorp/jbardin/state-path-message
only show state path help if state is local
2017-07-18 18:08:18 -04:00
Martin Atkins c57dbebe84 documentation: explain provider dev environment setup
The intent here is just to introduce some initial docs on our recommended
way to develop plugins in the same GOPATH as Terraform itself. The
documentation in this area needs some more fundamental rework as it is
rather outdated and mis-organized, but that's outside the scope of what
this change is trying to achieve.
2017-07-18 14:36:01 -07:00
James Bardin eb02467298 Merge pull request #15588 from hashicorp/jbardin/no-graph-config
graph should not panic with no config
2017-07-18 13:10:00 -04:00
James Bardin f10163ecc7 graph should not panic with no config
The backends replace a nil module tree with an empty one before building
the graph, so the graph command needs to do the same.
2017-07-18 13:03:57 -04:00
Martin Atkins a2ef0ce9a3 Update CHANGELOG.md 2017-07-18 10:02:41 -07:00
Martin Atkins ac250d2792 plugin/discovery: trim off .exe suffix when parsing filenames
On Windows systems the plugin binaries use a .exe suffix, which we were
misparsing as part of either the "v" or "x" parts of the filename.

This fixes #15578.
2017-07-18 10:00:23 -07:00
Dhananjay Balan fd4a2fa262 website: Correct usage for force-unlock command 2017-07-18 09:02:29 -07:00
Martin Atkins 8e0fefda1f Merge #15509: End-to-end test harness and some initial tests 2017-07-17 14:33:41 -07:00
Martin Atkins 23f9c8785e command/e2etest: an initial test for the primary workflow
This e2etest runs an init, plan, apply, destroy sequence against a test
configuration using the real template and null providers downloaded from
the official repository.

This test _does_ trample a bit on the scope of some already-existing
tests, but this is mainly just to check our assumptions about how
Terraform behaves to ensure that we can reach our main conclusion here:
that the main Terraform workflow commands interact correctly with each
other in real use and we can complete the full workflow.
2017-07-17 14:25:33 -07:00
Martin Atkins 52df81ee49 command/e2etest: test that we can install provider plugins
We already have good tests for the business logic around provider
installation, but the existing tests all stub out the main repository
server. This test completes that coverage by verifying that the installer
is able to run against the real repository and install an official release
of the template provider.
2017-07-17 14:25:33 -07:00
Martin Atkins 0e0b0d125a command/e2etest: "terraform version" test
This basic test is here primarily because it's one of the few that can
run without reaching out to external services, and so it means our usual
test runs will catch situations where the main executable build is
somehow broken.

The version command itself is not very interesting to test, but it's
convenient in that its behavior is very predictable and self-contained.
2017-07-17 14:25:33 -07:00
Martin Atkins fee61a44b4 command/e2etest: end-to-end testing harness
Previously we had no automated testing of whether we can produce a
Terraform executable that actually works. Our various functional tests
have good coverage of specific Terraform features and whole operations,
but we lacked end-to-end testing of actual usage of the generated binary,
without any stubbing.

This package is intended as a vehicle for such end-to-end testing. When
run normally under "go test" it will produce a build of the main Terraform
binary and make it available for tests to execute. The harness exposes
a flag for whether tests are allowed to reach out to external network
services, controlled with our standard TF_ACC environment variable, so
that basic local tests can be safely run as part of "make test" while
more elaborate tests can be run easily when desired.

It also provides a separate mode of operation where the included script
make-archive.sh can be used to produce a self-contained test archive that
can be copied to another system to run the tests there. This is intended
to allow testing of cross-compiled binaries, by shipping them over to
the target OS and architecture to run without requiring a full Go compiler
installation on the target system.

The goal here is not to test again functionality that's already
well-covered by our existing tests, but rather to test chains of normal
operations against the build binary that are not otherwise tested
together.
2017-07-17 14:25:33 -07:00
James Bardin 50f412bff4 Merge pull request #15557 from hashicorp/jbardin/consul-lock-sessions
have the consul client manage the lock session
2017-07-17 10:56:30 -04:00
James Bardin bb13786663 Merge pull request #15559 from hashicorp/jbardin/protocol-version
allow missing x-terraform-protocol-version
2017-07-17 10:54:34 -04:00
James Bardin a1727ec4c2 Add warning to mismatched plan state
Forward-port the plan state check from the 0.9 series.
0.10 has improved the serial handling for the state, so this adds
relevant comments and some more test coverage for the case of an
incrementing serial during apply.
2017-07-17 10:41:29 -04:00
Radek Simko 004f6cc9e2 Update CHANGELOG.md 2017-07-17 08:38:23 +01:00
Radek Simko f979b8feef Enforce field names to be alphanum lowercase + underscores (#15562) 2017-07-17 08:37:46 +01:00
James Bardin 2b84e786e9 allow missing x-terraform-protocol-version
If the release site is missing the "x-terraform-protocol-version"
header, we should fetch the latest spec'ed release. Downloading the
wrong protocol version can't do any damage, and the version present is
more than likely compatible.
2017-07-14 15:52:41 -04:00
James Bardin 87b2c0cf8f Merge pull request #15556 from hashicorp/jbardin/backend-tests
backend state tests must honor lineage
2017-07-14 14:56:54 -04:00
James Bardin bcb11f6d89 have the consul client manage the lock session
When a consul lock is lost, there is a possibility that the associated
session is still active. Most commonly, the long request to watch the
lock key may error out, while the session is continually refreshed at a
rate of TTL/2.

First have the lock monitor retry the lock internally for at least 10
seconds (5 attempts with the default 2 second wait time). In most cases
this will reconnect on the first try, keeping the lock channel open.

If the consul lock can't recover itself, then cancel the session as soon
as possible (terminating the PreiodicRenew will call Session.Destroy),
and start over. In the worse case, the consul agents were split, and the
session still exists on the leader so we may need to wait for the old
session TTL, plus the LockWait time to renew the lock.

We use a Context for the cancellation channels here, because that
removes the need to worry about double-closes and nil channels. It
requires an awkward adapter goroutine for now to convert the Done()
`<-chan` to a `chan` for PeriodicRenew, but makes the rest of the code
safer in the long run.
2017-07-14 14:42:42 -04:00