Skip to content

Instantly share code, notes, and snippets.

@pkolyvas
Forked from mildwonkey/installer.md
Created May 15, 2020 20:40
Show Gist options
  • Select an option

  • Save pkolyvas/1a49a402f152156060877077289950a2 to your computer and use it in GitHub Desktop.

Select an option

Save pkolyvas/1a49a402f152156060877077289950a2 to your computer and use it in GitHub Desktop.
Provider Installer overview

Provider Installation

Overview

Terraform 0.13 has an entirely new provider installer that allows for greater control over individual provider installation methods.

Terraform v0.12

  • flat directories
  • plugin-dir
  • plugin-cache-dir
  • $PATH/wherever the terraform executable lives
  • registry

Terraform v0.13

New Directory layout

A major implication of the provider source work is that terraform can no longer assume that provider types are unique: a user could have multiple provides with the same type in a given configuration. To support this, terraform now requires the all provider binaries are in a specific directory hierarchy corresponding with the source:

$BASEDIR/$SOURCEHOST/$NAMESPACE/$TYPE/$VERSION/$OS_$ARCH/

Default search locations

  1. Filesystem
  2. Terraform Registry

Filesystem search paths

  • terraform.d/plugins in the current working directory (not documented, it's historically documented as a place to put plugins as a way to include them in bundles uploaded to Terraform Cloud)

OS-specific paths:

  • Windows: %APPDATA%/HashiCorp/Terraform/plugins
  • Mac OS X: ~/Library/Application Support/io.terraform/plugins and /Library/Application Support/io.terraform/plugins
  • Linux and other Unix-like systems: Terraform implements the XDG Base Directory specification and appends terraform/plugins to all of the specified data directories. Without any XDG environment variables set, Terraform will use ~/.local/share/terraform/plugins, /usr/local/share/terraform/plugins, and /usr/share/terraform/plugins.

Maybe $HOME/.terraform.d/plugins?

Registry lookup

Same use-facing behavior as 0.12: terraform queries the registry to find providers. If a provider is found in one of the search paths, terraform will not query the registry for that provider (TODO: check that -upgrade overrides that as expected).

Command-line options

-plugin-dir: only that directory will be searched Q: does this override CLI config?

-plugin-cache-dir: does not change search behavior, just install: plugins will be downloaded into, and installed from, the cache dir

Cli config options

We've added a CLI configuration setting to let users declare plugin search locations for all configurations on a given workstation.

  1. filesystem_mirror
  2. direct
  3. network_mirror [targeting future release]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment