You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.8 KiB
HCL
73 lines
1.8 KiB
HCL
terraform {
|
|
required_version = ">= 1.0"
|
|
|
|
required_providers {
|
|
coder = {
|
|
source = "coder/coder"
|
|
version = ">= 0.12.4"
|
|
}
|
|
hcp = {
|
|
source = "hashicorp/hcp"
|
|
version = ">= 0.82.0"
|
|
}
|
|
}
|
|
}
|
|
|
|
provider "hcp" {
|
|
client_id = var.client_id
|
|
client_secret = var.client_secret
|
|
project_id = var.project_id
|
|
}
|
|
|
|
provider "coder" {}
|
|
|
|
variable "agent_id" {
|
|
type = string
|
|
description = "The ID of a Coder agent."
|
|
}
|
|
|
|
variable "project_id" {
|
|
type = string
|
|
description = "The ID of the HCP project."
|
|
}
|
|
|
|
variable "client_id" {
|
|
type = string
|
|
description = <<-EOF
|
|
The client ID for the HCP Vault Secrets service principal. (Optional if HCP_CLIENT_ID is set as an environment variable.)
|
|
EOF
|
|
default = null
|
|
sensitive = true
|
|
}
|
|
|
|
variable "client_secret" {
|
|
type = string
|
|
description = <<-EOF
|
|
The client secret for the HCP Vault Secrets service principal. (Optional if HCP_CLIENT_SECRET is set as an environment variable.)
|
|
EOF
|
|
default = null
|
|
sensitive = true
|
|
}
|
|
|
|
variable "app_name" {
|
|
type = string
|
|
description = "The name of the secrets app in HCP Vault Secrets"
|
|
}
|
|
|
|
variable "secrets" {
|
|
type = list(string)
|
|
description = "The names of the secrets to retrieve from HCP Vault Secrets"
|
|
default = null
|
|
}
|
|
|
|
data "hcp_vault_secrets_app" "secrets" {
|
|
app_name = var.app_name
|
|
}
|
|
|
|
resource "coder_env" "hvs_secrets" {
|
|
# https://support.hashicorp.com/hc/en-us/articles/4538432032787-Variable-has-a-sensitive-value-and-cannot-be-used-as-for-each-arguments
|
|
for_each = var.secrets != null ? toset(var.secrets) : nonsensitive(toset(keys(data.hcp_vault_secrets_app.secrets.secrets)))
|
|
agent_id = var.agent_id
|
|
name = each.key
|
|
value = data.hcp_vault_secrets_app.secrets.secrets[each.key]
|
|
} |