nwarila-platform/terraform-proxmox-iso-manager-framework

GitHub: nwarila-platform/terraform-proxmox-iso-manager-framework

该模块通过 Git 跟踪的 SHA 锁定记录,以声明式方式管理 Proxmox VE 上安装 ISO 的下载、校验与生命周期,供 Packer 模板仓库安全消费。

Stars: 0 | Forks: 0

# terraform-proxmox-iso-manager-framework [![CI](https://img.shields.io/github/actions/workflow/status/nwarila-platform/terraform-proxmox-iso-manager-framework/ci.yaml?branch=main&label=CI)](https://github.com/nwarila-platform/terraform-proxmox-iso-manager-framework/actions/workflows/ci.yaml) [![安全扫描](https://img.shields.io/github/actions/workflow/status/nwarila-platform/terraform-proxmox-iso-manager-framework/security.yaml?branch=main&label=Security)](https://github.com/nwarila-platform/terraform-proxmox-iso-manager-framework/actions/workflows/security.yaml) [![CodeQL](https://img.shields.io/github/actions/workflow/status/nwarila-platform/terraform-proxmox-iso-manager-framework/codeql.yaml?branch=main&label=CodeQL)](https://github.com/nwarila-platform/terraform-proxmox-iso-manager-framework/actions/workflows/codeql.yaml) [![最新发布](https://img.shields.io/github/v/release/nwarila-platform/terraform-proxmox-iso-manager-framework?label=Release)](https://github.com/nwarila-platform/terraform-proxmox-iso-manager-framework/releases) [![Renovate](https://img.shields.io/badge/Renovate-enabled-1A1F6C?logo=renovatebot&logoColor=white)](https://docs.renovatebot.com/) [![约定式提交](https://img.shields.io/badge/Conventional%20Commits-1.0.0-FE5196?logo=conventionalcommits&logoColor=white)](https://conventionalcommits.org) [![许可证: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) 用于一项任务的 Terraform 子模块:通过包含 `url`、`sha256` 和 `filename` 的 Git 跟踪锁定记录来管理一个 Proxmox VE 安装程序 ISO。 该模块将该锁定记录转换为一个经过 SHA 校验的 Proxmox ISO 路径,例如 `cephFS:iso/Rocky-9.6-x86_64-dvd.iso`,Packer 模板仓库可以将其渲染为与 [`nwarila-platform/proxmox-packer-framework`](https://github.com/nwarila-platform/proxmox-packer-framework) 变量类型相匹配的 `boot_iso` 和 `additional_iso_files` pkrvars。 ## 这展示了什么 该仓库将一个小型 Terraform 子模块视为一个生产级平台组件: - 精确的 Terraform 和 provider 锁定 - 带有验证覆盖的类型化输入 - 基于模拟且无实际 Proxmox 依赖的 Terraform 测试 - 经过 SHA 校验的 ISO 生命周期管理 - 对未托管文件采取失败即拒绝(fail-closed)的行为 - 明确的威胁模型和模块不变量 - Diataxis 文档结构 - ADR 支持的设计决策 - 作为 `make ci` 一部分的 OPA 策略测试 - CI 安全扫描 - 发布证据工件 ## 用法 ``` provider "proxmox" { endpoint = "https://proxmox.example.test:8006/" # Configure credentials in the root consumer, not in this child module. } module "iso" { source = "git::https://github.com/nwarila-platform/terraform-proxmox-iso-manager-framework.git//terraform?ref=" family = "rocky9" iso_pin = { url = "https://dl.rockylinux.org/pub/rocky/9.6/isos/x86_64/Rocky-9.6-x86_64-dvd.iso" sha256 = "8ff2a47e2f3bfe442617fceb7ef289b7b1d2d0502089dbbd505d5368b2b3a90f" filename = "Rocky-9.6-x86_64-dvd.iso" } node = "pve-node-01" storage = "cephFS" } output "boot_iso" { value = { iso_checksum = "sha256:${module.iso.iso_sha256}" iso_file = module.iso.iso_path iso_urls = null cd_label = null index = 0 iso_download_pve = false iso_storage_pool = null iso_target_extension = null iso_target_path = null keep_cdrom_device = false type = "scsi" unmount = true } } output "additional_iso_files" { value = [] } ``` 上述输出与 [`nwarila-platform/proxmox-packer-framework`](https://github.com/nwarila-platform/proxmox-packer-framework) 声明的 `boot_iso` 和 `additional_iso_files` 变量类型相匹配,旨在通过 `templatefile()` 和 `local_file` 渲染到一个自动加载的 `*.auto.pkrvars.hcl` 文件中。有关渲染模式,请参阅 [从 Packer 模板中使用](docs/how-to/use-from-a-packer-template.md)。 使用者必须将该模块锁定到某个发布标签并导入 `//terraform` 子目录。 具体的 Terraform 和 provider 锁定版本位于 [`terraform/versions.tf`](terraform/versions.tf) 中。 该模块会拒绝带有令牌、格式错误或携带凭证的 ISO URL,因为 Terraform 状态和输出不是存放 bearer token 的安全位置。 ## 示例 | 示例 | 用途 | | --- | --- | | [`examples/minimal/`](examples/minimal/) | 最小有效模块调用 | | [`examples/packer-consumer/`](examples/packer-consumer/) | 用于 Packer 变量的消费者形状输出 | | [`examples/adoption-recovery/`](examples/adoption-recovery/) | 显式的未托管文件接管路径 | ## 本地验证 运行与 CI 相同的核心检查: ``` make ci ``` CI 目标会检查 Terraform 格式化、初始化、验证、测试、TFLint、生成的 Terraform 文档偏差、文档布局以及 OPA 策略测试。 ## 质量控制 | 控制 | 证据 | | --- | --- | | Terraform 格式化、初始化、验证、测试、TFLint、文档偏差、文档布局以及 OPA 策略测试 | 运行 `make ci` 的 `CI` 工作流 | | GitHub Actions 静态分析 | `CodeQL Analysis` 工作流 | | 文件系统、IaC 和密钥扫描 | `Security Scan` 工作流 | | OpenSSF 仓库安全态势检查 | `Scorecard` 工作流 | | 模板和组织基线偏差 | `Template Sync` 和 `Org ADR Sync` 工作流 | | SHA 锁定、精确锁定以及特权工作流安全 | `Repo Hygiene` 工作流 | | 发布 PR、变更日志、标签和证据 | `Release` 工作流 | | 依赖更新 PR | Renovate | ## 文档 - [从 Packer 模板仓库使用](docs/how-to/use-from-a-packer-template.md) - [开发此模块](docs/how-to/develop-this-module.md) - [审查发布证据](docs/how-to/review-release-evidence.md) - [采用此模板](docs/how-to/adopt-this-template.md) - [架构](docs/explanation/architecture.md) - [测试策略](docs/explanation/testing-strategy.md) - [威胁模型](docs/explanation/threat-model.md) - [Terraform 参考](docs/reference/terraform.md) - [发布门禁](docs/reference/release-gates.md) - [模块不变量](docs/reference/invariants.md) - [模板镜像契约](docs/reference/mirroring.md) - [决策记录](docs/decision-records/README.md) ## 安全性 上游 ISO 源的完整性不在该模块的威胁模型范围内。使用者有责任从上游分发渠道获取可信的 SHA-256 值。有关边界和报告流程,请参阅继承的[组织安全策略](https://github.com/nwarila-platform/.github/blob/main/SECURITY.md)以及 [`docs/explanation/threat-model.md`](docs/explanation/threat-model.md)。 特定于仓库的贡献和安全策略文件位于此仓库中。在 GitHub 支持继承社区健康文件的地方,仍然可以从 `nwarila-platform/.github` 继承组织范围的默认设置。 ## 许可证 [MIT](LICENSE)。
标签:ECS, Packer, Proxmox VE, Terraform, 自动化运维, 镜像管理