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. + + + +
+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)