Quick start repository for creating a Terraform provider using terraform-plugin-framework

Terraform Provider Scaffolding (Terraform Plugin Framework)

This template repository is built on the Terraform Plugin Framework. The template repository built on the Terraform Plugin SDK can be found at terraform-provider-scaffolding. See Which SDK Should I Use? in the Terraform documentation for additional information.

This repository is a template for a Terraform provider. It is intended as a starting point for creating Terraform providers, containing:

  • A resource and a data source (internal/provider/),
  • Examples (examples/) and generated documentation (docs/),
  • Miscellaneous meta files.

These files contain boilerplate code that you will need to edit to create your own Terraform provider. Tutorials for creating Terraform providers can be found on the HashiCorp Learn platform. Terraform Plugin Framework specific guides are titled accordingly.

Please see the GitHub template repository documentation for how to create a new repository from this template on GitHub.

Once you've written your provider, you'll want to publish it on the Terraform Registry so that others can use it.

Requirements

Building The Provider

  1. Clone the repository
  2. Enter the repository directory
  3. Build the provider using the Go install command:
go install

Adding Dependencies

This provider uses Go modules. Please see the Go documentation for the most up to date information about using Go modules.

To add a new dependency github.com/author/dependency to your Terraform provider:

go get github.com/author/dependency
go mod tidy

Then commit the changes to go.mod and go.sum.

Using the provider

Fill this in for each provider

Developing the Provider

If you wish to work on the provider, you'll first need Go installed on your machine (see Requirements above).

To compile the provider, run go install. This will build the provider and put the provider binary in the $GOPATH/bin directory.

To generate or update documentation, run go generate.

In order to run the full suite of Acceptance tests, run make testacc.

Note: Acceptance tests create real resources, and often cost money to run.

