New Terraform resources: towerops_agent, towerops_integration, towerops_maintenance_window with full CRUD, docs, and examples.
3.6 KiB
3.6 KiB
| page_title | description |
|---|---|
| TowerOps Provider | The TowerOps provider allows you to manage TowerOps resources such as sites, devices, on-call schedules, and escalation policies. |
TowerOps Provider
The TowerOps provider allows you to manage TowerOps resources via Terraform.
Authentication
The provider requires an API token for authentication. Generate a token from the TowerOps web application under Settings → API Tokens. The token determines which organization's resources are accessible.
Example Usage
Basic Usage with Site Hierarchy
terraform {
required_providers {
towerops = {
source = "towerops/towerops"
version = "~> 0.1"
}
}
}
provider "towerops" {
token = var.towerops_api_token
}
resource "towerops_site" "example" {
name = "Main Office"
location = "New York, NY"
}
resource "towerops_device" "router" {
site_id = towerops_site.example.id
name = "Core Router"
ip_address = "192.168.1.1"
}
Site-less Device (Direct Organization Assignment)
Devices can be created without a site, assigned directly to the organization:
resource "towerops_device" "cloud_router" {
name = "Cloud Router"
ip_address = "10.0.1.1"
# No site_id - device belongs directly to organization
}
SNMPv3 Device Configuration
resource "towerops_device" "secure_switch" {
name = "Secure Switch"
ip_address = "192.168.1.10"
snmp_version = "3"
# SNMPv3 Authentication and Privacy
snmpv3_security_level = "authPriv"
snmpv3_username = "snmpuser"
snmpv3_auth_protocol = "SHA-256"
snmpv3_auth_password = var.snmp_auth_password
snmpv3_priv_protocol = "AES"
snmpv3_priv_password = var.snmp_priv_password
}
Complete Example with Multiple Configurations
# Traditional site-based device with SNMP v2c
resource "towerops_device" "legacy_router" {
site_id = towerops_site.example.id
name = "Legacy Router"
ip_address = "192.168.1.1"
snmp_version = "2c"
}
# Organization-level device with SNMPv3
resource "towerops_device" "modern_switch" {
name = "Modern Switch"
ip_address = "10.0.2.1"
snmp_version = "3"
snmpv3_security_level = "authPriv"
snmpv3_username = "admin"
snmpv3_auth_protocol = "SHA-256"
snmpv3_auth_password = var.snmp_auth_pass
snmpv3_priv_protocol = "AES-256"
snmpv3_priv_password = var.snmp_priv_pass
monitoring_enabled = true
snmp_enabled = true
}
On-Call Schedule and Escalation Policy
resource "towerops_schedule" "primary" {
name = "Primary On-Call"
timezone = "America/Chicago"
description = "Main engineering on-call rotation"
}
resource "towerops_escalation_policy" "critical" {
name = "Critical Alerts"
description = "Escalation for P1 incidents"
repeat_count = 5
}
Agent Token
resource "towerops_agent" "office" {
name = "Office Poller"
}
output "agent_token" {
value = towerops_agent.office.token
sensitive = true
}
Integration
resource "towerops_integration" "pagerduty" {
provider = "pagerduty"
enabled = true
}
Maintenance Window
resource "towerops_maintenance_window" "network_upgrade" {
name = "Network Upgrade"
reason = "Upgrading core switches to new firmware"
starts_at = "2024-03-15T02:00:00Z"
ends_at = "2024-03-15T06:00:00Z"
}
Schema
Required
token(String, Sensitive) - The API token for authenticating with TowerOps.
Optional
api_url(String) - The base URL for the TowerOps API. Defaults tohttps://towerops.net.