diff --git a/docs/images/icons/key.svg b/docs/images/icons/key.svg new file mode 100644 index 0000000000000..a0e8cf03a72fb --- /dev/null +++ b/docs/images/icons/key.svg @@ -0,0 +1 @@ + diff --git a/docs/images/icons/table-rows.svg b/docs/images/icons/table-rows.svg new file mode 100644 index 0000000000000..3f74e90a4f587 --- /dev/null +++ b/docs/images/icons/table-rows.svg @@ -0,0 +1 @@ + diff --git a/docs/images/metadata-ui.png b/docs/images/metadata-ui.png new file mode 100644 index 0000000000000..f3be43011d0ae Binary files /dev/null and b/docs/images/metadata-ui.png differ diff --git a/docs/manifest.json b/docs/manifest.json index 8a65569c0afb8..88a460967d85c 100644 --- a/docs/manifest.json +++ b/docs/manifest.json @@ -61,7 +61,14 @@ { "title": "Provider Authentication", "description": "Learn how to authenticate the provisioner", - "path": "./templates/authentication.md" + "path": "./templates/authentication.md", + "icon_path": "./images/icons/key.svg" + }, + { + "title": "Resource Metadata", + "description": "Learn how to expose resource data to users", + "path": "./templates/resource-metadata.md", + "icon_path": "./images/icons/table-rows.svg" } ] }, diff --git a/docs/templates/resource-metadata.md b/docs/templates/resource-metadata.md new file mode 100644 index 0000000000000..e38aee92f4082 --- /dev/null +++ b/docs/templates/resource-metadata.md @@ -0,0 +1,60 @@ +# Resource Metadata + +Expose key workspace information to your users via [`coder_metadata`](https://registry.terraform.io/providers/coder/coder/latest/docs/resources/metadata) resources in your template code. + +![ui](../images/metadata-ui.png) + +
+Coder automatically generates the type metadata. +
+ +You can use `coder_metadata` to show + +- Compute resources +- IP addresses +- [Secrets](../secrets.md#displaying-secrets) +- Important file paths + +and any other Terraform resource attribute. + +## Example + +Expose the disk size, deployment name, and persistent +directory in a Kubernetes template with: + +```hcl +resource "kubernetes_persistent_volume_claim" "root" { + ... +} + +resource "kubernetes_deployment" "coder" { + # My deployment is ephemeral + count = data.coder_workspace.me.start_count + ... +} + +resource "coder_metadata" "pvc" { + resource_id = kubernetes_persistent_volume_claim.root.id + item { + key = "size" + value = kubernetes_persistent_volume_claim.root.spec[0].resources[0].requests.storage + } + item { + key = "dir" + value = "/home/coder" + } +} + +resource "coder_metadata" "deployment" { + count = data.coder_workspace.me.start_count + resource_id = kubernetes_deployment.coder[0].id + item { + key = "name" + value = kubernetes_deployment.coder[0].metadata[0].name + } +} +``` + +## Up next + +- Learn about [secrets](../secrets.md)