Code Monkey home page Code Monkey logo

terraform-provider-conjur's Introduction

terraform-provider-conjur

Terraform provider for Conjur.

GitHub release

Maintainability


Installation

Using terraform-provider-conjur with Conjur Open Source

Are you using this project with Conjur Open Source? Then we strongly recommend choosing the version of this project to use from the latest Conjur OSS suite release. Conjur maintainers perform additional testing on the suite release versions to ensure compatibility. When possible, upgrade your Conjur version to match the latest suite release; when using integrations, choose the latest suite release that matches your Conjur version. For any questions, please contact us on Discourse.

Binaries (Recommended)

The recommended way to install terraform-provider-conjur is to use the binary distributions from this project's GitHub Releases page. The packages are available for Linux, macOS and Windows.

Download and uncompress the latest release for your OS. This example uses the linux binary.

Note: Replace $VERSION with the one you want to use. See releases page for available versions.

$ wget https://github.com/cyberark/terraform-provider-conjur/releases/download/v$VERSION/terraform-provider-conjur-$VERSION-linux-amd64.tar.gz
$ tar -xvf terraform-provider-conjur*.tar.gz

If you already have an unversioned plugin that was previously downloaded, we first need to remove it:

$ rm -f ~/.terraform.d/plugins/terraform-provider-conjur

Now copy the new binary to the Terraform's plugins folder. If this is your first plugin, you will need to create the folder first.

$ mkdir -p ~/.terraform.d/plugins/
$ mv terraform-provider-conjur*/terraform-provider-conjur* ~/.terraform.d/plugins/

Homebrew (MacOS)

Add and update the CyberArk Tools Homebrew tap.

$ brew tap cyberark/tools

Install the provider and symlink it to Terraform's plugins directory. Symlinking is necessary because Homebrew is sandboxed and cannot write to your home directory.

Note: Replace $VERSION with the appropriate plugin version

$ brew install terraform-provider-conjur

$ mkdir -p ~/.terraform.d/plugins/

$ # If Homebrew is installing somewhere other than `/usr/local/Cellar`, update the path as well.
$ ln -sf /usr/local/Cellar/terraform-provider-conjur/$VERSION/bin/terraform-provider-conjur_* \
    ~/.terraform.d/plugins/

Compile from Source

If you wish to compile the provider from source code, you will first need Go installed on your machine (version >=1.12 is required).

  • Clone repository and go into the cloned directory
$ git clone https://github.com/cyberark/terraform-provider-conjur.git
$ cd terraform-provider-conjur
  • Build the provider
$ mkdir -p ~/.terraform.d/plugins/
$ # Note: If a static binary is required, use ./bin/build to create the executable
$ go build -o ~/.terraform.d/plugins/terraform-provider-conjur main.go

Usage

Workflow

Terraform can be run manually by users, but it is often run by machines. Conjur supports authentication and authorization for both.

If you are logged into the Conjur CLI, this provider will read your configuration. If you have applied Conjur machine identity, this provider will read the machine's configuration.

To access the values of secrets, the user/machine needs execute privilege on the Conjur variables referenced in your Terraform manifests.

For more details, see the "Authentication" section on this page.

Provider configuration

The provider uses conjur-api-go to load its configuration. conjur-api-go can be configured using environment variables or using the provider configuration in the .tf file.

Using environment variables

export CONJUR_APPLIANCE_URL="https://conjur-server"
export CONJUR_ACCOUNT="myorg"
export CONJUR_AUTHN_LOGIN="admin"
export CONJUR_AUTHN_API_KEY="3ahcddy39rcxzh3ggac4cwk3j2r8pqwdg33059y835ys2rh2kzs2a"
export CONJUR_CERT_FILE="/etc/conjur.pem"

No other configuration is necessary in main.tf:

# main.tf

