ebogdum/terraform-provider-routeros
GitHub: ebogdum/terraform-provider-routeros
一个覆盖全面的 MikroTik RouterOS 7.x Terraform Provider,通过 REST API 将数百个设备菜单映射为代码可管理的基础设施资源。
Stars: 2 | Forks: 0
# MikroTik RouterOS 7 的 Terraform Provider
[](https://registry.terraform.io/providers/ebogdum/routeros/latest)
[](LICENSE)
[](https://pkg.go.dev/github.com/ebogdum/terraform-provider-routeros)
使用 Terraform 以代码方式管理 MikroTik **RouterOS 7.x** 设备。完全覆盖每个设备菜单 —— **420 个菜单,182 个资源,276 个数据源,75 个操作,3289 个属性** —— 这些 schema 是针对真实路由器逐个属性进行验证而生成的。
只需单一的 Terraform 配置,即可管理一台 MikroTik 路由器或整个机群。以确定性的顺序应用防火墙规则,导入现有的设备状态,检测并纠正带外漂移,并通过插件框架的敏感值处理功能安全地传递 secrets。
## 目录
- [为什么选择此 Provider](#why-this-provider)
- [快速入门](#quick-start)
- [多路由器机群管理](#multi-router-fleet-management)
- [覆盖范围](#coverage)
- [安全防护](#safety-guards)
- [漂移检测与协调](#drift-detection-and-reconciliation)
- [资源、数据源和操作](#resources-data-sources-and-actions)
- [身份验证与 TLS](#authentication-and-tls)
- [开发](#development)
- [发布流程](#release-process)
- [发布历史](#release-history)
- [许可证](#license)
## 为什么选择此 Provider
| 功能 | 此 Provider |
|---|---|
| RouterOS API | REST (HTTPS) |
| 菜单覆盖 | 420 个菜单(通过 REST 暴露的每个菜单) |
| 资源 / 数据源 / 操作 | 182 / 276 / 75 |
| 从单个 provider 块管理多路由器 | 是(具名 map,无需 provider 别名) |
| 确定性防火墙排序 | 是(`position` 整数;在销毁/重建期间保持稳定) |
| 锁定安全防护 | 防火墙、用户、user-group、mac-server |
| 敏感字段脱敏 | 28 个属性标记为敏感 |
| 带外漂移检测 | 是(经过端到端验证) |
| Terraform 导入 | 是(`/<.id>` 格式) |
| Schema 来源 | 真实设备 + WebFig skin 文件 + Confluence 文档 + 逐个属性的设备验证 |
| 插件框架 | terraform-plugin-framework (v1.19.0) |
| 最低 Terraform 版本 | 1.4 |
| 最低 RouterOS 版本 | 7.1(需要 REST API) |
## 快速入门
```
terraform {
required_providers {
routeros = {
source = "ebogdum/routeros"
version = "~> 1.0"
}
}
}
provider "routeros" {
host = "https://192.0.2.1"
username = "admin"
password = var.routeros_password
insecure = true # set to false in production with a real cert
}
resource "routeros_ip_address" "lan" {
address = "192.168.88.1/24"
interface = "bridge1"
comment = "Managed by Terraform"
}
resource "routeros_ip_firewall_filter" "allow_established" {
chain = "input"
action = "accept"
connection_state = "established,related"
position = 100
comment = "Managed by Terraform"
lockout_ack = true
}
```
执行 `terraform init && terraform apply` 即可完成。
### 为本地开发安装
```
# 1. 构建 provider 二进制文件
make build
# 2. 告诉 Terraform 使用本地二进制文件而不是 registry
cat > ~/.terraformrc <
标签:Docker 部署, ECS, EVTX分析, Go, MikroTik, RouterOS, Ruby工具, Terraform, 日志审计, 网络运维