2322 lines
96 KiB
JSON
2322 lines
96 KiB
JSON
{
|
|
"version": 4,
|
|
"terraform_version": "1.10.1",
|
|
"serial": 98,
|
|
"lineage": "76e6bf9d-c37d-36d2-2618-078691776348",
|
|
"outputs": {
|
|
"container_name": {
|
|
"value": "coder-default-default",
|
|
"type": "string"
|
|
},
|
|
"development_tools": {
|
|
"value": {
|
|
"container_image": "mcr.microsoft.com/devcontainers/universal:2-linux",
|
|
"node_version": "20",
|
|
"python_version": "3.12"
|
|
},
|
|
"type": [
|
|
"object",
|
|
{
|
|
"container_image": "string",
|
|
"node_version": "string",
|
|
"python_version": "string"
|
|
}
|
|
]
|
|
},
|
|
"docker_network_name": {
|
|
"value": "coder-e7696a82-d8b2-42e6-920b-49e5aa5776c9",
|
|
"type": "string"
|
|
},
|
|
"external_ports": {
|
|
"value": {
|
|
"pgadmin": 5050
|
|
},
|
|
"type": [
|
|
"map",
|
|
"number"
|
|
]
|
|
},
|
|
"git_author_email": {
|
|
"value": "default@example.com",
|
|
"type": "string",
|
|
"sensitive": true
|
|
},
|
|
"git_author_name": {
|
|
"value": "default",
|
|
"type": "string"
|
|
},
|
|
"postgres_connection_url": {
|
|
"value": "postgresql://postgres:devpassword@postgres-e7696a82-d8b2-42e6-920b-49e5aa5776c9:5432/postgres",
|
|
"type": "string",
|
|
"sensitive": true
|
|
},
|
|
"qdrant_api_url": {
|
|
"value": "http://qdrant-e7696a82-d8b2-42e6-920b-49e5aa5776c9:6333",
|
|
"type": "string"
|
|
},
|
|
"redis_connection_url": {
|
|
"value": "redis://:devpassword@redis-e7696a82-d8b2-42e6-920b-49e5aa5776c9:6379",
|
|
"type": "string",
|
|
"sensitive": true
|
|
},
|
|
"repository_url": {
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
"service_status": {
|
|
"value": {
|
|
"ai_tools_enabled": "true",
|
|
"jupyter_enabled": false,
|
|
"pgadmin_enabled": true,
|
|
"services_enabled": "true"
|
|
},
|
|
"type": [
|
|
"object",
|
|
{
|
|
"ai_tools_enabled": "string",
|
|
"jupyter_enabled": "bool",
|
|
"pgadmin_enabled": "bool",
|
|
"services_enabled": "string"
|
|
}
|
|
]
|
|
},
|
|
"workspace_id": {
|
|
"value": "e7696a82-d8b2-42e6-920b-49e5aa5776c9",
|
|
"type": "string"
|
|
},
|
|
"workspace_name": {
|
|
"value": "default",
|
|
"type": "string"
|
|
},
|
|
"workspace_owner": {
|
|
"value": "default",
|
|
"type": "string"
|
|
},
|
|
"workspace_volume_name": {
|
|
"value": "workspaces-e7696a82-d8b2-42e6-920b-49e5aa5776c9",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"resources": [
|
|
{
|
|
"mode": "data",
|
|
"type": "coder_parameter",
|
|
"name": "custom_repo_url",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 0,
|
|
"attributes": {
|
|
"default": null,
|
|
"description": "Enter a custom repository URL",
|
|
"display_name": "Custom Repository URL",
|
|
"ephemeral": false,
|
|
"form_type": "input",
|
|
"icon": null,
|
|
"id": "0c79aa03-120d-4859-a412-d87ccfbc6759",
|
|
"mutable": true,
|
|
"name": "custom_repo_url",
|
|
"option": null,
|
|
"optional": true,
|
|
"order": 2,
|
|
"styling": "{}",
|
|
"type": "string",
|
|
"validation": [],
|
|
"value": ""
|
|
},
|
|
"sensitive_attributes": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "data",
|
|
"type": "coder_parameter",
|
|
"name": "enable_ai_tools",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 0,
|
|
"attributes": {
|
|
"default": "true",
|
|
"description": "Install Claude Code and AI development tools",
|
|
"display_name": "Enable AI Assistant Tools",
|
|
"ephemeral": false,
|
|
"form_type": "checkbox",
|
|
"icon": null,
|
|
"id": "707ef28d-3fcd-439d-a5fc-d084c9f87efe",
|
|
"mutable": true,
|
|
"name": "enable_ai_tools",
|
|
"option": null,
|
|
"optional": true,
|
|
"order": 4,
|
|
"styling": "{}",
|
|
"type": "bool",
|
|
"validation": [],
|
|
"value": "true"
|
|
},
|
|
"sensitive_attributes": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "data",
|
|
"type": "coder_parameter",
|
|
"name": "enable_services",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 0,
|
|
"attributes": {
|
|
"default": "true",
|
|
"description": "Enable PostgreSQL, Redis, Qdrant, and Docker Registry",
|
|
"display_name": "Enable Database Services",
|
|
"ephemeral": false,
|
|
"form_type": "checkbox",
|
|
"icon": null,
|
|
"id": "a3a02995-d8c3-460c-a060-cc4c632f7d27",
|
|
"mutable": true,
|
|
"name": "enable_services",
|
|
"option": null,
|
|
"optional": true,
|
|
"order": 3,
|
|
"styling": "{}",
|
|
"type": "bool",
|
|
"validation": [],
|
|
"value": "true"
|
|
},
|
|
"sensitive_attributes": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "data",
|
|
"type": "coder_parameter",
|
|
"name": "repo",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 0,
|
|
"attributes": {
|
|
"default": null,
|
|
"description": "Select a repository to clone",
|
|
"display_name": "Repository",
|
|
"ephemeral": false,
|
|
"form_type": "radio",
|
|
"icon": null,
|
|
"id": "21a8c43f-634a-432b-821d-2e51b37520ff",
|
|
"mutable": true,
|
|
"name": "repo",
|
|
"option": [
|
|
{
|
|
"description": "Full-stack development with all services",
|
|
"icon": "",
|
|
"name": "Custom Development Environment",
|
|
"value": "custom"
|
|
},
|
|
{
|
|
"description": "The React Framework",
|
|
"icon": "",
|
|
"name": "vercel/next.js",
|
|
"value": "https://github.com/vercel/next.js"
|
|
},
|
|
{
|
|
"description": "Specify a custom repo URL below",
|
|
"icon": "",
|
|
"name": "Custom URL",
|
|
"value": "custom-url"
|
|
}
|
|
],
|
|
"optional": false,
|
|
"order": 1,
|
|
"styling": "{}",
|
|
"type": "string",
|
|
"validation": [],
|
|
"value": ""
|
|
},
|
|
"sensitive_attributes": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "data",
|
|
"type": "coder_provisioner",
|
|
"name": "me",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 0,
|
|
"attributes": {
|
|
"arch": "amd64",
|
|
"id": "13b80639-e3f8-485d-a4e7-fb15cd923ee4",
|
|
"os": "linux"
|
|
},
|
|
"sensitive_attributes": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "data",
|
|
"type": "coder_workspace",
|
|
"name": "me",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 0,
|
|
"attributes": {
|
|
"access_port": 443,
|
|
"access_url": "https://mydeployment.coder.com",
|
|
"id": "e7696a82-d8b2-42e6-920b-49e5aa5776c9",
|
|
"is_prebuild": false,
|
|
"is_prebuild_claim": false,
|
|
"name": "default",
|
|
"prebuild_count": 0,
|
|
"start_count": 1,
|
|
"template_id": "",
|
|
"template_name": "",
|
|
"template_version": "",
|
|
"transition": "start"
|
|
},
|
|
"sensitive_attributes": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "data",
|
|
"type": "coder_workspace_owner",
|
|
"name": "me",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 0,
|
|
"attributes": {
|
|
"email": "default@example.com",
|
|
"full_name": "default",
|
|
"groups": [],
|
|
"id": "f6fd72c5-b0c9-4444-b7d2-ec4e2e32c28c",
|
|
"login_type": null,
|
|
"name": "default",
|
|
"oidc_access_token": "",
|
|
"rbac_roles": [],
|
|
"session_token": "",
|
|
"ssh_private_key": "",
|
|
"ssh_public_key": ""
|
|
},
|
|
"sensitive_attributes": [
|
|
[
|
|
{
|
|
"type": "get_attr",
|
|
"value": "ssh_private_key"
|
|
}
|
|
],
|
|
[
|
|
{
|
|
"type": "get_attr",
|
|
"value": "session_token"
|
|
}
|
|
],
|
|
[
|
|
{
|
|
"type": "get_attr",
|
|
"value": "oidc_access_token"
|
|
}
|
|
]
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_agent",
|
|
"name": "main",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"api_key_scope": "all",
|
|
"arch": "amd64",
|
|
"auth": "token",
|
|
"connection_timeout": 120,
|
|
"dir": "/workspaces",
|
|
"display_apps": [
|
|
{
|
|
"port_forwarding_helper": true,
|
|
"ssh_helper": true,
|
|
"vscode": true,
|
|
"vscode_insiders": false,
|
|
"web_terminal": true
|
|
}
|
|
],
|
|
"env": {
|
|
"ENABLE_SERVICES": "true",
|
|
"GIT_AUTHOR_EMAIL": "default@example.com",
|
|
"GIT_AUTHOR_NAME": "default",
|
|
"GIT_COMMITTER_EMAIL": "default@example.com",
|
|
"GIT_COMMITTER_NAME": "default",
|
|
"HOME": "/home/coder",
|
|
"NODE_VERSION": "20",
|
|
"PATH": "$PATH:/home/coder/.cargo/bin:/home/coder/.local/bin:/usr/local/bin",
|
|
"POSTGRES_URL": "postgresql://postgres:devpassword@postgres-e7696a82-d8b2-42e6-920b-49e5aa5776c9:5432/postgres",
|
|
"PYTHON_VERSION": "3.12",
|
|
"QDRANT_URL": "http://qdrant-e7696a82-d8b2-42e6-920b-49e5aa5776c9:6333",
|
|
"REDIS_URL": "redis://:devpassword@redis-e7696a82-d8b2-42e6-920b-49e5aa5776c9:6379",
|
|
"USER": "coder"
|
|
},
|
|
"id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"init_script": "",
|
|
"metadata": [
|
|
{
|
|
"display_name": "CPU Usage",
|
|
"interval": 60,
|
|
"key": "cpu_usage",
|
|
"order": 0,
|
|
"script": "coder stat cpu",
|
|
"timeout": 10
|
|
},
|
|
{
|
|
"display_name": "RAM Usage",
|
|
"interval": 60,
|
|
"key": "ram_usage",
|
|
"order": 0,
|
|
"script": "coder stat mem",
|
|
"timeout": 10
|
|
},
|
|
{
|
|
"display_name": "Disk Usage",
|
|
"interval": 300,
|
|
"key": "disk_usage",
|
|
"order": 0,
|
|
"script": "coder stat disk --path /workspaces",
|
|
"timeout": 10
|
|
},
|
|
{
|
|
"display_name": "Git Branch",
|
|
"interval": 300,
|
|
"key": "git_branch",
|
|
"order": 0,
|
|
"script": "cd /workspaces \u0026\u0026 git branch --show-current 2\u003e/dev/null || echo 'no-repo'",
|
|
"timeout": 5
|
|
}
|
|
],
|
|
"motd_file": null,
|
|
"order": null,
|
|
"os": "linux",
|
|
"resources_monitoring": [],
|
|
"shutdown_script": null,
|
|
"startup_script": "#!/bin/bash\nset -e\necho \"🚀 Initializing development environment as user: $(whoami)\"\n\n# =============================================================================\n# Create coder user if it doesn't exist\n# =============================================================================\nif ! id -u coder \u003e/dev/null 2\u003e\u00261; then\n echo \"👤 Creating coder user...\"\n useradd -m -s /bin/bash -u 1000 coder\n usermod -aG sudo coder\n echo \"coder ALL=(ALL) NOPASSWD:ALL\" \u003e\u003e /etc/sudoers\nfi\n\n# =============================================================================\n# Create necessary directories\n# =============================================================================\necho \"📁 Creating user directories...\"\nmkdir -p /home/coder/bin\nmkdir -p /home/coder/.local/bin\nmkdir -p /home/coder/.config\nmkdir -p /tmp/git-metadata\nmkdir -p /workspaces\n\n# Ensure proper ownership\nchown -R coder:coder /home/coder /workspaces\n\n# =============================================================================\n# Switch to coder user for remaining operations\n# =============================================================================\necho \"🔄 Switching to coder user context...\"\nexport HOME=/home/coder\nexport USER=coder\n\n# =============================================================================\n# Git Configuration\n# =============================================================================\necho \"⚙️ Configuring Git...\"\ngit config --global user.name \"${GIT_AUTHOR_NAME}\"\ngit config --global user.email \"${GIT_AUTHOR_EMAIL}\"\ngit config --global commit.gpgsign false\ngit config --global tag.gpgsign false\ngit config --global init.defaultBranch main\ngit config --global pull.rebase false\n\n# Capture and log git information\necho \"📝 Capturing Git metadata...\"\ncd /workspaces\nif [ -d \".git\" ]; then\n git branch --show-current \u003e /tmp/git-metadata/current-branch 2\u003e/dev/null || echo \"main\" \u003e /tmp/git-metadata/current-branch\n git rev-parse HEAD \u003e /tmp/git-metadata/commit-hash 2\u003e/dev/null || echo \"no-commits\" \u003e /tmp/git-metadata/commit-hash\n git remote get-url origin \u003e /tmp/git-metadata/remote-url 2\u003e/dev/null || echo \"no-remote\" \u003e /tmp/git-metadata/remote-url\nelse\n echo \"no-repo\" \u003e /tmp/git-metadata/current-branch\n echo \"no-repo\" \u003e /tmp/git-metadata/commit-hash\n echo \"no-repo\" \u003e /tmp/git-metadata/remote-url\nfi\n\n# =============================================================================\n# System Package Updates and Installation\n# =============================================================================\necho \"📦 Installing system packages...\"\nexport DEBIAN_FRONTEND=noninteractive\napt-get update -qq\napt-get install -y make tree jq curl wget unzip build-essential postgresql-client redis-tools\n\n# =============================================================================\n# Node.js and npm Setup (as coder user)\n# =============================================================================\necho \"🟢 Setting up Node.js and npm...\"\n\n# Create Node.js setup script\ncat \u003e /tmp/node_setup.sh \u003c\u003c 'NODE_SCRIPT_END'\n#!/bin/bash\nif ! command -v nvm \u0026\u003e /dev/null; then\n curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash\n export NVM_DIR=\"/home/coder/.nvm\"\n [ -s \"$NVM_DIR/nvm.sh\" ] \u0026\u0026 . \"$NVM_DIR/nvm.sh\"\nfi\n\nexport NVM_DIR=\"/home/coder/.nvm\"\n[ -s \"$NVM_DIR/nvm.sh\" ] \u0026\u0026 . \"$NVM_DIR/nvm.sh\"\nnvm install ${NODE_VERSION}\nnvm use ${NODE_VERSION}\nnvm alias default ${NODE_VERSION}\n\necho \"📦 Installing npm packages...\"\nnpm install -g repomix create-next-app nodemon concurrently @types/node typescript eslint prettier\nnpm install -g create-next-app@latest\nNODE_SCRIPT_END\n\nchmod +x /tmp/node_setup.sh\nsu - coder -c \"/tmp/node_setup.sh\"\nrm /tmp/node_setup.sh\n\n# =============================================================================\n# Python Setup with uv (as coder user)\n# =============================================================================\necho \"🐍 Setting up Python and uv...\"\n\n# Install Python version\napt-get install -y python${PYTHON_VERSION} python${PYTHON_VERSION}-dev python${PYTHON_VERSION}-venv\n\n# Create Python setup script\ncat \u003e /tmp/python_setup.sh \u003c\u003c 'PYTHON_SCRIPT_END'\n#!/bin/bash\ncurl -LsSf https://astral.sh/uv/install.sh | sh\nexport PATH=\"/home/coder/.cargo/bin:$PATH\"\n\necho \"📦 Installing Python packages with uv...\"\nfor package in fastapi uvicorn requests pandas numpy psycopg2-binary redis qdrant-client python-dotenv; do\n uv tool install $package || echo \"Failed to install $package\"\ndone\n\nuv venv /home/coder/.venv --python=${PYTHON_VERSION}\necho 'source /home/coder/.venv/bin/activate' \u003e\u003e /home/coder/.bashrc\nPYTHON_SCRIPT_END\n\nchmod +x /tmp/python_setup.sh\nsu - coder -c \"/tmp/python_setup.sh\"\nrm /tmp/python_setup.sh\n\n# =============================================================================\n# Rust and Cargo Setup (as coder user)\n# =============================================================================\necho \"🦀 Installing Rust and Cargo...\"\n\n# Create Rust setup script\ncat \u003e /tmp/rust_setup.sh \u003c\u003c 'RUST_SCRIPT_END'\n#!/bin/bash\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable\nsource \"/home/coder/.cargo/env\"\necho 'export PATH=\"/home/coder/.cargo/bin:$PATH\"' \u003e\u003e /home/coder/.bashrc\ncargo install cargo-watch cargo-edit cargo-audit\nRUST_SCRIPT_END\n\nchmod +x /tmp/rust_setup.sh\nsu - coder -c \"/tmp/rust_setup.sh\"\nrm /tmp/rust_setup.sh\n\n# =============================================================================\n# repomix Installation (as coder user)\n# =============================================================================\necho \"📁 Installing repomix...\"\nsu - coder -c \"npm install -g repomix\"\n\n# =============================================================================\n# Shell Configuration (as coder user)\n# =============================================================================\necho \"🐚 Setting up shell environment...\"\n\n# Create devinfo script\ncat \u003e /tmp/devinfo_script.sh \u003c\u003c 'DEVINFO_SCRIPT_END'\n#!/bin/bash\nmkdir -p /home/coder/bin\ncat \u003e /home/coder/bin/devinfo \u003c\u003c 'DEVINFO_END'\n#!/bin/bash\necho '🚀 Development Environment Info'\necho '==============================='\necho ''\necho '🔧 Installed Tools:'\necho ' Node.js: '$(node --version 2\u003e/dev/null || echo 'Not found')\necho ' npm: '$(npm --version 2\u003e/dev/null || echo 'Not found')\necho ' Python: '$(python${PYTHON_VERSION} --version 2\u003e/dev/null || echo 'Not found')\necho ' uv: '$(uv --version 2\u003e/dev/null || echo 'Not found')\necho ' Rust: '$(rustc --version 2\u003e/dev/null || echo 'Not found')\necho ' Cargo: '$(cargo --version 2\u003e/dev/null || echo 'Not found')\necho ' repomix: '$(repomix --version 2\u003e/dev/null || echo 'Not found')\necho ''\necho '🗄️ Database Services:'\nif [ \"${ENABLE_SERVICES}\" = \"true\" ]; then\n echo ' PostgreSQL: '${POSTGRES_URL}\n echo ' Redis: '${REDIS_URL}\n echo ' Qdrant: '${QDRANT_URL}\nelse\n echo ' Services disabled'\nfi\necho ''\necho '📝 Git Metadata:'\nif [ -f /tmp/git-metadata/current-branch ]; then\n echo ' Branch: '$(cat /tmp/git-metadata/current-branch)\n echo ' Commit: '$(cat /tmp/git-metadata/commit-hash)\n echo ' Remote: '$(cat /tmp/git-metadata/remote-url)\nfi\nDEVINFO_END\nchmod +x /home/coder/bin/devinfo\nDEVINFO_SCRIPT_END\n\nchmod +x /tmp/devinfo_script.sh\nsu - coder -c \"/tmp/devinfo_script.sh\"\nrm /tmp/devinfo_script.sh\n\n# Create bashrc aliases script\ncat \u003e /tmp/bashrc_setup.sh \u003c\u003c 'BASHRC_SCRIPT_END'\n#!/bin/bash\ncat \u003e\u003e /home/coder/.bashrc \u003c\u003c 'BASHRC_END'\n\n# Development Environment Aliases\nalias ll='ls -alF'\nalias la='ls -A'\nalias l='ls -CF'\nalias gs='git status'\nalias gp='git push'\nalias gc='git commit'\nalias gco='git checkout'\nalias gb='git branch'\n\n# Development workflow shortcuts\nalias devinfo='/home/coder/bin/devinfo'\n\n# Package managers\nalias pip='uv pip'\nalias python='python${PYTHON_VERSION}'\n\n# Docker shortcuts\nalias dps='docker ps'\nalias dimg='docker images'\nalias dlog='docker logs'\n\nBASHRC_END\nBASHRC_SCRIPT_END\n\nchmod +x /tmp/bashrc_setup.sh\nsu - coder -c \"/tmp/bashrc_setup.sh\"\nrm /tmp/bashrc_setup.sh\n\n# =============================================================================\n# Final Environment Setup\n# =============================================================================\necho \"✅ Development environment initialization complete!\"\necho \"\"\necho \"🎉 Available tools:\"\necho \" - Node.js ${NODE_VERSION} with npm packages\"\necho \" - Python ${PYTHON_VERSION} with uv package manager\"\necho \" - Rust with Cargo\"\necho \" - repomix for repository packaging\"\necho \" - make, tree, and other build tools\"\nif [ \"${ENABLE_SERVICES}\" = \"true\" ]; then\n echo \" - PostgreSQL, Redis, Qdrant databases\"\nfi\necho \"\"\necho \"🔧 Run 'devinfo' for detailed environment information\"\necho \"🚀 Ready for development!\"",
|
|
"startup_script_behavior": "non-blocking",
|
|
"token": "199aafd2-55c5-43bd-8104-d1d469a14082",
|
|
"troubleshooting_url": null
|
|
},
|
|
"sensitive_attributes": [
|
|
[
|
|
{
|
|
"type": "get_attr",
|
|
"value": "env"
|
|
},
|
|
{
|
|
"type": "index",
|
|
"value": {
|
|
"value": "POSTGRES_URL",
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
[
|
|
{
|
|
"type": "get_attr",
|
|
"value": "env"
|
|
},
|
|
{
|
|
"type": "index",
|
|
"value": {
|
|
"value": "REDIS_URL",
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
[
|
|
{
|
|
"type": "get_attr",
|
|
"value": "token"
|
|
}
|
|
]
|
|
],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_app",
|
|
"name": "api_server_8000",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"agent_id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"command": null,
|
|
"display_name": "API Server (8000)",
|
|
"external": false,
|
|
"group": null,
|
|
"healthcheck": [
|
|
{
|
|
"interval": 10,
|
|
"threshold": 10,
|
|
"url": "http://localhost:8000/health"
|
|
}
|
|
],
|
|
"hidden": false,
|
|
"icon": "/icon/api.svg",
|
|
"id": "c20e77ec-2285-483c-ac43-464f383e581e",
|
|
"open_in": "slim-window",
|
|
"order": null,
|
|
"share": "owner",
|
|
"slug": "api-8000",
|
|
"subdomain": true,
|
|
"url": "http://localhost:8000"
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"coder_agent.main",
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_app",
|
|
"name": "claude_code",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"index_key": 0,
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"agent_id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"command": "claude",
|
|
"display_name": "Claude Code",
|
|
"external": false,
|
|
"group": null,
|
|
"healthcheck": [],
|
|
"hidden": false,
|
|
"icon": "/icon/claude.svg",
|
|
"id": "42a33ff9-4fe4-45df-86ca-2d3e0303145e",
|
|
"open_in": "slim-window",
|
|
"order": null,
|
|
"share": "owner",
|
|
"slug": "claude-code",
|
|
"subdomain": null,
|
|
"url": null
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"coder_agent.main",
|
|
"data.coder_parameter.enable_ai_tools",
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_app",
|
|
"name": "code_server",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"agent_id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"command": null,
|
|
"display_name": "VS Code",
|
|
"external": false,
|
|
"group": null,
|
|
"healthcheck": [
|
|
{
|
|
"interval": 10,
|
|
"threshold": 5,
|
|
"url": "http://localhost:8080/healthz"
|
|
}
|
|
],
|
|
"hidden": false,
|
|
"icon": "/icon/code.svg",
|
|
"id": "31faf6de-0434-4646-b552-041de627d8d4",
|
|
"open_in": "slim-window",
|
|
"order": null,
|
|
"share": "owner",
|
|
"slug": "code-server",
|
|
"subdomain": true,
|
|
"url": "http://localhost:8080"
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"coder_agent.main",
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_app",
|
|
"name": "db_tester",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"index_key": 0,
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"agent_id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"command": "bash",
|
|
"display_name": "Database Tester",
|
|
"external": false,
|
|
"group": null,
|
|
"healthcheck": [],
|
|
"hidden": false,
|
|
"icon": "/icon/terminal.svg",
|
|
"id": "b9dfd90c-034d-4d31-87b3-230b08133a8b",
|
|
"open_in": "slim-window",
|
|
"order": null,
|
|
"share": "owner",
|
|
"slug": "db-tester",
|
|
"subdomain": null,
|
|
"url": null
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"coder_agent.main",
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_app",
|
|
"name": "dev_logs",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"agent_id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"command": "bash",
|
|
"display_name": "Development Logs",
|
|
"external": false,
|
|
"group": null,
|
|
"healthcheck": [],
|
|
"hidden": false,
|
|
"icon": "/icon/terminal.svg",
|
|
"id": "86f339e3-674b-4aa3-980c-3037ad171eca",
|
|
"open_in": "slim-window",
|
|
"order": null,
|
|
"share": "owner",
|
|
"slug": "dev-logs",
|
|
"subdomain": null,
|
|
"url": null
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"coder_agent.main",
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_app",
|
|
"name": "dev_server_3000",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"agent_id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"command": null,
|
|
"display_name": "Dev Server (3000)",
|
|
"external": false,
|
|
"group": null,
|
|
"healthcheck": [
|
|
{
|
|
"interval": 10,
|
|
"threshold": 10,
|
|
"url": "http://localhost:3000"
|
|
}
|
|
],
|
|
"hidden": false,
|
|
"icon": "/icon/web.svg",
|
|
"id": "efd5e551-697f-4b00-a9d3-2e0e995163bf",
|
|
"open_in": "slim-window",
|
|
"order": null,
|
|
"share": "owner",
|
|
"slug": "dev-3000",
|
|
"subdomain": true,
|
|
"url": "http://localhost:3000"
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"coder_agent.main",
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_app",
|
|
"name": "env_info",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"agent_id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"command": "devinfo",
|
|
"display_name": "Environment Info",
|
|
"external": false,
|
|
"group": null,
|
|
"healthcheck": [],
|
|
"hidden": false,
|
|
"icon": "/icon/info.svg",
|
|
"id": "65bccb26-1c9d-4567-961d-e7f391b9d268",
|
|
"open_in": "slim-window",
|
|
"order": null,
|
|
"share": "owner",
|
|
"slug": "env-info",
|
|
"subdomain": null,
|
|
"url": null
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"coder_agent.main",
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_app",
|
|
"name": "file_manager",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"agent_id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"command": "bash",
|
|
"display_name": "File Manager",
|
|
"external": false,
|
|
"group": null,
|
|
"healthcheck": [],
|
|
"hidden": false,
|
|
"icon": "/icon/folder.svg",
|
|
"id": "efcc7719-3bf7-4e26-b969-93a74dd142d6",
|
|
"open_in": "slim-window",
|
|
"order": null,
|
|
"share": "owner",
|
|
"slug": "files",
|
|
"subdomain": null,
|
|
"url": null
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"coder_agent.main",
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_app",
|
|
"name": "git_manager",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"agent_id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"command": "bash",
|
|
"display_name": "Git Repository",
|
|
"external": false,
|
|
"group": null,
|
|
"healthcheck": [],
|
|
"hidden": false,
|
|
"icon": "/icon/git.svg",
|
|
"id": "4a384ae8-950a-4e96-b46a-641addbcb104",
|
|
"open_in": "slim-window",
|
|
"order": null,
|
|
"share": "owner",
|
|
"slug": "git",
|
|
"subdomain": null,
|
|
"url": null
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"coder_agent.main",
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_app",
|
|
"name": "jupyter",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": []
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_app",
|
|
"name": "nextjs_dev",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"agent_id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"command": null,
|
|
"display_name": "Next.js Dev Server",
|
|
"external": false,
|
|
"group": null,
|
|
"healthcheck": [
|
|
{
|
|
"interval": 10,
|
|
"threshold": 10,
|
|
"url": "http://localhost:3000"
|
|
}
|
|
],
|
|
"hidden": false,
|
|
"icon": "/icon/nextjs.svg",
|
|
"id": "62e16780-522e-49a9-91c0-ba5a9d4ee4cc",
|
|
"open_in": "slim-window",
|
|
"order": null,
|
|
"share": "owner",
|
|
"slug": "nextjs-3000",
|
|
"subdomain": true,
|
|
"url": "http://localhost:3000"
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"coder_agent.main",
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_app",
|
|
"name": "pgadmin",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"index_key": 0,
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"agent_id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"command": null,
|
|
"display_name": "pgAdmin",
|
|
"external": false,
|
|
"group": null,
|
|
"healthcheck": [
|
|
{
|
|
"interval": 15,
|
|
"threshold": 5,
|
|
"url": "http://localhost:5050/misc/ping"
|
|
}
|
|
],
|
|
"hidden": false,
|
|
"icon": "/icon/postgresql.svg",
|
|
"id": "33ce817d-125b-4785-be9c-2df143bad4fd",
|
|
"open_in": "slim-window",
|
|
"order": null,
|
|
"share": "owner",
|
|
"slug": "pgadmin",
|
|
"subdomain": true,
|
|
"url": "http://localhost:5050"
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"coder_agent.main",
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_app",
|
|
"name": "qdrant",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"index_key": 0,
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"agent_id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"command": null,
|
|
"display_name": "Qdrant Dashboard",
|
|
"external": false,
|
|
"group": null,
|
|
"healthcheck": [
|
|
{
|
|
"interval": 20,
|
|
"threshold": 5,
|
|
"url": "http://localhost:6333/health"
|
|
}
|
|
],
|
|
"hidden": false,
|
|
"icon": "/icon/database.svg",
|
|
"id": "1059be9f-6e2c-4c18-b2b2-f52473921d94",
|
|
"open_in": "slim-window",
|
|
"order": null,
|
|
"share": "owner",
|
|
"slug": "qdrant-dashboard",
|
|
"subdomain": true,
|
|
"url": "http://localhost:6333/dashboard"
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"coder_agent.main",
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_app",
|
|
"name": "rust_server",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"agent_id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"command": null,
|
|
"display_name": "Rust Server (8080)",
|
|
"external": false,
|
|
"group": null,
|
|
"healthcheck": [
|
|
{
|
|
"interval": 10,
|
|
"threshold": 10,
|
|
"url": "http://localhost:8080/health"
|
|
}
|
|
],
|
|
"hidden": false,
|
|
"icon": "/icon/rust.svg",
|
|
"id": "433b05db-da96-4724-967b-b1c8f8e7eb30",
|
|
"open_in": "slim-window",
|
|
"order": null,
|
|
"share": "owner",
|
|
"slug": "rust-8080",
|
|
"subdomain": true,
|
|
"url": "http://localhost:8080"
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"coder_agent.main",
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_app",
|
|
"name": "terminal",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"agent_id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"command": "bash",
|
|
"display_name": "Terminal",
|
|
"external": false,
|
|
"group": null,
|
|
"healthcheck": [],
|
|
"hidden": false,
|
|
"icon": "/icon/terminal.svg",
|
|
"id": "d223ef33-2aa5-48a0-887f-496a1ff65b45",
|
|
"open_in": "slim-window",
|
|
"order": null,
|
|
"share": "owner",
|
|
"slug": "terminal",
|
|
"subdomain": null,
|
|
"url": null
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"coder_agent.main",
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_app",
|
|
"name": "vite_dev",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"agent_id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"command": null,
|
|
"display_name": "Vite Dev Server",
|
|
"external": false,
|
|
"group": null,
|
|
"healthcheck": [
|
|
{
|
|
"interval": 10,
|
|
"threshold": 10,
|
|
"url": "http://localhost:5173"
|
|
}
|
|
],
|
|
"hidden": false,
|
|
"icon": "/icon/web.svg",
|
|
"id": "60b697a9-f61e-4d97-87c2-3db1b4922586",
|
|
"open_in": "slim-window",
|
|
"order": null,
|
|
"share": "owner",
|
|
"slug": "vite-5173",
|
|
"subdomain": true,
|
|
"url": "http://localhost:5173"
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"coder_agent.main",
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_script",
|
|
"name": "claude_code_setup",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"index_key": 0,
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"agent_id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"cron": null,
|
|
"display_name": "Install Claude Code CLI",
|
|
"icon": "/icon/claude.svg",
|
|
"id": "4c2df8bb-ac8f-49b6-911f-e83b4e846947",
|
|
"log_path": null,
|
|
"run_on_start": true,
|
|
"run_on_stop": false,
|
|
"script": "#!/bin/bash\nset -e\necho \"🤖 Installing Claude Code CLI...\"\n\n# Check if already installed\nif command -v claude \u003e/dev/null 2\u003e\u00261; then\n echo \"✅ Claude Code already installed\"\n claude --version || echo \"Claude Code version check failed\"\n exit 0\nfi\n\n# Ensure npm is available\nexport NVM_DIR=\"$HOME/.nvm\"\n[ -s \"$NVM_DIR/nvm.sh\" ] \u0026\u0026 . \"$NVM_DIR/nvm.sh\"\n\nif ! command -v npm \u003e/dev/null 2\u003e\u00261; then\n echo \"❌ npm not found - Node.js installation required\"\n exit 1\nfi\n\necho \"📥 Installing Claude Code globally via npm...\"\nnpm install -g @anthropic-ai/claude\n\n# Verify installation\nif command -v claude \u003e/dev/null 2\u003e\u00261; then\n echo \"✅ Claude Code installed successfully!\"\n echo \"🔧 Run 'claude auth login' to authenticate\"\n echo \"💡 Use 'claude chat' for interactive assistance\"\n echo \"💡 Use 'claude edit \u003cfile\u003e' to edit files with AI\"\n \n # Create helper script\n mkdir -p /home/coder/bin\n cat \u003e /home/coder/bin/claude-help \u003c\u003c 'CLAUDE_HELP_END'\n#!/bin/bash\necho \"🤖 Claude Code AI Assistant\"\necho \"==========================\"\necho \"\"\necho \"Authentication:\"\necho \" claude auth login # Authenticate with Anthropic\"\necho \" claude auth logout # Sign out\"\necho \" claude auth whoami # Check current user\"\necho \"\"\necho \"Interactive Chat:\"\necho \" claude chat # Start interactive session\"\necho \" claude chat 'question' # Single question\"\necho \"\"\necho \"File Editing:\"\necho \" claude edit file.py # AI-powered file editing\"\necho \" claude edit --help # Edit command options\"\necho \"\"\necho \"Code Analysis:\"\necho \" claude analyze . # Analyze current directory\"\necho \" claude review file.py # Code review\"\necho \"\"\necho \"Project Operations:\"\necho \" claude init # Initialize Claude in project\"\necho \" claude status # Show project status\"\necho \"\"\necho \"💡 For full documentation: https://docs.anthropic.com/claude/docs\"\nCLAUDE_HELP_END\n chmod +x /home/coder/bin/claude-help\n \n echo \"💡 Run 'claude-help' for quick reference\"\nelse\n echo \"❌ Claude Code installation failed\"\n exit 1\nfi",
|
|
"start_blocks_login": false,
|
|
"timeout": 0
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"coder_agent.main",
|
|
"data.coder_parameter.enable_ai_tools",
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_script",
|
|
"name": "cursor_setup",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"index_key": 0,
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"agent_id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"cron": null,
|
|
"display_name": "Configure Cursor IDE Support",
|
|
"icon": "/icon/cursor.svg",
|
|
"id": "62324125-e780-4a10-a79f-e369af07b1ec",
|
|
"log_path": null,
|
|
"run_on_start": true,
|
|
"run_on_stop": false,
|
|
"script": "#!/bin/bash\nset -e\necho \"🎯 Setting up Cursor IDE support...\"\n\n# Create Cursor configuration directories\nmkdir -p /home/coder/.cursor-server/data/User\nmkdir -p /home/coder/.cursor-server/extensions\n\n# Create optimized Cursor settings\ncat \u003e /home/coder/.cursor-server/data/User/settings.json \u003c\u003c 'CURSOR_SETTINGS_END'\n{\n \"workbench.colorTheme\": \"Dark+ (default dark)\",\n \"editor.fontSize\": 14,\n \"editor.tabSize\": 2,\n \"editor.insertSpaces\": true,\n \"editor.formatOnSave\": true,\n \"editor.codeActionsOnSave\": {\n \"source.fixAll\": true,\n \"source.organizeImports\": true\n },\n \"files.autoSave\": \"afterDelay\",\n \"files.autoSaveDelay\": 1000,\n \"terminal.integrated.fontSize\": 13,\n \"git.enableSmartCommit\": true,\n \"git.confirmSync\": false,\n \"python.defaultInterpreterPath\": \"/home/coder/.venv/bin/python\",\n \"python.linting.enabled\": true,\n \"python.linting.pylintEnabled\": false,\n \"python.linting.flake8Enabled\": true,\n \"typescript.preferences.includePackageJsonAutoImports\": \"auto\",\n \"javascript.preferences.includePackageJsonAutoImports\": \"auto\",\n \"cursor.chat.showInEditorContextMenu\": true,\n \"cursor.chat.alwaysShowInEditorContextMenu\": true,\n \"cursor.general.enableWindowAIFeatures\": true\n}\nCURSOR_SETTINGS_END\n\n# Create development tasks configuration\nmkdir -p /home/coder/.cursor-server/data/User\ncat \u003e /home/coder/.cursor-server/data/User/tasks.json \u003c\u003c 'CURSOR_TASKS_END'\n{\n \"version\": \"2.0.0\",\n \"tasks\": [\n {\n \"label\": \"Dev Server\",\n \"type\": \"shell\",\n \"command\": \"npm run dev\",\n \"group\": \"build\",\n \"presentation\": {\n \"echo\": true,\n \"reveal\": \"always\",\n \"focus\": false,\n \"panel\": \"new\"\n },\n \"problemMatcher\": []\n },\n {\n \"label\": \"Python Dev Server\",\n \"type\": \"shell\",\n \"command\": \"uvicorn main:app --reload --host 0.0.0.0 --port 8000\",\n \"group\": \"build\",\n \"presentation\": {\n \"echo\": true,\n \"reveal\": \"always\",\n \"focus\": false,\n \"panel\": \"new\"\n },\n \"problemMatcher\": []\n },\n {\n \"label\": \"Install Dependencies\",\n \"type\": \"shell\",\n \"command\": \"npm install\",\n \"group\": \"build\",\n \"presentation\": {\n \"echo\": true,\n \"reveal\": \"always\",\n \"focus\": false,\n \"panel\": \"new\"\n }\n },\n {\n \"label\": \"Python Install\",\n \"type\": \"shell\",\n \"command\": \"uv pip install -r requirements.txt\",\n \"group\": \"build\",\n \"presentation\": {\n \"echo\": true,\n \"reveal\": \"always\",\n \"focus\": false,\n \"panel\": \"new\"\n }\n }\n ]\n}\nCURSOR_TASKS_END\n\n# Create useful code snippets\nmkdir -p /home/coder/.cursor-server/data/User/snippets\ncat \u003e /home/coder/.cursor-server/data/User/snippets/global.code-snippets \u003c\u003c 'CURSOR_SNIPPETS_END'\n{\n \"FastAPI Basic App\": {\n \"prefix\": \"fastapi-app\",\n \"body\": [\n \"from fastapi import FastAPI\",\n \"from fastapi.middleware.cors import CORSMiddleware\",\n \"\",\n \"app = FastAPI(title=\\\"${1:My API}\\\", version=\\\"0.1.0\\\")\",\n \"\",\n \"app.add_middleware(\",\n \" CORSMiddleware,\",\n \" allow_origins=[\\\"*\\\"],\",\n \" allow_credentials=True,\",\n \" allow_methods=[\\\"*\\\"],\",\n \" allow_headers=[\\\"*\\\"],\",\n \")\",\n \"\",\n \"@app.get(\\\"/\\\")\",\n \"async def root():\",\n \" return {\\\"message\\\": \\\"${2:Hello World}\\\"}\",\n \"\",\n \"@app.get(\\\"/health\\\")\",\n \"async def health():\",\n \" return {\\\"status\\\": \\\"healthy\\\"}\",\n \"\",\n \"if __name__ == \\\"__main__\\\":\",\n \" import uvicorn\",\n \" uvicorn.run(app, host=\\\"0.0.0.0\\\", port=8000)\"\n ],\n \"description\": \"FastAPI basic application template\"\n },\n \"Next.js API Route\": {\n \"prefix\": \"nextapi\",\n \"body\": [\n \"import { NextRequest, NextResponse } from 'next/server';\",\n \"\",\n \"export async function ${1:GET}(request: NextRequest) {\",\n \" try {\",\n \" // Your API logic here\",\n \" return NextResponse.json({ message: '${2:Success}' });\",\n \" } catch (error) {\",\n \" return NextResponse.json(\",\n \" { error: 'Internal Server Error' },\",\n \" { status: 500 }\",\n \" );\",\n \" }\",\n \"}\"\n ],\n \"description\": \"Next.js API route template\"\n },\n \"Database Connection\": {\n \"prefix\": \"db-connect\",\n \"body\": [\n \"import os\",\n \"from sqlalchemy import create_engine\",\n \"from sqlalchemy.orm import sessionmaker\",\n \"\",\n \"DATABASE_URL = os.getenv(\",\n \" \\\"POSTGRES_URL\\\",\",\n \" \\\"postgresql://postgres:password@localhost:5432/postgres\\\"\",\n \")\",\n \"\",\n \"engine = create_engine(DATABASE_URL)\",\n \"SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)\",\n \"\",\n \"def get_db():\",\n \" db = SessionLocal()\",\n \" try:\",\n \" yield db\",\n \" finally:\",\n \" db.close()\"\n ],\n \"description\": \"Database connection setup\"\n }\n}\nCURSOR_SNIPPETS_END\n\n# Set proper ownership\nchown -R coder:coder /home/coder/.cursor-server\n\necho \"✅ Cursor IDE support configured\"\necho \"🎯 Cursor will use optimized settings for this development environment\"",
|
|
"start_blocks_login": false,
|
|
"timeout": 0
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"coder_agent.main",
|
|
"data.coder_parameter.enable_ai_tools",
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_script",
|
|
"name": "dev_extensions",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"agent_id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"cron": null,
|
|
"display_name": "Install Development Tools",
|
|
"icon": "/icon/tools.svg",
|
|
"id": "70c9cde3-4e54-4387-ac27-1659f680ae9c",
|
|
"log_path": null,
|
|
"run_on_start": true,
|
|
"run_on_stop": false,
|
|
"script": "#!/bin/bash\nset -e\necho \"🔧 Installing development extensions and tools...\"\n\n# Ensure we're running as root for system packages\nif [ \"$EUID\" -ne 0 ]; then\n echo \"This script needs to run as root for system package installation\"\n exit 1\nfi\n\necho \"📦 Installing additional CLI tools...\"\n\n# Ensure curl is available first\ntype -p curl \u003e/dev/null || (apt-get update \u0026\u0026 apt-get install curl -y)\n\n# Function to install various development tools\ninstall_development_tools() {\n echo \"🛠️ Installing development utilities...\"\n \n # GitHub CLI\n if ! command -v gh \u0026\u003e /dev/null; then\n echo \"📥 Installing GitHub CLI...\"\n curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg\n chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg\n echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main\" | tee /etc/apt/sources.list.d/github-cli.list \u003e /dev/null\n apt-get update\n apt-get install gh -y\n fi\n \n # Docker Compose (if not already installed)\n if ! command -v docker-compose \u0026\u003e /dev/null; then\n echo \"🐳 Installing Docker Compose...\"\n curl -L \"https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)\" -o /usr/local/bin/docker-compose\n chmod +x /usr/local/bin/docker-compose\n fi\n \n # Lazygit for better git UI\n if ! command -v lazygit \u0026\u003e /dev/null; then\n echo \"🌿 Installing lazygit...\"\n LAZYGIT_VERSION=$(curl -s \"https://api.github.com/repos/jesseduffield/lazygit/releases/latest\" | grep '\"tag_name\":' | sed -E 's/.*\"v*([^\"]+)\".*/\\1/')\n curl -Lo lazygit.tar.gz \"https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz\"\n tar xf lazygit.tar.gz lazygit\n install lazygit /usr/local/bin\n rm lazygit.tar.gz lazygit\n fi\n \n # btop for system monitoring\n if ! command -v btop \u0026\u003e /dev/null; then\n echo \"📊 Installing btop...\"\n apt-get install btop -y\n fi\n \n # fd-find for better file searching\n if ! command -v fd \u0026\u003e /dev/null; then\n echo \"🔍 Installing fd-find...\"\n apt-get install fd-find -y\n # Create symlink for easier usage\n ln -sf /usr/bin/fdfind /usr/local/bin/fd\n fi\n \n # ripgrep for better text searching\n if ! command -v rg \u0026\u003e /dev/null; then\n echo \"🔎 Installing ripgrep...\"\n apt-get install ripgrep -y\n fi\n \n # bat for better cat with syntax highlighting\n if ! command -v bat \u0026\u003e /dev/null; then\n echo \"🦇 Installing bat...\"\n apt-get install bat -y\n # Create symlink for easier usage\n ln -sf /usr/bin/batcat /usr/local/bin/bat\n fi\n \n # eza for better ls (modern replacement for exa)\n if ! command -v eza \u0026\u003e /dev/null; then\n echo \"📁 Installing eza...\"\n curl -L \"https://github.com/eza-community/eza/releases/latest/download/eza_x86_64-unknown-linux-gnu.tar.gz\" | tar xz -C /usr/local/bin\n fi\n}\n\n# Install all development tools\ninstall_development_tools\n\n# Switch to coder user for user-specific installations\necho \"👤 Setting up user-specific tools...\"\nsu - coder \u003c\u003c 'USER_SETUP_END'\n# Add useful aliases to .bashrc if not already present\nif ! grep -q \"# Development tools aliases\" ~/.bashrc; then\n cat \u003e\u003e ~/.bashrc \u003c\u003c 'ALIASES_END'\n\n# Development tools aliases\nalias cat='bat'\nalias ls='eza'\nalias ll='eza -la'\nalias la='eza -la'\nalias find='fd'\nalias grep='rg'\nalias git-ui='lazygit'\nalias top='btop'\n\nALIASES_END\nfi\n\n# Install tldr for better man pages\nif ! command -v tldr \u0026\u003e /dev/null; then\n npm install -g tldr\nfi\n\n# Install fkill for better process management\nif ! command -v fkill \u0026\u003e /dev/null; then\n npm install -g fkill-cli\nfi\n\necho \"✅ Development tools installed and configured!\"\nUSER_SETUP_END\n\necho \"🎉 All development tools installed successfully!\"\necho \"💡 Available tools: gh, docker-compose, lazygit, btop, fd, rg, bat, eza, tldr, fkill\"\necho \"💡 Aliases configured: cat→bat, ls→eza, find→fd, grep→rg, git-ui→lazygit, top→btop\"",
|
|
"start_blocks_login": false,
|
|
"timeout": 0
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"coder_agent.main",
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_script",
|
|
"name": "git_hooks_setup",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"agent_id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"cron": null,
|
|
"display_name": "Setup Git Hooks",
|
|
"icon": "/icon/git.svg",
|
|
"id": "6516f859-b875-4d3d-bade-9b67fd81005e",
|
|
"log_path": null,
|
|
"run_on_start": true,
|
|
"run_on_stop": false,
|
|
"script": "#!/bin/bash\nset -e\necho \"📝 Setting up Git hooks and metadata capture...\"\n\n# Ensure we're in the workspaces directory\ncd /workspaces\n\n# Initialize git repository if it doesn't exist\nif [ ! -d \".git\" ]; then\n echo \"🔧 Initializing git repository...\"\n git init\nfi\n\n# Create .git/hooks directory if it doesn't exist\nmkdir -p .git/hooks\n\n# Create post-commit hook for metadata capture\ncat \u003e .git/hooks/post-commit \u003c\u003c 'POST_COMMIT_END'\n#!/bin/bash\n# Post-commit hook to capture git metadata\necho \"📝 Capturing git metadata after commit...\"\n\n# Ensure metadata directory exists\nmkdir -p /tmp/git-metadata\n\n# Capture current git state\ngit branch --show-current \u003e /tmp/git-metadata/current-branch 2\u003e/dev/null || echo \"main\" \u003e /tmp/git-metadata/current-branch\ngit rev-parse HEAD \u003e /tmp/git-metadata/commit-hash 2\u003e/dev/null || echo \"no-commits\" \u003e /tmp/git-metadata/commit-hash\ngit remote get-url origin \u003e /tmp/git-metadata/remote-url 2\u003e/dev/null || echo \"no-remote\" \u003e /tmp/git-metadata/remote-url\n\n# Log the commit for development tracking\necho \"$(date): Commit $(git rev-parse --short HEAD) on branch $(git branch --show-current)\" \u003e\u003e /tmp/git-metadata/commit-log\n\necho \"✅ Git metadata updated\"\nPOST_COMMIT_END\n\n# Make post-commit hook executable\nchmod +x .git/hooks/post-commit\n\n# Create pre-push hook for quality checks\ncat \u003e .git/hooks/pre-push \u003c\u003c 'PRE_PUSH_END'\n#!/bin/bash\n# Pre-push hook for basic quality checks\necho \"🔍 Running pre-push quality checks...\"\n\n# Check if package.json exists and run tests\nif [ -f \"package.json\" ]; then\n echo \"📦 Found Node.js project, checking scripts...\"\n if npm run --silent test --if-present; then\n echo \"✅ Tests passed\"\n else\n echo \"⚠️ Tests not found or failed - pushing anyway\"\n fi\nfi\n\n# Check if requirements.txt or pyproject.toml exists\nif [ -f \"requirements.txt\" ] || [ -f \"pyproject.toml\" ]; then\n echo \"🐍 Found Python project...\"\n # Could add Python linting here\n echo \"✅ Python project checks passed\"\nfi\n\n# Check for large files\necho \"📁 Checking for large files...\"\nlarge_files=$(find . -type f -size +100M 2\u003e/dev/null | head -5)\nif [ ! -z \"$large_files\" ]; then\n echo \"⚠️ Large files detected:\"\n echo \"$large_files\"\n echo \"Consider using Git LFS for large files\"\nfi\n\necho \"✅ Pre-push checks completed\"\nPRE_PUSH_END\n\n# Make pre-push hook executable\nchmod +x .git/hooks/pre-push\n\n# Set proper ownership for the coder user\nchown -R coder:coder .git/hooks\n\necho \"✅ Git hooks and metadata capture configured\"\necho \"📝 Git metadata will be automatically captured on commits\"\necho \"🔍 Pre-push quality checks will run before each push\"",
|
|
"start_blocks_login": false,
|
|
"timeout": 0
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"coder_agent.main",
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "coder_script",
|
|
"name": "windsurf_setup",
|
|
"provider": "provider[\"registry.terraform.io/coder/coder\"]",
|
|
"instances": [
|
|
{
|
|
"index_key": 0,
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"agent_id": "c11cf7bd-e3f1-4e3d-9e09-fde1ca5d9fcb",
|
|
"cron": null,
|
|
"display_name": "Configure Windsurf IDE Support",
|
|
"icon": "/icon/windsurf.svg",
|
|
"id": "3ab9b1f6-6c88-4b09-8d01-4befaab7987c",
|
|
"log_path": null,
|
|
"run_on_start": true,
|
|
"run_on_stop": false,
|
|
"script": "#!/bin/bash\nset -e\necho \"🌊 Setting up Windsurf IDE support...\"\n\n# Create Windsurf configuration directories\nmkdir -p /home/coder/.windsurf/data/User\nmkdir -p /home/coder/.windsurf/extensions\n\n# Create optimized Windsurf settings\ncat \u003e /home/coder/.windsurf/data/User/settings.json \u003c\u003c 'WINDSURF_SETTINGS_END'\n{\n \"workbench.colorTheme\": \"Windsurf Dark\",\n \"editor.fontSize\": 14,\n \"editor.tabSize\": 2,\n \"editor.insertSpaces\": true,\n \"editor.formatOnSave\": true,\n \"editor.codeActionsOnSave\": {\n \"source.fixAll\": true,\n \"source.organizeImports\": true\n },\n \"files.autoSave\": \"afterDelay\",\n \"files.autoSaveDelay\": 1000,\n \"terminal.integrated.fontSize\": 13,\n \"git.enableSmartCommit\": true,\n \"git.confirmSync\": false,\n \"python.defaultInterpreterPath\": \"/home/coder/.venv/bin/python\",\n \"python.linting.enabled\": true,\n \"python.linting.pylintEnabled\": false,\n \"python.linting.flake8Enabled\": true,\n \"typescript.preferences.includePackageJsonAutoImports\": \"auto\",\n \"javascript.preferences.includePackageJsonAutoImports\": \"auto\",\n \"windsurf.ai.enabled\": true,\n \"windsurf.ai.showInEditorContextMenu\": true,\n \"windsurf.chat.enabled\": true,\n \"windsurf.codeCompletion.enabled\": true\n}\nWINDSURF_SETTINGS_END\n\n# Create development keybindings\ncat \u003e /home/coder/.windsurf/data/User/keybindings.json \u003c\u003c 'WINDSURF_KEYS_END'\n[\n {\n \"key\": \"ctrl+shift+a\",\n \"command\": \"windsurf.chat.open\"\n },\n {\n \"key\": \"ctrl+shift+c\",\n \"command\": \"windsurf.ai.generateCode\"\n },\n {\n \"key\": \"ctrl+shift+r\",\n \"command\": \"windsurf.ai.refactorSelection\"\n },\n {\n \"key\": \"ctrl+shift+e\",\n \"command\": \"windsurf.ai.explainCode\"\n }\n]\nWINDSURF_KEYS_END\n\n# Set proper ownership\nchown -R coder:coder /home/coder/.windsurf\n\necho \"✅ Windsurf IDE support configured\"\necho \"🌊 Windsurf AI features enabled with optimized settings\"\necho \"⌨️ Keyboard shortcuts: Ctrl+Shift+A (chat), Ctrl+Shift+C (generate), Ctrl+Shift+R (refactor)\"",
|
|
"start_blocks_login": false,
|
|
"timeout": 0
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"coder_agent.main",
|
|
"data.coder_parameter.enable_ai_tools",
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_provisioner.me",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "docker_container",
|
|
"name": "jupyter",
|
|
"provider": "provider[\"registry.terraform.io/kreuzwerker/docker\"]",
|
|
"instances": []
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "docker_container",
|
|
"name": "pgadmin",
|
|
"provider": "provider[\"registry.terraform.io/kreuzwerker/docker\"]",
|
|
"instances": [
|
|
{
|
|
"index_key": 0,
|
|
"schema_version": 2,
|
|
"attributes": {
|
|
"attach": false,
|
|
"bridge": "",
|
|
"capabilities": [],
|
|
"cgroupns_mode": null,
|
|
"command": [],
|
|
"container_logs": null,
|
|
"container_read_refresh_timeout_milliseconds": 15000,
|
|
"cpu_set": "",
|
|
"cpu_shares": 0,
|
|
"destroy_grace_seconds": null,
|
|
"devices": [],
|
|
"dns": null,
|
|
"dns_opts": null,
|
|
"dns_search": null,
|
|
"domainname": "",
|
|
"entrypoint": [
|
|
"/entrypoint.sh"
|
|
],
|
|
"env": [
|
|
"PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED=False",
|
|
"PGADMIN_CONFIG_SERVER_MODE=False",
|
|
"PGADMIN_DEFAULT_EMAIL=admin@dev.local",
|
|
"PGADMIN_DEFAULT_PASSWORD=adminpassword",
|
|
"PGADMIN_LISTEN_PORT=80"
|
|
],
|
|
"exit_code": null,
|
|
"gateway": "",
|
|
"gpus": null,
|
|
"group_add": null,
|
|
"healthcheck": null,
|
|
"host": [],
|
|
"hostname": "15d5f4c520ee",
|
|
"id": "15d5f4c520ee86c576be93b842a23c44409d8a8801176aa81aaca99758177c22",
|
|
"image": "sha256:5929bac24d91b5d7219686c8d66a703cd5851a498620bca4f5e4263873b015c0",
|
|
"init": false,
|
|
"ip_address": "",
|
|
"ip_prefix_length": 0,
|
|
"ipc_mode": "private",
|
|
"labels": [
|
|
{
|
|
"label": "coder.service",
|
|
"value": "pgadmin"
|
|
},
|
|
{
|
|
"label": "coder.workspace_id",
|
|
"value": "e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"links": null,
|
|
"log_driver": "json-file",
|
|
"log_opts": {
|
|
"max-file": "3",
|
|
"max-size": "10m"
|
|
},
|
|
"logs": false,
|
|
"max_retry_count": 0,
|
|
"memory": 0,
|
|
"memory_swap": 0,
|
|
"mounts": [],
|
|
"must_run": true,
|
|
"name": "pgadmin-e7696a82-d8b2-42e6-920b-49e5aa5776c9",
|
|
"network_alias": null,
|
|
"network_data": [
|
|
{
|
|
"gateway": "",
|
|
"global_ipv6_address": "",
|
|
"global_ipv6_prefix_length": 0,
|
|
"ip_address": "",
|
|
"ip_prefix_length": 0,
|
|
"ipv6_gateway": "",
|
|
"network_name": "coder-e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"network_mode": "bridge",
|
|
"networks": null,
|
|
"networks_advanced": [
|
|
{
|
|
"aliases": [],
|
|
"ipv4_address": "",
|
|
"ipv6_address": "",
|
|
"name": "coder-e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"pid_mode": "",
|
|
"ports": [],
|
|
"privileged": false,
|
|
"publish_all_ports": false,
|
|
"read_only": false,
|
|
"remove_volumes": true,
|
|
"restart": "unless-stopped",
|
|
"rm": false,
|
|
"runtime": "runc",
|
|
"security_opts": [],
|
|
"shm_size": 64,
|
|
"start": true,
|
|
"stdin_open": false,
|
|
"stop_signal": "",
|
|
"stop_timeout": 0,
|
|
"storage_opts": null,
|
|
"sysctls": null,
|
|
"tmpfs": null,
|
|
"tty": false,
|
|
"ulimit": [],
|
|
"upload": [],
|
|
"user": "5050",
|
|
"userns_mode": "",
|
|
"volumes": [
|
|
{
|
|
"container_path": "/var/lib/pgadmin",
|
|
"from_container": "",
|
|
"host_path": "",
|
|
"read_only": null,
|
|
"volume_name": "pgadmin-data-e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"wait": false,
|
|
"wait_timeout": 60,
|
|
"working_dir": "/pgadmin4"
|
|
},
|
|
"sensitive_attributes": [
|
|
[
|
|
{
|
|
"type": "get_attr",
|
|
"value": "env"
|
|
}
|
|
]
|
|
],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjIifQ==",
|
|
"dependencies": [
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me",
|
|
"docker_network.workspace",
|
|
"docker_volume.pgadmin_data"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "docker_container",
|
|
"name": "postgres",
|
|
"provider": "provider[\"registry.terraform.io/kreuzwerker/docker\"]",
|
|
"instances": [
|
|
{
|
|
"index_key": 0,
|
|
"schema_version": 2,
|
|
"attributes": {
|
|
"attach": false,
|
|
"bridge": "",
|
|
"capabilities": [],
|
|
"cgroupns_mode": null,
|
|
"command": [
|
|
"postgres"
|
|
],
|
|
"container_logs": null,
|
|
"container_read_refresh_timeout_milliseconds": 15000,
|
|
"cpu_set": "",
|
|
"cpu_shares": 0,
|
|
"destroy_grace_seconds": null,
|
|
"devices": [],
|
|
"dns": null,
|
|
"dns_opts": null,
|
|
"dns_search": null,
|
|
"domainname": "",
|
|
"entrypoint": [
|
|
"docker-entrypoint.sh"
|
|
],
|
|
"env": [
|
|
"POSTGRES_DB=postgres",
|
|
"POSTGRES_INITDB_ARGS=--auth-local=trust --auth-host=md5",
|
|
"POSTGRES_MAX_CONNECTIONS=100",
|
|
"POSTGRES_PASSWORD=devpassword",
|
|
"POSTGRES_SHARED_PRELOAD_LIBRARIES=pg_stat_statements",
|
|
"POSTGRES_USER=postgres"
|
|
],
|
|
"exit_code": null,
|
|
"gateway": "172.23.0.1",
|
|
"gpus": null,
|
|
"group_add": null,
|
|
"healthcheck": [
|
|
{
|
|
"interval": "15s",
|
|
"retries": 5,
|
|
"start_period": "0s",
|
|
"test": [
|
|
"CMD-SHELL",
|
|
"pg_isready -U postgres"
|
|
],
|
|
"timeout": "5s"
|
|
}
|
|
],
|
|
"host": [],
|
|
"hostname": "a1d440de4e18",
|
|
"id": "a1d440de4e184025387eb5c5e584c277b0372a57e8ba48d96e72adccefa9c422",
|
|
"image": "sha256:3406990b6e4c7192317b6fdc5680498744f6142f01f0287f4ee0420d8c74063c",
|
|
"init": false,
|
|
"ip_address": "172.23.0.4",
|
|
"ip_prefix_length": 16,
|
|
"ipc_mode": "private",
|
|
"labels": [
|
|
{
|
|
"label": "coder.service",
|
|
"value": "postgres"
|
|
},
|
|
{
|
|
"label": "coder.workspace_id",
|
|
"value": "e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"links": null,
|
|
"log_driver": "json-file",
|
|
"log_opts": {
|
|
"max-file": "3",
|
|
"max-size": "10m"
|
|
},
|
|
"logs": false,
|
|
"max_retry_count": 0,
|
|
"memory": 0,
|
|
"memory_swap": 0,
|
|
"mounts": [],
|
|
"must_run": true,
|
|
"name": "postgres-e7696a82-d8b2-42e6-920b-49e5aa5776c9",
|
|
"network_alias": null,
|
|
"network_data": [
|
|
{
|
|
"gateway": "172.23.0.1",
|
|
"global_ipv6_address": "",
|
|
"global_ipv6_prefix_length": 0,
|
|
"ip_address": "172.23.0.4",
|
|
"ip_prefix_length": 16,
|
|
"ipv6_gateway": "",
|
|
"network_name": "coder-e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"network_mode": "bridge",
|
|
"networks": null,
|
|
"networks_advanced": [
|
|
{
|
|
"aliases": [],
|
|
"ipv4_address": "",
|
|
"ipv6_address": "",
|
|
"name": "coder-e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"pid_mode": "",
|
|
"ports": [],
|
|
"privileged": false,
|
|
"publish_all_ports": false,
|
|
"read_only": false,
|
|
"remove_volumes": true,
|
|
"restart": "unless-stopped",
|
|
"rm": false,
|
|
"runtime": "runc",
|
|
"security_opts": [],
|
|
"shm_size": 64,
|
|
"start": true,
|
|
"stdin_open": false,
|
|
"stop_signal": "SIGINT",
|
|
"stop_timeout": 0,
|
|
"storage_opts": null,
|
|
"sysctls": null,
|
|
"tmpfs": null,
|
|
"tty": false,
|
|
"ulimit": [],
|
|
"upload": [],
|
|
"user": "",
|
|
"userns_mode": "",
|
|
"volumes": [
|
|
{
|
|
"container_path": "/var/lib/postgresql/data",
|
|
"from_container": "",
|
|
"host_path": "",
|
|
"read_only": null,
|
|
"volume_name": "postgres-data-e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"wait": false,
|
|
"wait_timeout": 60,
|
|
"working_dir": "/"
|
|
},
|
|
"sensitive_attributes": [
|
|
[
|
|
{
|
|
"type": "get_attr",
|
|
"value": "env"
|
|
}
|
|
]
|
|
],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjIifQ==",
|
|
"dependencies": [
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me",
|
|
"docker_network.workspace",
|
|
"docker_volume.postgres_data"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "docker_container",
|
|
"name": "qdrant",
|
|
"provider": "provider[\"registry.terraform.io/kreuzwerker/docker\"]",
|
|
"instances": [
|
|
{
|
|
"index_key": 0,
|
|
"schema_version": 2,
|
|
"attributes": {
|
|
"attach": false,
|
|
"bridge": "",
|
|
"capabilities": [],
|
|
"cgroupns_mode": null,
|
|
"command": [
|
|
"./entrypoint.sh"
|
|
],
|
|
"container_logs": null,
|
|
"container_read_refresh_timeout_milliseconds": 15000,
|
|
"cpu_set": "",
|
|
"cpu_shares": 0,
|
|
"destroy_grace_seconds": null,
|
|
"devices": [],
|
|
"dns": null,
|
|
"dns_opts": null,
|
|
"dns_search": null,
|
|
"domainname": "",
|
|
"entrypoint": [],
|
|
"env": [
|
|
"QDRANT__LOG_LEVEL=INFO",
|
|
"QDRANT__SERVICE__GRPC_PORT=6334",
|
|
"QDRANT__SERVICE__HTTP_PORT=6333"
|
|
],
|
|
"exit_code": null,
|
|
"gateway": "172.23.0.1",
|
|
"gpus": null,
|
|
"group_add": null,
|
|
"healthcheck": [
|
|
{
|
|
"interval": "20s",
|
|
"retries": 5,
|
|
"start_period": "0s",
|
|
"test": [
|
|
"CMD",
|
|
"curl",
|
|
"-f",
|
|
"http://localhost:6333/health"
|
|
],
|
|
"timeout": "5s"
|
|
}
|
|
],
|
|
"host": [],
|
|
"hostname": "f0b01bfe19f5",
|
|
"id": "f0b01bfe19f505c16f68a97eb00ceda08a22a9f0302f3e2f84c3173ae5cce4a0",
|
|
"image": "sha256:31407c0e8e32eb771b71718f1a4772e2ad47a07557917b21ac96792f40eb8007",
|
|
"init": false,
|
|
"ip_address": "172.23.0.6",
|
|
"ip_prefix_length": 16,
|
|
"ipc_mode": "private",
|
|
"labels": [
|
|
{
|
|
"label": "coder.service",
|
|
"value": "qdrant"
|
|
},
|
|
{
|
|
"label": "coder.workspace_id",
|
|
"value": "e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"links": null,
|
|
"log_driver": "json-file",
|
|
"log_opts": {
|
|
"max-file": "3",
|
|
"max-size": "10m"
|
|
},
|
|
"logs": false,
|
|
"max_retry_count": 0,
|
|
"memory": 0,
|
|
"memory_swap": 0,
|
|
"mounts": [],
|
|
"must_run": true,
|
|
"name": "qdrant-e7696a82-d8b2-42e6-920b-49e5aa5776c9",
|
|
"network_alias": null,
|
|
"network_data": [
|
|
{
|
|
"gateway": "172.23.0.1",
|
|
"global_ipv6_address": "",
|
|
"global_ipv6_prefix_length": 0,
|
|
"ip_address": "172.23.0.6",
|
|
"ip_prefix_length": 16,
|
|
"ipv6_gateway": "",
|
|
"network_name": "coder-e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"network_mode": "bridge",
|
|
"networks": null,
|
|
"networks_advanced": [
|
|
{
|
|
"aliases": [],
|
|
"ipv4_address": "",
|
|
"ipv6_address": "",
|
|
"name": "coder-e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"pid_mode": "",
|
|
"ports": [],
|
|
"privileged": false,
|
|
"publish_all_ports": false,
|
|
"read_only": false,
|
|
"remove_volumes": true,
|
|
"restart": "unless-stopped",
|
|
"rm": false,
|
|
"runtime": "runc",
|
|
"security_opts": [],
|
|
"shm_size": 64,
|
|
"start": true,
|
|
"stdin_open": false,
|
|
"stop_signal": "",
|
|
"stop_timeout": 0,
|
|
"storage_opts": null,
|
|
"sysctls": null,
|
|
"tmpfs": null,
|
|
"tty": false,
|
|
"ulimit": [],
|
|
"upload": [],
|
|
"user": "0:0",
|
|
"userns_mode": "",
|
|
"volumes": [
|
|
{
|
|
"container_path": "/qdrant/storage",
|
|
"from_container": "",
|
|
"host_path": "",
|
|
"read_only": null,
|
|
"volume_name": "qdrant-data-e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"wait": false,
|
|
"wait_timeout": 60,
|
|
"working_dir": "/qdrant"
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjIifQ==",
|
|
"dependencies": [
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me",
|
|
"docker_network.workspace",
|
|
"docker_volume.qdrant_data"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "docker_container",
|
|
"name": "redis",
|
|
"provider": "provider[\"registry.terraform.io/kreuzwerker/docker\"]",
|
|
"instances": [
|
|
{
|
|
"index_key": 0,
|
|
"schema_version": 2,
|
|
"attributes": {
|
|
"attach": false,
|
|
"bridge": "",
|
|
"capabilities": [],
|
|
"cgroupns_mode": null,
|
|
"command": [
|
|
"redis-server",
|
|
"--requirepass",
|
|
"devpassword",
|
|
"--appendonly",
|
|
"yes",
|
|
"--appendfsync",
|
|
"everysec",
|
|
"--maxmemory",
|
|
"512mb",
|
|
"--maxmemory-policy",
|
|
"allkeys-lru"
|
|
],
|
|
"container_logs": null,
|
|
"container_read_refresh_timeout_milliseconds": 15000,
|
|
"cpu_set": "",
|
|
"cpu_shares": 0,
|
|
"destroy_grace_seconds": null,
|
|
"devices": [],
|
|
"dns": null,
|
|
"dns_opts": null,
|
|
"dns_search": null,
|
|
"domainname": "",
|
|
"entrypoint": [
|
|
"docker-entrypoint.sh"
|
|
],
|
|
"env": [],
|
|
"exit_code": null,
|
|
"gateway": "172.23.0.1",
|
|
"gpus": null,
|
|
"group_add": null,
|
|
"healthcheck": [
|
|
{
|
|
"interval": "15s",
|
|
"retries": 5,
|
|
"start_period": "0s",
|
|
"test": [
|
|
"CMD",
|
|
"redis-cli",
|
|
"--raw",
|
|
"incr",
|
|
"ping"
|
|
],
|
|
"timeout": "3s"
|
|
}
|
|
],
|
|
"host": [],
|
|
"hostname": "33086896d289",
|
|
"id": "33086896d28946e6fe11eeab0885ff812899afa474c858372d661c3d954f377e",
|
|
"image": "sha256:bb186d083732f669da90be8b0f975a37812b15e913465bb14d845db72a4e3e08",
|
|
"init": false,
|
|
"ip_address": "172.23.0.2",
|
|
"ip_prefix_length": 16,
|
|
"ipc_mode": "private",
|
|
"labels": [
|
|
{
|
|
"label": "coder.service",
|
|
"value": "redis"
|
|
},
|
|
{
|
|
"label": "coder.workspace_id",
|
|
"value": "e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"links": null,
|
|
"log_driver": "json-file",
|
|
"log_opts": {
|
|
"max-file": "3",
|
|
"max-size": "10m"
|
|
},
|
|
"logs": false,
|
|
"max_retry_count": 0,
|
|
"memory": 0,
|
|
"memory_swap": 0,
|
|
"mounts": [],
|
|
"must_run": true,
|
|
"name": "redis-e7696a82-d8b2-42e6-920b-49e5aa5776c9",
|
|
"network_alias": null,
|
|
"network_data": [
|
|
{
|
|
"gateway": "172.23.0.1",
|
|
"global_ipv6_address": "",
|
|
"global_ipv6_prefix_length": 0,
|
|
"ip_address": "172.23.0.2",
|
|
"ip_prefix_length": 16,
|
|
"ipv6_gateway": "",
|
|
"network_name": "coder-e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"network_mode": "bridge",
|
|
"networks": null,
|
|
"networks_advanced": [
|
|
{
|
|
"aliases": [],
|
|
"ipv4_address": "",
|
|
"ipv6_address": "",
|
|
"name": "coder-e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"pid_mode": "",
|
|
"ports": [],
|
|
"privileged": false,
|
|
"publish_all_ports": false,
|
|
"read_only": false,
|
|
"remove_volumes": true,
|
|
"restart": "unless-stopped",
|
|
"rm": false,
|
|
"runtime": "runc",
|
|
"security_opts": [],
|
|
"shm_size": 64,
|
|
"start": true,
|
|
"stdin_open": false,
|
|
"stop_signal": "",
|
|
"stop_timeout": 0,
|
|
"storage_opts": null,
|
|
"sysctls": null,
|
|
"tmpfs": null,
|
|
"tty": false,
|
|
"ulimit": [],
|
|
"upload": [],
|
|
"user": "",
|
|
"userns_mode": "",
|
|
"volumes": [
|
|
{
|
|
"container_path": "/data",
|
|
"from_container": "",
|
|
"host_path": "",
|
|
"read_only": null,
|
|
"volume_name": "redis-data-e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"wait": false,
|
|
"wait_timeout": 60,
|
|
"working_dir": "/data"
|
|
},
|
|
"sensitive_attributes": [
|
|
[
|
|
{
|
|
"type": "get_attr",
|
|
"value": "command"
|
|
},
|
|
{
|
|
"type": "index",
|
|
"value": {
|
|
"value": 2,
|
|
"type": "number"
|
|
}
|
|
}
|
|
]
|
|
],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjIifQ==",
|
|
"dependencies": [
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me",
|
|
"docker_network.workspace",
|
|
"docker_volume.redis_data"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "docker_image",
|
|
"name": "devcontainer",
|
|
"provider": "provider[\"registry.terraform.io/kreuzwerker/docker\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 0,
|
|
"attributes": {
|
|
"build": [],
|
|
"force_remove": null,
|
|
"id": "sha256:dca6a985ffbbc74007a13b6f56ac0fbbc5febae081350b66e865a5549338134bmcr.microsoft.com/devcontainers/universal:2-linux",
|
|
"image_id": "sha256:dca6a985ffbbc74007a13b6f56ac0fbbc5febae081350b66e865a5549338134b",
|
|
"keep_locally": true,
|
|
"latest": "sha256:dca6a985ffbbc74007a13b6f56ac0fbbc5febae081350b66e865a5549338134b",
|
|
"name": "mcr.microsoft.com/devcontainers/universal:2-linux",
|
|
"output": null,
|
|
"platform": null,
|
|
"pull_trigger": null,
|
|
"pull_triggers": null,
|
|
"repo_digest": "mcr.microsoft.com/devcontainers/universal@sha256:dca6a985ffbbc74007a13b6f56ac0fbbc5febae081350b66e865a5549338134b",
|
|
"triggers": null
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "bnVsbA=="
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "docker_network",
|
|
"name": "workspace",
|
|
"provider": "provider[\"registry.terraform.io/kreuzwerker/docker\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"attachable": false,
|
|
"check_duplicate": null,
|
|
"driver": "bridge",
|
|
"id": "812199c95db82755b05b93e728dd43fc87fc47a6f8b0b0ae5d7e391a0aacad17",
|
|
"ingress": false,
|
|
"internal": false,
|
|
"ipam_config": [
|
|
{
|
|
"aux_address": {},
|
|
"gateway": "172.23.0.1",
|
|
"ip_range": "",
|
|
"subnet": "172.23.0.0/16"
|
|
}
|
|
],
|
|
"ipam_driver": "default",
|
|
"ipam_options": null,
|
|
"ipv6": false,
|
|
"labels": [
|
|
{
|
|
"label": "coder.owner",
|
|
"value": "default"
|
|
},
|
|
{
|
|
"label": "coder.project",
|
|
"value": "dev-environment"
|
|
},
|
|
{
|
|
"label": "coder.workspace_id",
|
|
"value": "e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"name": "coder-e7696a82-d8b2-42e6-920b-49e5aa5776c9",
|
|
"options": {
|
|
"com.docker.network.enable_ipv4": "true"
|
|
},
|
|
"scope": "local"
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "docker_volume",
|
|
"name": "jupyter_data",
|
|
"provider": "provider[\"registry.terraform.io/kreuzwerker/docker\"]",
|
|
"instances": []
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "docker_volume",
|
|
"name": "pgadmin_data",
|
|
"provider": "provider[\"registry.terraform.io/kreuzwerker/docker\"]",
|
|
"instances": [
|
|
{
|
|
"index_key": 0,
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"driver": "local",
|
|
"driver_opts": null,
|
|
"id": "pgadmin-data-e7696a82-d8b2-42e6-920b-49e5aa5776c9",
|
|
"labels": [
|
|
{
|
|
"label": "coder.service",
|
|
"value": "pgadmin"
|
|
},
|
|
{
|
|
"label": "coder.workspace_id",
|
|
"value": "e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"mountpoint": "/var/lib/docker/volumes/pgadmin-data-e7696a82-d8b2-42e6-920b-49e5aa5776c9/_data",
|
|
"name": "pgadmin-data-e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_workspace.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "docker_volume",
|
|
"name": "postgres_data",
|
|
"provider": "provider[\"registry.terraform.io/kreuzwerker/docker\"]",
|
|
"instances": [
|
|
{
|
|
"index_key": 0,
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"driver": "local",
|
|
"driver_opts": null,
|
|
"id": "postgres-data-e7696a82-d8b2-42e6-920b-49e5aa5776c9",
|
|
"labels": [
|
|
{
|
|
"label": "coder.service",
|
|
"value": "postgres"
|
|
},
|
|
{
|
|
"label": "coder.workspace_id",
|
|
"value": "e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"mountpoint": "/var/lib/docker/volumes/postgres-data-e7696a82-d8b2-42e6-920b-49e5aa5776c9/_data",
|
|
"name": "postgres-data-e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_workspace.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "docker_volume",
|
|
"name": "qdrant_data",
|
|
"provider": "provider[\"registry.terraform.io/kreuzwerker/docker\"]",
|
|
"instances": [
|
|
{
|
|
"index_key": 0,
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"driver": "local",
|
|
"driver_opts": null,
|
|
"id": "qdrant-data-e7696a82-d8b2-42e6-920b-49e5aa5776c9",
|
|
"labels": [
|
|
{
|
|
"label": "coder.service",
|
|
"value": "qdrant"
|
|
},
|
|
{
|
|
"label": "coder.workspace_id",
|
|
"value": "e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"mountpoint": "/var/lib/docker/volumes/qdrant-data-e7696a82-d8b2-42e6-920b-49e5aa5776c9/_data",
|
|
"name": "qdrant-data-e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_workspace.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "docker_volume",
|
|
"name": "redis_data",
|
|
"provider": "provider[\"registry.terraform.io/kreuzwerker/docker\"]",
|
|
"instances": [
|
|
{
|
|
"index_key": 0,
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"driver": "local",
|
|
"driver_opts": null,
|
|
"id": "redis-data-e7696a82-d8b2-42e6-920b-49e5aa5776c9",
|
|
"labels": [
|
|
{
|
|
"label": "coder.service",
|
|
"value": "redis"
|
|
},
|
|
{
|
|
"label": "coder.workspace_id",
|
|
"value": "e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"mountpoint": "/var/lib/docker/volumes/redis-data-e7696a82-d8b2-42e6-920b-49e5aa5776c9/_data",
|
|
"name": "redis-data-e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"data.coder_parameter.enable_services",
|
|
"data.coder_workspace.me"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"mode": "managed",
|
|
"type": "docker_volume",
|
|
"name": "workspaces",
|
|
"provider": "provider[\"registry.terraform.io/kreuzwerker/docker\"]",
|
|
"instances": [
|
|
{
|
|
"schema_version": 1,
|
|
"attributes": {
|
|
"driver": "local",
|
|
"driver_opts": null,
|
|
"id": "workspaces-e7696a82-d8b2-42e6-920b-49e5aa5776c9",
|
|
"labels": [
|
|
{
|
|
"label": "coder.owner",
|
|
"value": "default"
|
|
},
|
|
{
|
|
"label": "coder.type",
|
|
"value": "workspace-data"
|
|
},
|
|
{
|
|
"label": "coder.workspace_id",
|
|
"value": "e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
}
|
|
],
|
|
"mountpoint": "/var/lib/docker/volumes/workspaces-e7696a82-d8b2-42e6-920b-49e5aa5776c9/_data",
|
|
"name": "workspaces-e7696a82-d8b2-42e6-920b-49e5aa5776c9"
|
|
},
|
|
"sensitive_attributes": [],
|
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
|
|
"dependencies": [
|
|
"data.coder_workspace.me",
|
|
"data.coder_workspace_owner.me"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"check_results": [
|
|
{
|
|
"object_kind": "var",
|
|
"config_addr": "var.pgadmin_password",
|
|
"status": "pass",
|
|
"objects": [
|
|
{
|
|
"object_addr": "var.pgadmin_password",
|
|
"status": "pass"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"object_kind": "var",
|
|
"config_addr": "var.postgres_max_connections",
|
|
"status": "pass",
|
|
"objects": [
|
|
{
|
|
"object_addr": "var.postgres_max_connections",
|
|
"status": "pass"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"object_kind": "var",
|
|
"config_addr": "var.redis_version",
|
|
"status": "pass",
|
|
"objects": [
|
|
{
|
|
"object_addr": "var.redis_version",
|
|
"status": "pass"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"object_kind": "var",
|
|
"config_addr": "var.node_version",
|
|
"status": "pass",
|
|
"objects": [
|
|
{
|
|
"object_addr": "var.node_version",
|
|
"status": "pass"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"object_kind": "var",
|
|
"config_addr": "var.environment",
|
|
"status": "pass",
|
|
"objects": [
|
|
{
|
|
"object_addr": "var.environment",
|
|
"status": "pass"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"object_kind": "var",
|
|
"config_addr": "var.workspace_memory_limit",
|
|
"status": "pass",
|
|
"objects": [
|
|
{
|
|
"object_addr": "var.workspace_memory_limit",
|
|
"status": "pass"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"object_kind": "var",
|
|
"config_addr": "var.redis_password",
|
|
"status": "pass",
|
|
"objects": [
|
|
{
|
|
"object_addr": "var.redis_password",
|
|
"status": "pass"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"object_kind": "var",
|
|
"config_addr": "var.pgadmin_port",
|
|
"status": "pass",
|
|
"objects": [
|
|
{
|
|
"object_addr": "var.pgadmin_port",
|
|
"status": "pass"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"object_kind": "var",
|
|
"config_addr": "var.pgadmin_email",
|
|
"status": "pass",
|
|
"objects": [
|
|
{
|
|
"object_addr": "var.pgadmin_email",
|
|
"status": "pass"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"object_kind": "var",
|
|
"config_addr": "var.workspace_cpu_limit",
|
|
"status": "pass",
|
|
"objects": [
|
|
{
|
|
"object_addr": "var.workspace_cpu_limit",
|
|
"status": "pass"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"object_kind": "var",
|
|
"config_addr": "var.postgres_version",
|
|
"status": "pass",
|
|
"objects": [
|
|
{
|
|
"object_addr": "var.postgres_version",
|
|
"status": "pass"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"object_kind": "var",
|
|
"config_addr": "var.postgres_password",
|
|
"status": "pass",
|
|
"objects": [
|
|
{
|
|
"object_addr": "var.postgres_password",
|
|
"status": "pass"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"object_kind": "var",
|
|
"config_addr": "var.python_version",
|
|
"status": "pass",
|
|
"objects": [
|
|
{
|
|
"object_addr": "var.python_version",
|
|
"status": "pass"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"object_kind": "var",
|
|
"config_addr": "var.redis_max_memory",
|
|
"status": "pass",
|
|
"objects": [
|
|
{
|
|
"object_addr": "var.redis_max_memory",
|
|
"status": "pass"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"object_kind": "var",
|
|
"config_addr": "var.project_name",
|
|
"status": "pass",
|
|
"objects": [
|
|
{
|
|
"object_addr": "var.project_name",
|
|
"status": "pass"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|