# Configure the Conjur provider using the required_providers stanza
# required with Terraform 0.13 and beyond. You may optionally use version
# directive to prevent breaking changes occurring unannounced.
terraform {
  required_providers {
    conjur = {
      source  = "cyberark/conjur"
    }
  }
}

provider "conjur" {}

Using attributes

In addition, the provider can be configured using attributes in the configuration. Attributes specified in main.tf override the configuration loaded by conjur-api-go.

For example, with conjur_api_key and conjur_ssl_certdefined as input variables, this type of configuration could be used:

# main.tf
variable "conjur_api_key" {}
variable "conjur_ssl_cert" {}
# If you have the certificate as a file, use this line instead
# variable "conjur_ssl_cert_path" {}

provider "conjur" {
  appliance_url = "http://conjur-server"
  ssl_cert = var.conjur_ssl_cert
  # If you have the certificate as a file, use this line instead
  # ssl_cert_path = var.conjur_ssl_cert_path

  account = "myorg"

  login = "admin"
  api_key = var.conjur_api_key
}

Notes on precedence of configuration variable setting:

  • If both the environment variable and .tf configuration are present for a configuration setting, the .tf configuration takes precedence and the environment variable will be ignored.
  • If the .tf configuration does not include both login and api_key, then environment variables will be used for these values instead.

Fetch secrets

Preface

An important thing to keep in mind is that by design Terraform state files can contain sensitive data (which may include credentials fetched by this plugin). Use Terraform's recommendations found here to protect these values where possible.

Example

Note: If plan is being run manually, you will need to run terraform init first!

# main.tf
# ... provider configuration above

data "conjur_secret" "dbpass" {
  name = "my/shiny/dbpass"
}

output "dbpass_output" {
  value = "${data.conjur_secret.dbpass.value}"
  
  # Must mark this output value as sensitive for Terraform v0.15+,
  # because it's derived from a Conjur variable value that is declared
  # as sensitive.
  sensitive = true
}

Secrets like data.conjur_secret.dbpass.value can be used in any Terraform resources.

View an example Terraform manifest and Conjur policies in the test/ directory in this project.


Alternate Workflow with Summon

If this Terraform provider does not fit your needs, you can also use summon with the summon-conjur provider to provide secrets to Terraform via environment variables. The user running terraform must already be authenticated with Conjur.

Terraform's TF_VAR_name syntax allows a user to set Terraform variables via environment variables. To use Terraform with Summon, prefix the environment variable names in secrets.yml with TF_VAR_.

Example

# variables.tf
variable "access_key" {}
variable "secret_key" {}
# secrets.yml
TF_VAR_access_key: !var aws/dev/sys_powerful/access_key_id
TF_VAR_secret_key: !var aws/dev/sys_powerful/secret_access_key

Run Terraform with Summon:

$ summon terraform apply

Contributing

We welcome contributions of all kinds to this repository. For instructions on how to get started and descriptions of our development workflows, please see our contributing guide.

License

Copyright 2016-2022 CyberArk

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this software except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

terraform-provider-conjur's People

Contributors

andytinkham avatar apotterri avatar bradleyboutcher avatar brikelly avatar davmatjo avatar dependabot[bot] avatar diverdane avatar doodlesbykumbi avatar drewatx avatar dustinmm80 avatar erz4 avatar garymoon avatar gl-johnson avatar infamousjoeg avatar ismarc avatar jakequilty avatar john-odonnell avatar jonahx avatar jtuttle avatar juniortaeza avatar jvanderhoof avatar neil-k-zero avatar nirupma-verma avatar perrygold avatar pradeepcyberark avatar rpothier avatar sgnn7 avatar szh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

terraform-provider-conjur's Issues

Terraform has a Conjur Provider

ETA for completion of this epic: 2018-09-21
Confidence level of ETA accuracy: High

Context

HashiCorp's Terraform is a widely-used tool used to manage infrastructure as code. Terraform manifests are written in HCL.

Terraform is extendable with providers, which can declare their own resources. A Conjur provider does not yet exist. Secrets are often needed in Terraform manifests, so being able to fetch them from Conjur improves the security stance of Terraform.

