This project is mirrored from https://:*****@github.com/hashicorp/terraform.git.
Pull mirroring failed .
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer.
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer.
- 09 Jun, 2021 1 commit
-
-
Nick Fagerlund authored
Historically, we've used TFC's default run messages as a sort of dumping ground for metadata about the run. We've recently decided to mostly stop doing that, in favor of: - Only specifying the run's source in the default message. - Letting TFC itself handle the default messages. Today, the remote backend explicitly sets a run message, overriding any default that TFC might set. This commit removes that explicit message so we can allow TFC to sort it out. This shouldn't have any bad effect on TFE out in the wild, because it's known how to set a default message for remote backend runs since late 2018.
-
- 08 Jun, 2021 7 commits
-
-
Martin Atkins authored
Seems like we lost a newline in some of the shuffling it took to get this into the live website, and so it's formatting oddly in the rendered website. This restores the intended formatting of this as the start of a bullet list, rather than as a continuation of the previous paragraph.
-
Martin Atkins authored
-
Martin Atkins authored
-
Alisdair McDiarmid authored
Merge pull request #28864 from hashicorp/alisdair/fix-remote-backend-multi-workspace-state-migration Fix remote backend multi workspace state migration
-
Judith Malnick authored
* clarify input variables opening sentence * adjust variables description * claraify providers text and add learn callout * add description to providers page * add desscription and clarify provider configuration * add deprecation note to versions in proivder configs * add hands on callout and clarify next steps in intro * link to language collection from language docs * give more context about configurtion language up front * clarify output top page * reorganize for each intro to present feature before notes * move description before link out and remove passive voice * fix typo * clarify purpose of plan * move explanation before learn link and fully spell boolean * add a syntax heading to separate intro from details * add learn callout to module source docs * clean up intro to provider requirements and add link * Apply suggestions from code review Co-authored-by:
Tu Nguyen <im2nguyen@users.noreply.github.com> * Apply suggestions from code review Co-authored-by:
Tu Nguyen <im2nguyen@users.noreply.github.com> Co-authored-by:
Tu Nguyen <im2nguyen@users.noreply.github.com>
-
Martin Atkins authored
-
Martin Atkins authored
-
- 03 Jun, 2021 10 commits
-
-
Kristin Laemmert authored
* tools: remove terraform-bundle. terraform-bundle is no longer supported in the main branch of terraform. Users can build terraform-bundle from terraform tagged v0.15 and older. * add a README pointing users to the v0.15 branch
-
Martin Atkins authored
-
Martin Atkins authored
Previously we had a separation between ModuleSourceRemote and ModulePackage as a way to represent within the type system that there's an important difference between a module source address and a package address, because module packages often contain multiple modules and so a ModuleSourceRemote combines a ModulePackage with a subdirectory to represent one specific module. This commit applies that same strategy to ModuleSourceRegistry, creating a new type ModuleRegistryPackage to represent the different sort of package that we use for registry modules. Again, the main goal here is to try to reflect the conceptual modelling more directly in the type system so that we can more easily verify that uses of these different address types are correct. To make use of that, I've also lightly reworked initwd's module installer to use addrs.ModuleRegistryPackage directly, instead of a string representation thereof. This was in response to some earlier commits where I found myself accidentally mixing up package addresses and source addresses in the installRegistryModule method; with this new organization those bugs would've been caught at compile time, rather than only at unit and integration testing time. While in the area anyway, I also took this opportunity to fix some historical confusing names of fields in initwd.ModuleInstaller, to be clearer that they are only for registry packages and not for all module source address types.
-
Martin Atkins authored
We have some tests in this package that install real modules from the real registry at registry.terraform.io. Those tests were written at an earlier time when the registry's behavior was to return the URL of a .tar.gz archive generated automatically by GitHub, which included an extra level of subdirectory that would then be reflected in the paths to the local copies of these modules. GitHub started rate limiting those tar archives in a way that Terraform's module installer couldn't authenticate to, and so the registry switched to returning direct git repository URLs instead, which don't have that extra subdirectory and so the local paths on disk now end up being a little different, because the actual module directories are at a different subdirectory of the package.
-
Martin Atkins authored
Now that we (in the previous commit) refactored how we deal with module sources to do the parsing at config loading time rather than at module installation time, we can expose a method to centralize the determination for whether a particular module call (and its resulting Config object) enters a new external package. We don't use this for anything yet, but in later commits we will use this for some cross-module features that are available only for modules belonging to the same package, because we assume that modules grouped together in a package can change together and thus it's okay to permit a little more coupling of internal details in that case, which would not be appropriate between modules that are versioned separately.
-
Martin Atkins authored
It's been a long while since we gave close attention to the codepaths for module source address parsing and external module package installation. Due to their age, these codepaths often diverged from our modern practices such as representing address types in the addrs package, and encapsulating package installation details only in a particular location. In particular, this refactor makes source address parsing a separate step from module installation, which therefore makes the result of that parsing available to other Terraform subsystems which work with the configuration representation objects. This also presented the opportunity to better encapsulate our use of go-getter into a new package "getmodules" (echoing "getproviders"), which is intended to be the only part of Terraform that directly interacts with go-getter. This is largely just a refactor of the existing functionality into a new code organization, but there is one notable change in behavior here: the source address parsing now happens during configuration loading rather than module installation, which may cause errors about invalid addresses to be returned in different situations than before. That counts as backward compatible because we only promise to remain compatible with configurations that are _valid_, which means that they can be initialized, planned, and applied without any errors. This doesn't introduce any new error cases, and instead just makes a pre-existing error case be detected earlier. Our module registry client is still using its own special module address type from registry/regsrc for now, with a small shim from the new addrs.ModuleSourceRegistry type. Hopefully in a later commit we'll also rework the registry client to work with the new address type, but this commit is already big enough as it is.
-
Martin Atkins authored
We've previously had the syntax and representation of module source addresses pretty sprawled around the codebase and intermingled with other systems such as the module installer. I've created a factored-out implementation here with the intention of enabling some later refactoring to centralize the address parsing as part of configuration decoding, and thus in turn allow the parsing result to be seen by other parts of Terraform that interact with configuration objects, so that they can more robustly handle differences between local and remote modules, and can present module addresses consistently in the UI.
-
Martin Atkins authored
This new package aims to encapsulate all of our interactions with go-getter to fetch remote module packages, to ensure that the rest of Terraform will only use the small subset of go-getter functionality that our modern module installer uses. In older versions of Terraform, go-getter was the entire implementation of module installation, but along the way we found that several aspects of its design are poor fit for Terraform's needs, and so now we're using it as just an implementation detail of Terraform's handling of remote module packages only, hiding it behind this wrapper API which exposes only the services that our module installer needs. This new package isn't actually used yet, but in a later commit we will change all of the other callers to go-getter to only work indirectly through this package, so that this will be the only package that actually imports the go-getter packages.
-
Martin Atkins authored
As the comment notes, this hostname is the default for provide source addresses. We'll shortly be adding some address types to represent module source addresses too, and so we'll also have DefaultModuleRegistryHost for that situation. (They'll actually both contain the the same hostname, but that's a coincidence rather than a requirement.)
-
Martin Atkins authored
Previously this is a task that I've just taken on using my own knowledge of how these parts fit together, but that's not at all a sustainable situation, and so here I've just documented the steps I've followed in for previous Unicode version upgrades, and thus which I'd expect to follow for future Unicode version upgrades too. I hope this is also a somewhat-interesting overview of how Terraform makes use of Unicode, even for folks who are just working on the other relevant features of Terraform and not specifically trying to change Terraform's Unicode support. Since I'm the primary maintainer of two of the dependencies involved in this it seems likely that following this process will still involve me in _some_ capacity, but hopefully only necessarily in the form of reviewing PRs and cutting new releases of those libraries.
-
- 02 Jun, 2021 8 commits
-
-
Chris Arcand authored
Fix support link (mailto is not supported in GitHub template URLs)
-
Chris Arcand authored
-
Chris Arcand authored
Add support reference for TFC-related issues
-
Chris Arcand authored
-
Alisdair McDiarmid authored
When performing state migration to a remote backend target, Terraform may fail due to mismatched remote and local Terraform versions. Here we add the `-ignore-remote-version` flag to allow users to ignore this version check when necessary.
-
Alisdair McDiarmid authored
When migrating multiple local workspaces to a remote backend target using the `prefix` argument, we need to perform the version check against all existing workspaces returned by the `Workspaces` method. Failing to do so will result in a version check error.
-
Martin Atkins authored
-
Martin Atkins authored
-
- 29 May, 2021 1 commit
-
-
Chris Arcand authored
Revert "mclarify specifying provider versions"
-
- 28 May, 2021 2 commits
-
-
Judith Malnick authored
This reverts commit 397494da.
-
Judith Malnick authored
-
- 27 May, 2021 4 commits
-
-
Martin Atkins authored
Our module installer has a somewhat-informal idea of a "module package", which is some external thing we can go fetch in order to add one or more modules to the current configuration. Our documentation doesn't talk much about it because most users seem to have found the distinction between external and local modules pretty intuitive without us throwing a lot of funny terminology at them, but there are some situations where the distinction between a module and a module package are material to the end-user. One such situation is when using an absolute rather than relative filesystem path: we treat that as an external package in order to make the resulting working directory theoretically "portable" (although users can do various other things to defeat that), and so Terraform will copy the directory into .terraform/modules in the same way as it would download and extract a remote archive package or clone a git repository. A consequence of this, though, is that any relative paths called from inside a module loaded from an absolute path will fail if they try to traverse upward into the parent directory, because at runtime we're actually running from a copy of the directory that's been taking out of its original context. A similar sort of situation can occur in a truly remote module package if the author accidentally writes a "../" source path that traverses up out of the package root, and so this commit introduces a special error message for both situations that tries to be a bit clearer about there being a package boundary and use that to explain why installation failed. We would ideally have made escaping local references like that illegal in the first place, but sadly we did not and so when we rebuilt the module installer for Terraform v0.12 we ended up keeping the previous behavior of just trying it and letting it succeed if there happened to somehow be a matching directory at the given path, in order to remain compatible with situations that had worked by coincidence rather than intention. For that same reason, I've implemented this as a replacement error message we will return only if local module installation was going to fail anyway, and thus it only modifies the error message for some existing error situations rather than introducing new error situations. This also includes some light updates to the documentation to say a little more about how Terraform treats absolute paths, though aiming not to get too much into the weeds about module packages since it's something that most users can get away with never knowing.
-
CJ Horton authored
backend/remote: point refresh users towards -refresh-only
-
Alisdair McDiarmid authored
backend/local: Fix lock when applying stale plan
-
CJ Horton authored
-
- 26 May, 2021 6 commits
-
-
Alisdair McDiarmid authored
When returning from the context method, a deferred function call checked for error diagnostics in the `diags` variable, and unlocked the state if any exist. This means that we need to be extra careful to mutate that variable when returning errors, rather than returning a different set of diags in the same position. Previously this would result in an invalid plan file causing a lock to become stuck.
-
Martin Atkins authored
We got the replacement for this in earlier than anticipated, so these docs were originally more pessimistic about when the alternative would be available.
-
Martin Atkins authored
While we were working on and documenting these it wasn't clear exactly what Terraform CLI version they would land in, and so we used "Terraform v1.0" in the docs as a safe bound that was definitely going to include all of them. With everything now landed though, we can be more specific about which v0.15.x minor release each of these appeared in.
-
Alisdair McDiarmid authored
website: Add documentation for machine readable UI
-
Alisdair McDiarmid authored
command/views: Remove unused drift summary message
-
James Bardin authored
return error for invalid resource import
-
- 25 May, 2021 1 commit
-
-
James Bardin authored
Most legacy provider resources do not implement any import functionality other than returning an empty object with the given ID, relying on core to later read that resource and obtain the complete state. Because of this, we need to check the response from ReadResource for a null value, and use that as an indication the import id was invalid.
-