Terraboard 是一个用于可视化和查询 Terraform 状态的 Web 仪表板。它主要功能包括:
目前支持多种远程状态后端提供程序:
概览页面按最近修改日期显示 S3 存储桶中的所有状态文件。
搜索视图允许通过各种条件查找资源。
状态视图显示特定版本的 Terraform 状态详情。
从状态视图中,可以将当前状态版本与其他版本进行比较。
无论状态文件的位置如何,Terraboard 都需要存储其内部数据集,因此需要 PostgreSQL 数据库。不过数据弹性并非至关重要,因为该数据集可随时从状态文件重建。
AWS S3(状态)+ DynamoDB(锁)
.tfstate 为后缀的 Terraform 状态文件s3:GetObjects3:ListBuckets3:ListBucketVersionss3:GetObjectVersiondynamodb:Scan 访问权限Terraform Cloud
Terraboard 目前支持三种配置方式:
配置优先级按上述顺序排列。
应用选项
-V, --version:显示版本-c, --config-file <默认:$CONFIG_FILE>:配置文件路径
通用提供程序选项
--no-versioning <默认:$TERRABOARD_NO_VERSIONING>:禁用 Terraboard 的版本控制支持(适用于 MinIO 等 S3 兼容提供程序)
--no-locks <默认:$TERRABOARD_NO_LOCKS>:禁用 Terraboard 的锁支持(适用于 MinIO 等 S3 兼容提供程序)
日志选项
-l, --log-level <默认:"info">:设置日志级别('debug'、'info'、'warn'、'error'、'fatal'、'panic')
--log-format <默认:"plain">:设置日志格式('plain'、'json')
数据库选项
--db-host <默认:"db">:数据库主机
--db-port <默认:"5432">:数据库端口
--db-user <默认:"gorm">:数据库用户
--db-password <默认:$DB_PASSWORD>:数据库密码
--db-name <默认:"gorm">:数据库名称
--db-sslmode <默认:"require">:数据库 SSL 模式
--no-sync:不同步数据库
--sync-interval <默认:"1">:数据库同步间隔(分钟)
AWS(及 S3 兼容提供程序)选项
--dynamodb-table <默认:$AWS_DYNAMODB_TABLE>:用于锁的 AWS DynamoDB 表
--aws-endpoint <默认:$AWS_ENDPOINT>:AWS 端点
--aws-region <默认:$AWS_REGION>:AWS 区域
--aws-role-arn <默认:$APP_ROLE_ARN>:要承担的角色 ARN
--aws-external-id <默认:$AWS_EXTERNAL_ID>:承担角色时使用的外部 ID
S3 选项
--s3-bucket <默认:$AWS_BUCKET>:AWS S3 存储桶
--key-prefix <默认:$AWS_KEY_PREFIX>:AWS 键前缀
--file-extension <默认:".tfstate">:状态文件的文件扩展名
--force-path-style <默认:$AWS_FORCE_PATH_STYLE>:强制路径样式 S3 存储桶调用
Terraform Enterprise 选项
--tfe-address <默认:$TFE_ADDRESS>:用于状态访问的 Terraform Enterprise 地址
--tfe-token <默认:$TFE_TOKEN>:用于状态访问的 Terraform Enterprise 令牌
--tfe-organization <默认:$TFE_ORGANIZATION>:用于状态访问的 Terraform Enterprise 组织
Google Cloud Platform 选项
--gcs-bucket:要搜索的 Google Cloud 存储桶
--gcp-sa-key-path <默认:$GCP_SA_KEY_PATH>:用于连接 Google Cloud Platform 的服务账户路径
GitLab 选项
--gitlab-address <默认:"[**]"*>:GitLab 地址(根地址)
--gitlab-token <默认:$GITLAB_TOKEN>:用于 GitLab 认证的令牌
Web 选项
-p, --port <默认:"8080">:监听端口
--base-url <默认:"/">:基础 URL
--logout-url <默认:$TERRABOARD_LOGOUT_URL>:登出 URL
帮助选项
-h, --help:显示帮助信息可通过 卷 或 配置 向容器提供配置文件。
shell# 将 AWS 凭证设置为环境变量: export AWS_ACCESS_KEY_ID=<access_key> export AWS_SECRET_ACCESS_KEY=<access_secret> # 将 AWS 配置设置为环境变量: export AWS_DEFAULT_REGION=<AWS 默认区域> export AWS_BUCKET=<S3 存储桶名称> export AWS_DYNAMODB_TABLE=<AWS DynamoDB 表> docker-compose up
然后在浏览器中访问 http://localhost:8080。
shell# 将 AWS 凭证设置为环境变量: export AWS_ACCESS_KEY_ID=<access_key> export AWS_SECRET_ACCESS_KEY=<access_secret> # 将 AWS 配置设置为环境变量: export AWS_DEFAULT_REGION=<AWS 默认区域> export AWS_BUCKET=<S3 存储桶名称> export AWS_DYNAMODB_TABLE=<AWS_DYNAMODB_TABLE> # 创建网络并启动两个容器: docker network create terraboard docker run --name db \ -e POSTGRES_USER=gorm \ -e POSTGRES_DB=gorm \ -e POSTGRES_PASSWORD="<mypassword>" \ -e GODEBUG="netdns=go" \ --net terraboard \ --detach \ --restart=always \ postgres:9.5 docker run -p 8080:8080 \ -e AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID}" \ -e AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY}" \ -e AWS_REGION="${AWS_DEFAULT_REGION}" \ -e AWS_BUCKET="${AWS_BUCKET}" \ -e WS_DYNAMODB_TABLE="${AWS_DYNAMODB_TABLE}" \ -e DB_PASSWORD="<mypassword>" \ -e DB_SSLMODE="disable" \ --net terraboard \ camptocamp/terraboard:latest
然后在浏览器中访问 http://localhost:8080。
https://github.com/camptocamp/camptocamp-rancher-catalog 包含 Terraboard 模板,可在 Cattle 中自动安装。
Terraboard 不实现认证。建议使用如 https://github.com/bitly/oauth2_proxy 之类的认证代理。
如果需要为 Terraboard 设置路由路径,可以通过 BASE_URL 环境变量设置基础 URL。
使用认证代理时,Terraboard 将从代理传递的标头中检索登录用户和电子邮件。还可以传递 TERRABOARD_LOGOUT_URL 参数,允许用户退出代理。
shell$ go get github.com/camptocamp/terraboard
| Terraboard 版本 | 最大 Terraform 版本 |
|---|---|
| 0.15.0 | 0.12.7 |
| 0.16.0 | 0.12.7 |
| 0.17.0 | 0.12.18 |
| 0.18.0 | 0.12.18 |
| 0.19.0 | 0.12.20 |
| 0.20.0 | 0.12.26 |
| 0.21.0 | 0.12.28 |
| 0.22.0 | 0.13.0 |
| 1.0.0 | 0.14.5 |
| 1.1.0 | 0.14.10 |
Terraboard 由两个组件组成:
服务器进程
服务器用 Go 编写,运行一个 Web 服务器,提供:
服务器还有一个定期(每 1 分钟)从 S3 存储桶更新 PostgreSQL 数据库的例程。
Web UI
UI 是一个 AngularJS 应用,从 index.html 提供。所有 UI 代码可在 static/ 目录中找到。
shell$ docker-compose build && docker-compose up -d # 在浏览器中访问 http://localhost
参见 CONTRIBUTING.md
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务