Current Capabilities

It is currently possible to fetch secrets from Conjur within Terraform by injecting them via environment variables. This requires the use of summon and specially named environment variables. While this is possible, the goal of creating a Conjur provider is to provide a better experience.

In order to use summon + environment variables, the user running terraform must already be authenticated with Conjur.

Terraform's TF_VAR_name syntax allows a user to set Terraform variables via environment variables. To use Terraform with Summon, prefix the environment variable names in secrets.yml with TF_VAR_.

secrets.yml

TF_VAR_access_key: !var aws/dev/sys_powerful/access_key_id
TF_VAR_secret_key: !var aws/dev/sys_powerful/secret_access_key

variables.tf

variable "access_key" {} /* Variable pulled from TF_VAR_access_key environment variable */
variable "secret_key" {} /* Variable pulled from TF_VAR_secret_key environment variable */

Run Terraform with Summon:

summon terraform apply

Objective

Provide a Terraform conjur provider with a conjur_secret resource that can be used to fetch secrets from a configured Conjur v5 instance.

We should also instruct customers on how to use rotation (and possible encryption) to handle exposed secrets in plan files.

Original Epic Goal & Resources

Initial support

When using Terraform, credentials will be able to be pulled out of Conjur.

This should mirror what HC currently implements as part of their Vault provider. Our provider will leverage rotation to remove credentials exposed.

Terraform Provider Configuration

Prerequisite is a setup and configured Conjur instance. In order to configure the Terraform provider, configuration values can be included in the Terraform manifest, or can be loaded using the standard Conjur client configuration mechanisms (e.g. ~/.conjurrc, environment variables, etc). Values specified in the configuration file take precedence over other values.

Policy For Examples

Terraform Manifest Provider Configuration

provider "conjur" {
  appliance_url = "http://localhost:8080" /* The Conjur appliance URL */
  account = "quick-start" /* The Conjur account */
  login = "admin" /* The Conjur authn login */
  api_key = "3ahcddy39rcxzh3ggac4cwk3j2r8pqwdg33059y835ys2rh2kzs2a" /* The Conjur authn API key */
  ssl_cert_path = "/etc/conjur.pem" /* The Conjur certificate file */
}

Environment Variable Provider Configuration

export CONJUR_APPLIANCE_URL="https://localhost:8080"
export CONJUR_ACCOUNT="quick-start"
export CONJUR_AUTHN_LOGIN="admin"
export CONJUR_AUTHN_API_KEY="3ahcddy39rcxzh3ggac4cwk3j2r8pqwdg33059y835ys2rh2kzs2a"
export CONJUR_CERT_FILE="/etc/conjur.pem"

And then within the Terraform manifest:

provider "conjur" {}

Fetching Secrets Within Terraform

Secrets are dynamically fetched from the Conjur service and injected as variables into the Terraform manifest when used. They need to be defined within the Terraform manifest prior to use.

Declaring Conjur Sourced Variables

The variables need to be declared prior to use. They are declared like any other data variable with Terraform, using the path within Conjur for the name.

data "conjur_secret" "dbpass" {
  name = "path/to/secret" /* The Conjur secret to fetch */
}

Using Variables

The data for the variable is extracted into data.<declared_path>.<declared_name>.value. This can be then tied to a Terraform output in order to be used. The 'sensitive' declaration of true will prevent the value from being printed to the console, but will not prevent it from showing up in .plan files or logs.

output "dbpass_output" {
  value = "${data.conjur_secret.dbpass.value}" /* Extract the value from the declared variable */
  sensitive = true  /* Whether to log the value to the console when running */
}

Full Terraform Manifest example

main.tf