make testacc
Owner
HashiCorp
Consistent workflows to provision, secure, connect, and run any infrastructure for any application.
HashiCorp
Comments
  • Documentation:  Plugin module addressing

    Documentation: Plugin module addressing

    I had substantial difficulty figuring out how terraform locates plugin and understanding "Address" in ServeOpts works in plugin discovery and initialization.

    The relationship between the top-level project (e.g. github project name), the ServeOpts address, and the go modules were unclear in the documentation and tutorial. For example when building the project, if the last plugin name is "abc", then terraform seems to look for: terraform-provider-abc in the go bin directory (apparently requiring the GO project to be called terraform-provider-abc) and the last segment of the Address needs to be "abc".

    The server opts address value in main.go, .terraformrc, and project name need to "align" (but not equal).

    This was difficult because the current hashicups example tutorial does not use the current plugin framework scaffolding and uses a different plugin start procedure avoiding the ServeOpts Address value.

    Hashicups:

    func main() {
    	tfsdk.Serve(context.Background(), hashicups.New, tfsdk.ServeOpts{
    		Name: "hashicups",
    	})
    }
    

    Plugin Scaffolding Framework:

    func main() {
    	var debug bool
    
    	flag.BoolVar(&debug, "debug", false, "set to true to run the provider with support for debuggers like delve")
    	flag.Parse()
    
    	opts := providerserver.ServeOpts{
    		// TODO: Update this string with the published name of your provider.
    		Address: "registry.terraform.io/hashicorp/scaffolding",
    		Debug:   debug,
    	}
    
    	err := providerserver.Serve(context.Background(), provider.New(version), opts)
    
    	if err != nil {
    		log.Fatal(err.Error())
    	}
    }
    
  • Failed to load provider schema after upgraded from v0.7.0 to v0.8.0

    Failed to load provider schema after upgraded from v0.7.0 to v0.8.0

    with current v0.8.0: opts := providerserver.ServeOpts{ // TODO: Update this string with the published name of your provider. Address: "<host/ns/name>", Debug: debug, } How to file the Address when develop the provider on local side ?

    On previous verison v0.7.0, my local provider works fine with: tfsdk.ServeOpts{ Name: "tca", }

    But after upgraded to v.0.8.0, it always failed to load the provider schema as: Error while loading schemas for plugin components: Failed to obtain provider schema: Could not load the schema for provider terraform/provider/tca: failed to instantiate provider "terraform/provider/tca" to obtain schema: Unrecognized │ remote plugin message:

    another way to reproduce the same error is modify the Name to Address as below under v0.7.0: tfsdk.ServeOpts{ Address: "tca", }

  • Bump github.com/hashicorp/terraform-plugin-sdk/v2 from 2.18.0 to 2.19.0

    Bump github.com/hashicorp/terraform-plugin-sdk/v2 from 2.18.0 to 2.19.0

    Bumps github.com/hashicorp/terraform-plugin-sdk/v2 from 2.18.0 to 2.19.0.

    Release notes

    Sourced from github.com/hashicorp/terraform-plugin-sdk/v2's releases.

    v2.19.0

    NOTES:

    • The underlying terraform-plugin-log dependency has been updated to v0.6.0, which includes log filtering support and breaking changes of With() to SetField() function names. Any provider logging which calls those functions may require updates. (#1003)
    Changelog

    Sourced from github.com/hashicorp/terraform-plugin-sdk/v2's changelog.

    2.19.0 (July 15, 2022)

    NOTES:

    • The underlying terraform-plugin-log dependency has been updated to v0.6.0, which includes log filtering support and breaking changes of With() to SetField() function names. Any provider logging which calls those functions may require updates. (#1003)
    Commits
    • b61403b Update CHANGELOG for 2.19.0
    • 9f6c454 Update CHANGELOG for #1003
    • 9ab0fa2 build(deps): Bump github.com/hashicorp/terraform-plugin-log from 0.4.1 to 0.6...
    • 70ce77b .github: Remove @​hashicorp/team-tw-packer-and-terraform from CODEOWNERS (#999)
    • d02874b build(deps): Bump github.com/hashicorp/terraform-plugin-go (#1000)
    • 62e2d2d website: Documentation for parallel logging issues with TF_LOG_PATH_MASK (#997)
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump github.com/hashicorp/terraform-plugin-go from 0.11.0 to 0.12.0

    Bump github.com/hashicorp/terraform-plugin-go from 0.11.0 to 0.12.0

    Bumps github.com/hashicorp/terraform-plugin-go from 0.11.0 to 0.12.0.

    Release notes

    Sourced from github.com/hashicorp/terraform-plugin-go's releases.

    v0.12.0

    NOTES:

    • The underlying terraform-plugin-log dependency has been updated to v0.6.0, which includes log filtering support and breaking changes of With() to SetField() function names. Any provider logging which calls those functions may require updates. (#209)
    Changelog

    Sourced from github.com/hashicorp/terraform-plugin-go's changelog.

    0.12.0 (July 15, 2022)

    NOTES:

    • The underlying terraform-plugin-log dependency has been updated to v0.6.0, which includes log filtering support and breaking changes of With() to SetField() function names. Any provider logging which calls those functions may require updates. (#209)
    Commits
    • 4a24b5d Update CHANGELOG for 0.12.0
    • 2ba77a5 Bump github.com/hashicorp/terraform-plugin-log from 0.4.1 to 0.6.0 (#209)
    • a6fc6ab Bump google.golang.org/grpc from 1.47.0 to 1.48.0 (#207)
    • df65cd8 .github: Remove @​hashicorp/team-tw-packer-and-terraform from CODEOWNERS (#206)
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump github.com/hashicorp/terraform-plugin-log from 0.4.1 to 0.6.0

    Bump github.com/hashicorp/terraform-plugin-log from 0.4.1 to 0.6.0

    Bumps github.com/hashicorp/terraform-plugin-log from 0.4.1 to 0.6.0.

    Release notes

    Sourced from github.com/hashicorp/terraform-plugin-log's releases.

    v0.6.0

    BREAKING CHANGES:

    • tflog: renamed With() and SubsystemWith(), to SetField() and SubsystemSetField() respectively (#78)
    • tflog: renamed WithMaskFieldValueWithFieldKeys() and SubsystemWithMaskFieldValueWithFieldKeys(), to MaskFieldValuesWithFieldKeys() and SubsystemMaskFieldValuesWithFieldKeys() respectively (#78)
    • tflog: renamed WithMaskLogMatchingString() and SubsystemWithMaskLogMatchingString(), to MaskMessageStrings() and SubsystemMaskMessageStrings() respectively (#78)
    • tflog: renamed WithMaskMessageRegex() and SubsystemWithMaskMessageRegex(), to MaskMessageRegexes() and SubsystemMaskMessageRegexes() respectively (#78)
    • tflog: renamed WithOmitLogMatchingString() and SubsystemWithOmitLogMatchingString(), to OmitLogWithMessageStrings() and SubsystemOmitLogWithMessageStrings() respectively (#78)
    • tflog: renamed WithOmitLogWithFieldKeys() and SubsystemWithOmitLogWithFieldKeys(), to OmitLogWithFieldKeys() and SubsystemOmitLogWithFieldKeys() respectively (#78)
    • tflog: renamed WithOmitLogWithMessageRegex() and SubsystemWithOmitLogWithMessageRegex(), to OmitLogWithMessageRegexes() and SubsystemOmitLogWithMessageRegexes() respectively (#78)
    • tfsdklog: same renaming as for the tflog package (#78)

    v0.5.0

    FEATURES:

    • tflog: Added SubsystemWithOmitLogWithFieldKeys(), SubsystemWithOmitLogWithMessageRegex(), SubsystemWithOmitLogMatchingString(), SubsystemWithMaskFieldValueWithFieldKeys(), SubsystemWithMaskMessageRegex() and SubsystemWithMaskLogMatchingString() functions, which provide log omission and log masking filtering, based on message and argument keys, for provider subsystem loggers (#71)
    • tflog: Added WithOmitLogWithFieldKeys(), WithOmitLogWithMessageRegex(), WithOmitLogMatchingString(), WithMaskFieldValueWithFieldKeys(), WithMaskMessageRegex() and WithMaskLogMatchingString() functions, which provide log omission and log masking filtering, based on message and argument keys, for the provider root logger (#71)
    • tfsdklog: Added SubsystemWithOmitLogWithFieldKeys(), SubsystemWithOmitLogWithMessageRegex(), SubsystemWithOmitLogMatchingString(), SubsystemWithMaskFieldValueWithFieldKeys(), SubsystemWithMaskMessageRegex()and SubsystemWithMaskLogMatchingString() functions, which provide log omission and log masking filtering, based on message and argument keys, for SDK subsystem loggers (#71)
    • tfsdklog: Added WithOmitLogWithFieldKeys(), WithOmitLogWithMessageRegex(), WithOmitLogMatchingString(), WithMaskFieldValueWithFieldKeys(), WithMaskMessageRegex() and WithMaskLogMatchingString() functions, which provide log omission and log masking filtering, based on message and argument keys, for the SDK root logger (#71)
    Changelog

    Sourced from github.com/hashicorp/terraform-plugin-log's changelog.

    0.6.0 (July 15, 2022)

    BREAKING CHANGES:

    • tflog: renamed With() and SubsystemWith(), to SetField() and SubsystemSetField() respectively (#78)
    • tflog: renamed WithMaskFieldValueWithFieldKeys() and SubsystemWithMaskFieldValueWithFieldKeys(), to MaskFieldValuesWithFieldKeys() and SubsystemMaskFieldValuesWithFieldKeys() respectively (#78)
    • tflog: renamed WithMaskLogMatchingString() and SubsystemWithMaskLogMatchingString(), to MaskMessageStrings() and SubsystemMaskMessageStrings() respectively (#78)
    • tflog: renamed WithMaskMessageRegex() and SubsystemWithMaskMessageRegex(), to MaskMessageRegexes() and SubsystemMaskMessageRegexes() respectively (#78)
    • tflog: renamed WithOmitLogMatchingString() and SubsystemWithOmitLogMatchingString(), to OmitLogWithMessageStrings() and SubsystemOmitLogWithMessageStrings() respectively (#78)
    • tflog: renamed WithOmitLogWithFieldKeys() and SubsystemWithOmitLogWithFieldKeys(), to OmitLogWithFieldKeys() and SubsystemOmitLogWithFieldKeys() respectively (#78)
    • tflog: renamed WithOmitLogWithMessageRegex() and SubsystemWithOmitLogWithMessageRegex(), to OmitLogWithMessageRegexes() and SubsystemOmitLogWithMessageRegexes() respectively (#78)
    • tfsdklog: same renaming as for the tflog package (#78)

    0.5.0 (July 14, 2022)

    FEATURES:

    • tflog: Added SubsystemWithOmitLogWithFieldKeys(), SubsystemWithOmitLogWithMessageRegex(), SubsystemWithOmitLogMatchingString(), SubsystemWithMaskFieldValueWithFieldKeys(), SubsystemWithMaskMessageRegex() and SubsystemWithMaskLogMatchingString() functions, which provide log omission and log masking filtering, based on message and argument keys, for provider subsystem loggers (#71)
    • tflog: Added WithOmitLogWithFieldKeys(), WithOmitLogWithMessageRegex(), WithOmitLogMatchingString(), WithMaskFieldValueWithFieldKeys(), WithMaskMessageRegex() and WithMaskLogMatchingString() functions, which provide log omission and log masking filtering, based on message and argument keys, for the provider root logger (#71)
    • tfsdklog: Added SubsystemWithOmitLogWithFieldKeys(), SubsystemWithOmitLogWithMessageRegex(), SubsystemWithOmitLogMatchingString(), SubsystemWithMaskFieldValueWithFieldKeys(), SubsystemWithMaskMessageRegex()and SubsystemWithMaskLogMatchingString() functions, which provide log omission and log masking filtering, based on message and argument keys, for SDK subsystem loggers (#71)
    • tfsdklog: Added WithOmitLogWithFieldKeys(), WithOmitLogWithMessageRegex(), WithOmitLogMatchingString(), WithMaskFieldValueWithFieldKeys(), WithMaskMessageRegex() and WithMaskLogMatchingString() functions, which provide log omission and log masking filtering, based on message and argument keys, for the SDK root logger (#71)
    Commits
    • a8c50c1 Preparing CHANGELOG for v0.6.0 (#82)
    • a2e3687 Rework how we store log fields (#81)
    • 60509c8 website: Add tflog requirements section and legacy logging section (#80)
    • 8860c25 Introduce log filtering website page and example Go documentation for filteri...
    • ebc4e79 Adjusting Field/Filtering Function Naming to be More Concise and Less With-y ...
    • 6c641bd Add log filtering functionality (#71)
    • 0f9eafb Prefer using raw fixtures in testing (#74)
    • 0ba79c9 .github: Remove @​hashicorp/team-tw-packer-and-terraform from CODEOWNERS (#73)
    • e4c881d Fixing 'add-content-to-project' workflow (#70)
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump github.com/hashicorp/terraform-plugin-docs from 0.9.0 to 0.10.0

    Bump github.com/hashicorp/terraform-plugin-docs from 0.9.0 to 0.10.0

    Bumps github.com/hashicorp/terraform-plugin-docs from 0.9.0 to 0.10.0.

    Release notes

    Sourced from github.com/hashicorp/terraform-plugin-docs's releases.

    v0.10.0

    BUG FIXES:

    • cmd/tfplugindocs: Allow single word resources to use templates (#147).
    • cmd/tfplugindocs: Pass in correct provider name for data-source and resource schema lookup when overidden with rendered-provider-name flag (#148).

    ENHANCEMENTS:

    • cmd/tfplugindocs: Expose RenderedProviderName to templates (#149).
    Changelog

    Sourced from github.com/hashicorp/terraform-plugin-docs's changelog.

    0.10.0 (June 13, 2022)

    BUG FIXES:

    • cmd/tfplugindocs: Allow single word resources to use templates (#147).
    • cmd/tfplugindocs: Pass in correct provider name for data-source and resource schema lookup when overidden with rendered-provider-name flag (#148).

    ENHANCEMENTS:

    • cmd/tfplugindocs: Expose RenderedProviderName to templates (#149).
    Commits
    • eaa28b7 Preparing CHANGELOG for v0.10.0
    • e52e735 expose RenderedProviderName to templating
    • 042480e generate: pass through correct name of schema provider
    • cbd432b Allowing single word resources to use templates (#147)
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Add a release helper script

    Add a release helper script

    The proposed script is being used mostly verbatim in the hashicorp/azurerm and hashicorp/azuread providers; it's a minimalist but extensible approach to processing a conventional changelog, performing general safety checks and wrapping up the version tagging in advance of the release workflow being invoked by GitHub Actions.

    Before use, the maintainer must set the repository path in the script. This is checked in the script before proceeding with any further steps.

    With no options disabled, running scripts/release.sh -y will:

    • Check a few things like having a clean working tree and checked out main branch, then run unit tests
    • Look for an (Unreleased) version in the changelog and set the current date for it
    • Replace [GH-123] style link refs in the changelog
    • Commit and push the changelog
    • Mint a new tag and push it

    Closing any potential milestones on GitHub is left as an exercise for the maintainer.

  • Resource

    Resource "Create" should read from plan, not config?

    I could be mistaken on this, but the documentation and hashicups all recommend reading from the plan for create.

    However, this scaffolding is configured to read from config: https://github.com/hashicorp/terraform-provider-scaffolding-framework/blob/194f73f1efaa94deeca229e10858551d7e2629a8/internal/provider/example_resource.go#L58

    edit: As an aside, I'm not super clear on when you would actually read directly from config outside of a data source.

  • no required module provides package github.com/hashicorp/terraform-exec/tfinstall

    no required module provides package github.com/hashicorp/terraform-exec/tfinstall

    go generate
    ../../go/pkg/mod/github.com/hashicorp/[email protected]/internal/provider/generate.go:14:2: no required module provides package github.com/hashicorp/terraform-exec/tfinstall; to add it:
            go get github.com/hashicorp/terraform-exec/tfinstall
    main.go:19: running "go": exit status 1
    
  • convertProviderType: incorrect message

    convertProviderType: incorrect message

    Hello

    the convertProviderType function is intended to check that the provider in argument ~satisfies the correct interface~ is identical to the type *scaffoldingProvider:

    p, ok := in.(*scaffoldingProvider)
    

    and then displays an error if it isn't the case:

    fmt.Sprintf("While creating the data source or resource, an unexpected provider type (%T) was received. 
    This is always a bug in the provider code and should be reported to the provider developers.", p),
    

    however if the check fails the value of p is the zero value for the type *scaffoldingProvider, see: https://go.dev/ref/spec#Type_assertions

    As a result fmt.Sprintf should print the type of in, not p

  • Bump github.com/hashicorp/terraform-plugin-log from 0.4.1 to 0.5.0

    Bump github.com/hashicorp/terraform-plugin-log from 0.4.1 to 0.5.0

    Bumps github.com/hashicorp/terraform-plugin-log from 0.4.1 to 0.5.0.

    Release notes

    Sourced from github.com/hashicorp/terraform-plugin-log's releases.

    v0.5.0

    FEATURES:

    • tflog: Added SubsystemWithOmitLogWithFieldKeys(), SubsystemWithOmitLogWithMessageRegex(), SubsystemWithOmitLogMatchingString(), SubsystemWithMaskFieldValueWithFieldKeys(), SubsystemWithMaskMessageRegex() and SubsystemWithMaskLogMatchingString() functions, which provide log omission and log masking filtering, based on message and argument keys, for provider subsystem loggers (#71)
    • tflog: Added WithOmitLogWithFieldKeys(), WithOmitLogWithMessageRegex(), WithOmitLogMatchingString(), WithMaskFieldValueWithFieldKeys(), WithMaskMessageRegex() and WithMaskLogMatchingString() functions, which provide log omission and log masking filtering, based on message and argument keys, for the provider root logger (#71)
    • tfsdklog: Added SubsystemWithOmitLogWithFieldKeys(), SubsystemWithOmitLogWithMessageRegex(), SubsystemWithOmitLogMatchingString(), SubsystemWithMaskFieldValueWithFieldKeys(), SubsystemWithMaskMessageRegex()and SubsystemWithMaskLogMatchingString() functions, which provide log omission and log masking filtering, based on message and argument keys, for SDK subsystem loggers (#71)
    • tfsdklog: Added WithOmitLogWithFieldKeys(), WithOmitLogWithMessageRegex(), WithOmitLogMatchingString(), WithMaskFieldValueWithFieldKeys(), WithMaskMessageRegex() and WithMaskLogMatchingString() functions, which provide log omission and log masking filtering, based on message and argument keys, for the SDK root logger (#71)
    Changelog

    Sourced from github.com/hashicorp/terraform-plugin-log's changelog.

    0.5.0 (July 14, 2022)

    FEATURES:

    • tflog: Added SubsystemWithOmitLogWithFieldKeys(), SubsystemWithOmitLogWithMessageRegex(), SubsystemWithOmitLogMatchingString(), SubsystemWithMaskFieldValueWithFieldKeys(), SubsystemWithMaskMessageRegex() and SubsystemWithMaskLogMatchingString() functions, which provide log omission and log masking filtering, based on message and argument keys, for provider subsystem loggers (#71)
    • tflog: Added WithOmitLogWithFieldKeys(), WithOmitLogWithMessageRegex(), WithOmitLogMatchingString(), WithMaskFieldValueWithFieldKeys(), WithMaskMessageRegex() and WithMaskLogMatchingString() functions, which provide log omission and log masking filtering, based on message and argument keys, for the provider root logger (#71)
    • tfsdklog: Added SubsystemWithOmitLogWithFieldKeys(), SubsystemWithOmitLogWithMessageRegex(), SubsystemWithOmitLogMatchingString(), SubsystemWithMaskFieldValueWithFieldKeys(), SubsystemWithMaskMessageRegex()and SubsystemWithMaskLogMatchingString() functions, which provide log omission and log masking filtering, based on message and argument keys, for SDK subsystem loggers (#71)
    • tfsdklog: Added WithOmitLogWithFieldKeys(), WithOmitLogWithMessageRegex(), WithOmitLogMatchingString(), WithMaskFieldValueWithFieldKeys(), WithMaskMessageRegex() and WithMaskLogMatchingString() functions, which provide log omission and log masking filtering, based on message and argument keys, for the SDK root logger (#71)
    Commits
    • 6c641bd Add log filtering functionality (#71)
    • 0f9eafb Prefer using raw fixtures in testing (#74)
    • 0ba79c9 .github: Remove @​hashicorp/team-tw-packer-and-terraform from CODEOWNERS (#73)
    • e4c881d Fixing 'add-content-to-project' workflow (#70)
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Terraform provider to help with various AWS automation tasks (mostly all that stuff we cannot accomplish with the official AWS terraform provider)
Terraform provider to help with various AWS automation tasks (mostly all that stuff we cannot accomplish with the official AWS terraform provider)

terraform-provider-awsutils Terraform provider for performing various tasks that cannot be performed with the official AWS Terraform Provider from Has

Dec 8, 2022
Terraform Provider for Azure (Resource Manager)Terraform Provider for Azure (Resource Manager)
Terraform Provider for Azure (Resource Manager)Terraform Provider for Azure (Resource Manager)

Terraform Provider for Azure (Resource Manager) Version 2.x of the AzureRM Provider requires Terraform 0.12.x and later, but 1.0 is recommended. Terra

Oct 16, 2021
Terraform-provider-mailcow - Terraform provider for Mailcow

Terraform Provider Scaffolding (Terraform Plugin SDK) This template repository i

Dec 31, 2021
Terraform-provider-buddy - Terraform Buddy provider For golang

Terraform Provider for Buddy Documentation Requirements Terraform >= 1.0.11 Go >

Jan 5, 2022
Terraform-provider-vercel - Terraform Vercel Provider With Golang

Vercel Terraform Provider Website: https://www.terraform.io Documentation: https

Dec 14, 2022
Terraform-provider-age - Age Terraform Provider with golang

Age Terraform Provider This provider lets you generate an Age key pair. Using th

Feb 15, 2022
Terraform Provider Scaffolding (Terraform Plugin SDK)

Terraform Provider Scaffolding (Terraform Plugin SDK) This template repository is built on the Terraform Plugin SDK. The template repository built on

Feb 8, 2022
OpenAPI Terraform Provider that configures itself at runtime with the resources exposed by the service provider (defined in a swagger file)
OpenAPI Terraform Provider that configures itself at runtime with the resources exposed by the service provider (defined in a swagger file)

Terraform Provider OpenAPI This terraform provider aims to minimise as much as possible the efforts needed from service providers to create and mainta

Dec 26, 2022
Hashicups-tf-provider - HashiCups Terraform Provider Tutorial

Terraform Provider HashiCups Run the following command to build the provider go

Jan 10, 2022
Terraform Provider for the GitLab Repository Files API

Terraform Provider GitLab Repository Files API Requirements Terraform >= 0.13.x Go >= 1.15 Building The Provider Clone the repository Enter the reposi

Jun 14, 2022
terraform-plugin-mux Example (framework + framework)

Terraform Provider Scaffolding (Terraform Plugin Framework) This template repository is built on the Terraform Plugin Framework. The template reposito

Feb 8, 2022
This plugin helps you to use the AWS Command Line Interface (AWS CLI) to start and end sessions to your managed instances

Session Manager Plugin This plugin helps you to use the AWS Command Line Interface (AWS CLI) to start and end sessions to your managed instances. Sess

Dec 28, 2022
Stop using install.sh! Start using install.yml! DAJE...

Daje - A general purpose Ansible dotfiles installer Configure one time and run everywhere. What is this I've never liked using a big bash script to in

Nov 14, 2022
Terraform utility provider for constructing bash scripts that use data from a Terraform module

Terraform Bash Provider This is a Terraform utility provider which aims to robustly generate Bash scripts which refer to data that originated in Terra

Sep 6, 2022
Terraform-in-Terraform: Execute Modules directly from the Terraform Registry

Terraform-In-Terraform Provider This provider allows running Terraform in Terraform. This might seem insane but there are some edge cases where it com

Dec 25, 2022
terraform-plugin-mux Example (upgrade(sdk/v2) + framework)

Terraform Provider Scaffolding (Terraform Plugin Framework) This template repository is built on the Terraform Plugin Framework. The template reposito

Feb 8, 2022
Dredger is a utility to help convert helm charts to Terraform modules using kubernetes provider.

dredger Dredger is a utility to help convert helm charts to Terraform modules using kubernetes provider. Dredger is made of dark magic and cannot full

Aug 25, 2022
terraform-provider-jwk allows to generate jwk documents using a public_key

Terraform-provider-jwk A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) datastructure that represents a cryptographic key, these public key

Mar 18, 2022