用途:该技能帮助使用 Materialize Terraform Provider 以声明式方式管理 Materialize 资源,适用于 Materialize Cloud(SaaS)与自管理部署。它不重复逐资源参数参考,而是指向自动生成的权威文档,并补充生成文档未覆盖的知识:Provider 设置、跨资源模式、导入工作流与注意事项。
权威参考位置:生成文档位于 provider 仓库的 docs/ 目录及 Terraform Registry(https://registry.terraform.io/providers/MaterializeInc/materialize/latest/docs)。文件命名规则:资源 materialize_<name> 对应 docs/resources/<name>.md;数据源对应 docs/data-sources/materialize_<name>.md;Provider 参数见 docs/index.md;迁移指南见 docs/guides/。不要猜测资源参数,写配置前先读生成文档;本地安装 provider 后可用 terraform providers schema -json 获取精确 schema。
Provider 配置:Cloud 使用 password 与 default_region;自管理使用 host、port、username、database、password、sslmode(TLS 部署用 require 或更严格,disable 仅适合本地非 TLS)。支持 OIDC/SSO(options 中 oidc_auth_enabled = "true")。所有参数有环境变量等价项:MZ_HOST、MZ_PORT、MZ_USER、MZ_DATABASE、MZ_PASSWORD、MZ_SSLMODE、MZ_DEFAULT_REGION。自管理模式不支持依赖 Frontegg 的资源(app passwords、users、SSO、SCIM)。
资源范围:计算(materialize_cluster,cluster_replica 已弃用)、命名空间、连接(kafka、postgres、mysql、sqlserver、aws、ssh_tunnel 等)、数据源、source table、Sink、视图与表、安全(role、secret、network_policy、grant)、对象授权、Cloud 专属资源、系统配置及数据源。
跨资源模式:多数资源暴露只读 qualified_sql_name;引用块接受 name、database_name、schema_name;凭据参数可接受内联文本或 secret 引用块,建议用 secret;支持 identify_by_name 用于蓝绿部署;Terraform 1.11+ 支持 write-only 参数(如 password_wo、value_wo)避免进入 state。
导入:terraform import materialize_cluster.my_cluster <region>:<cluster_id>,或使用 identify_by_name 形式 <region>:name:<cluster_name>。对象 ID 可在 mz_catalog 系统表中查找。
常见注意事项:Cloud 与自管理差异;materialize_database 不自动创建 public schema;source 内联 table 块已弃用,改用独立 source_table 资源;webhook 源为旧版;cluster replica 已弃用;敏感值仍存于 state,建议用 write-only 参数。
限制:该技能不复制逐资源参数参考,需查阅生成文档;部分功能仅 Cloud 可用;迁移与 webhook 自动化迁移暂未提供。