provider "conjur" {
  appliance_url = "http://localhost:8080" /* The Conjur appliance URL */
  account = "quick-start" /* The Conjur account */
  login = "admin" /* The Conjur authn login */
  api_key = "3ahcddy39rcxzh3ggac4cwk3j2r8pqwdg33059y835ys2rh2kzs2a" /* The Conjur authn API key */
  ssl_cert_path = "/etc/conjur.pem" /* The Conjur certificate file */
}

data "conjur_secret" "dbpass" {
  name = "path/to/secret" /* The Conjur secret to fetch */
}

output "dbpass_output" {
  value = "${data.conjur_secret.dbpass.value}" /* Extract the value from the declared variable */
  sensitive = true  /* Whether to log the value to the console when running */
}

Additional Notes

  • If any of the provided credentials change and are needed in any resources, terraform apply needs to be run so that the secrets are available.

  • Test Conjur v5 Enterprise w/ Jenkins pipeline - parent of #2
  • Add homebrew release - parent of #3
  • Document summon + terraform flow - parent of #4
  • Use a better, more interesting test policy - parent of #5
  • Is there a way to avoid the secrets ending up in state files? - parent of #6 (closed)
  • Document how to install this provider - parent of #11
  • The provider uses the API to load configuration - parent of #12
  • A demo shows that the provider can be part of creating a Rails app - parent of #13
  • Provider should be documented on conjur.org - parent of #19
  • README is missing Authentication and Policy sections - parent of #20

Copied from original issue: conjurinc/appliance#262

Add unit tests

Currently, this repo only has integration tests. Some level of unit testing would improve cycle times and ensure that we cover even more code with testing that we don't do with our integration tests.

AC:

  • Provider code logic paths are unit tested

Take the output example out of documentation

output "dbpass_output" {
  value = "${data.conjur_secret.dbpass.value}"
  sensitive = true  # toggle this off to view value
}

When used in a remote state environment this will write your secret out to a state file in plaintext. In the documentation there should at least be a disclaimer around this warning people not to do this.

Terraform v0.12.0 - Incompatible API version with plugin

The provider doesn't work with Terraform v0.12.0
Error message after "terraform apply":

Error: Failed to instantiate provider "conjur" to obtain schema: Incompatible API version with plugin. Plugin version: 4, Client versions: [5]

Use a better, more interesting test policy

It's just a single variable right now.

Instead, we should have a policy with a layer of web applications authorized to fetch a certain secret. Both the demo and tests should use this. Reuse an existing demo app if possible.

This is related to #13 and probably will be completed before it. If so we'll close that issue.

Manifest example in provider's documentation is wrong.

Summary

Manifest example in provider's documentation is wrong.

Expected Results

The provider name should be "cyberark/conjur".

Actual Results (including error logs, if applicable)

The provider name is "conjur" and terraform init fails with the below:

Initializing the backend...

Initializing provider plugins...
- Checking for available provider plugins...

Provider "conjur" not available for installation.

A provider named "conjur" could not be found in the Terraform Registry.

This may result from mistyping the provider name, or the given provider may
be a third-party provider that cannot be installed automatically.

In the latter case, the plugin must be installed manually by locating and
downloading a suitable distribution package and placing the plugin's executable
file in the following directory:
    terraform.d/plugins/linux_amd64

Terraform detects necessary plugins by inspecting the configuration and state.
To view the provider versions requested by each module, run
"terraform providers".


Error: no provider exists with the given name


ERROR: 1

Reproducible

  • Always
  • Sometimes
  • Non-Reproducible

Recompile provider and test to prepare for new release

A new release of Terraform came out, but our current plugin doesn’t work with it.

AC:

  • Recompile our provider, and verify that it works with the latest release of Terraform
  • If the previous step is complete, add a commit with an updated CHANGELOG and version number for our provider to facilitate a new release

Any additional easy work to improve this project, including improved test coverage or improved documentation, would also be appreciated.

standardised CHANGELOG exists, and is validated via pipeline

If the repo has a changelog that doesn't meet the standard, do try to change earlier entries to match the standard.
If the repo doesn't have a changelog use this as a starter:

# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [Unreleased]

Acceptance criteria

Document how to install this provider

We should doc in README how to install this provider. Can you point terraform to a github tarball release?

Once #3 is done, we can show homebrew install instructions too.

Update to use official goreleaser Docker image

Currently this repo uses the cyberark/goreleaser Docker image, but since the official goreleaser/goreleaser image was recently updated, it should work for our use cases. We should update to use the official goreleaser image in lieu of our custom one so that our custom image can be deprecated.

Support authentication using access token

Is your feature request related to a problem? Please describe.

I would like to authenticate to the provider with access token along with authenticating with API because I want to run terraform in K8S cluster where the conjur k8s authenticator provides me an access token.

Describe the solution you would like

Add variable to the provider of access_token and make it alternative to the api_key

Clean up README

Currently the README is severely out of date and needs a bit of cleanup

AC:

  • There is no outdated information in README

Add support for Conjur Cloud

Summary

When using the provider with Conjur Cloud, requires /api to be included in the appliance url. Since this is supported between self-hosted and Conjur Cloud, hardcode of /api should be included.

Steps to Reproduce

  1. Get Conjur Cloud tenant.
  2. Setup provider without /api on end of appliance url.
  3. Witness failure.

Expected Results

/api should be hardcoded into the request URL to not require it to be provided.

Actual Results

Results in error with /api is not provided as part of appliance url.

Reproducible

  • Always
  • Sometimes
  • Non-Reproducible

Version/Tag number

  • Affects every version

Environment setup

  • It doesn't matter. Affects every environment.

Additional Information

n/a

Many provider attributes are not supported

Issue description

Steps to reproduce the issue

Assumptions

  • Conjur master is setup
  • Valid credentials are available to the Terraform script as variables
  1. Given the following TF template:
    # main.tf
    provider "conjur" {
      account = "${var.conjur_account}"
      appliance_url = "${var.conjur_appliance_url}"
      api_key = "${var.conjur_api_key}"
      login = "${var.conjur_login}"
      ssl_cert = "${var.conjur_ssl_cert}"
      ssl_cert_path = "${var.conjur_ssl_path}"
    }
    
  2. Run terraform apply

What's the expected result?

  • The values for account, appliance_url, ssl_cert, and ssl_cert_path are used to connect to Conjur

What's the actual result?

  • Only the values for api_key and login are used to connect. The rest of the values must be set using environment variables.

Dev Notes

In tracking this bug down, I noticed the environment variables mentioned in the readme (ex. export CONJUR_APPLIANCE_URL="https://localhost:8443") are the environment variables the Conjur GoLang library uses. It looks like the convention for setting configuration with environment variables is more like:

Schema: map[string]*schema.Schema{
  "appliance_url": &schema.Schema{
    Type: schema.TypeString,
    Required: true,
    DefaultFunc: schema.EnvDefaultFunc("CONJUR_APPLIANCE_URL", nil),
    Description: "URL of the Conjur Appliance",
  },
  "account": &schema.Schema{
    Type: schema.TypeString,
    Required: true,
    DefaultFunc: schema.EnvDefaultFunc("CONJUR_ACCOUNT", nil),
    Description: "Conjur Account",
  },
  ...
}

which creates a more direct mapping between the environment variables and the provider attributes. Does it make sense to update this technical debt as part of this effort?

Add Windows instructions to README

Currently there are no good instructions for installing and running this plugin on Windows.

AC:

  • README contains instructions on how to install and run this plugin on Windows

Terraform support

From @ismarc on August 2, 2018 15:18

Context

HashiCorp's Terraform is a widely-used tool used to manage infrastructure as code. Terraform manifests are written in HCL.

Terraform is extendable with providers, which can declare their own resources. A Conjur provider does not yet exist. Secrets are often needed in Terraform manifests, so being able to fetch them from Conjur improves the security stance of Terraform.

Objective

Provide a Terraform conjur provider with a conjur_secret resource that can be used to fetch secrets from a configured Conjur v5 instance.

We should also instruct customers on how to use rotation (and possible encryption) to handle exposed secrets in plan files.

Original Epic Goal & Resources

Initial support: pull credentials out of Conjur when using Terraform.

Initial will would mirror what HC currently implements as part of their Vault provider. Our provider will leverage rotation to remove credentials exposed.


Copied from original issue: conjurinc/appliance#262

Add an ability to update Conjur secret

Is your feature request related to a problem? Please describe.

Ability to update the Conjur secret value

Describe the solution you would like

Using the AddSecret function form conjur-api-go

Describe alternatives you have considered

No alternatives

Additional context

Already created PR with test case for this feature
#133

Add homebrew release

Since HashiCorp doesn't provide an easy way to install community Terraform providers, we should provide a Homebrew formula, similar to https://github.com/beamly/terraform-provider-gocd#installation.

The project is already integrated with goreleaser, we just need to set up the homebrew parts. Since this is a binary that needs to be installed in a non-standard place, use summon-conjur as a guide:
https://github.com/cyberark/summon-conjur/blob/master/.goreleaser.yml#L30.

Users should be able to run these commands to install the provider:

brew tap cyberark/tools
brew install terraform-provider-conjur

Note that we need to release a 0.1.0 initial version to get this working. This task is a followup from #15 anyways.

Publish the provider on registry.terraform.io

Is your feature request related to a problem? Please describe.

Terraform providers are now easily downlodable through official Terraform registry

It could allow simple installation as follow :

terraform {
  required_providers {
    conjur = {
      source  = "cyberark/conjur"
      version = "~> 0.4"
    }
  }
}

Describe the solution you would like

Publicsh the provider following the Terraform documentation about publishing provider to the Terraform registry.

Describe alternatives you have considered

Manually download the provider and put it in the right directory before execution. But it's a pain to maintain and required additional dependencies like curl/wget/tar

Additional context

N/A

Review technical debt in repo and determine nearterm improvements

Review this repo:

  • Determine whether improvements can be made to update/modernize the release process
  • Review README and CONTRIBUTING to determine if either documentation set is missing important information
  • Determine if automated test suite should be augmented to alert maintainer team to possible breakages earlier
  • Determine what sorts of standard maintenance tasks this repo requires. Does it need regular review to update the Terraform version used in the integration tests? Are there other dependencies (eg Golang?) that should be updated at regular intervals?
  • Determine whether any additional updates should be slated for work soon, including potential feature requests logged in GitHub issues (for small changes, we can work into backlog - for larger changes that take greater than one standard 2-3 day PR cycle, we will raise with PM)

The output of this spike will be a list of items for each category above listed in a comment on this issue, and linking to the GitHub issues for each item.

Apple silicon installation failure

Summary

Installing conjur provider on apple silicon fails

Steps to Reproduce

required_providers {
    conjur = {
      source = "cyberark/conjur"
      version = "0.6.3"
    }
}
terraform init

Expected Results

Successful init

Actual Results

│ Error: Failed to install provider
│
│ Error while installing cyberark/conjur v0.6.3: provider binary not found: could not find executable file starting with terraform-provider-conjur

Reproducible

  • Always
  • Sometimes
  • Non-Reproducible

Version/Tag number

latest

Environment setup

darwin arm64

Additional Information

None

New Terraform version has been released

@Andrew.Copeland has made some changes to our terraform provider in order to support the new version of terraform that came out.

The objective of this card is :

  1. To ensure all changes are in
  2. To release the binaries of the provider

Also see
#26

Move build infra to GitHub actions

We can automate a lot of tasks that are currently manual with GitHub actions and move away from gitlab/Jenkins.

AC:

  • Testing is done on all opened PRs
  • Tag creation creates a draft release with attached artifacts of build
  • Any other tasks that make sense automated w/ GH actions should be moved there too

Add resource to create secrets

Is your feature request related to a problem? Please describe.

I would like to be able to create secrets with Terraform.

Describe the solution you would like

Create a new resource to create secrets with a policy via Terraform.

Describe alternatives you have considered

Currently we are hacking a similar solution based on a shell script used within a null_resource local-exec resource which feels pretty wrong.

Additional context

None

Automate notification of upstream dependency failures

Currently there is no easy way for us to notice if there is a change in upstream dependencies that breaks this plugin. We need to research and apply a way to do this.

AC:

  • We have automation that can notify us when upstream dependencies break this plugin

Update to use the v2 plugin SDK

Is your feature request related to a problem? Please describe.

In #77 this plugin was updated to use the v1 plugin SDK, but v2 has been released for some time.

Describe the solution you would like

In this issue, we should update to the v2 plugin SDK. There is a migration guide here.

During this process, we should investigate our test infrastructure for this project to identify any potential improvements.

Install the provider, not recognized by tf v.0.14.5

Summary

When I tried to install the provider by using the instructions, I wasn't able to get that up and running. I had to change the folder structure and had to tell terraform where to find the provider:

It has to be at a different place now, e.g.
.terraform.d/plugins/cyberark.com/edu/conjur/0.4.0/linux_amd64
and has to be named as:
terraform-provider-conjur

and requires an entry in the main.tf
terraform {
required_providers {
conjur = {
version = "0.4.0"
source = "cyberark.com/edu/conjur"
}
}
}

The provider uses the API to load configuration

Rather than duplicate support for loading configuration from various sources (including the CONJUR_* environment variables), the provider should just have conjur-api-go load the configuration.

After the configuration is loaded, any values specified in the manifest can be applied to the configuration.

No version is available

Issue description

This provider does not include any version information. This makes validating which version you have very problematic.

Steps to reproduce the issue

  1. View Terraform version:
    $ terraform version
    

What's the expected result?

Output would look something like:

Terraform v0.12.1
+ provider.conjur v0.2

What's the actual result?

Terraform v0.12.1
+ provider.conjur (unversioned)

Error verifying GPG signature for provider "cyberark/conjur"

Summary

Unable to use Conjur provider for Terraform.

Steps to Reproduce

Steps to reproduce the behavior:

  1. Using this simple main.tf
provider "aws" {
  version = "~> 2.0"
  region = "eu-west-3"
}


provider "cyberark/conjur" {
  version = "0.6.2"
}
  1. And this docker image: hashicorp/terraform:latest (2021/09/08)

  2. Terraform init fails with the below error:

Creating conjur_playground_terraform_run ... done

Initializing the backend...

Initializing provider plugins...
- Checking for available provider plugins...

Error verifying GPG signature for provider "cyberark/conjur"
Terraform was unable to verify the GPG signature of the downloaded provider
files using the keys downloaded from the Terraform Registry. This may mean that
the publisher of the provider removed the key it was signed with, or that the
distributed files were changed after this version was released.


Error: unable to verify signature


ERROR: 1

Expected Results

Terraform init succeeds

Actual Results (including error logs, if applicable)

Terraform init fails with GPG error (see above)

Reproducible

  • [X ] Always
  • Sometimes
  • Non-Reproducible

Version/Tag number

latest (0.6.2)

Update/fix docker-compose files

We use:

  • Cuke-master image for enterprise tests
  • PG 9.3 image for OSS builds
  • Goreleaser is run for some reason in compose

We should clean this up as much as we can.

AC:

  • Enterprise tests should use the appliance image
  • OSS tests should use helm-like or container DAP images/setup
  • Any other items that can be improved in these files should be done here too

There is support for the new Apple silicon

Is your feature request related to a problem? Please describe.

As reported in Homebrew tools
Apple silicon is not supported.

Describe the solution you would like

GoReleaser should build an Apple M1

Describe alternatives you have considered

None

Additional context

Add any other context information about the feature request here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.