terraform-provider-towerops/docs/resources/device.md
Graham McIntire 12206c16fe
make snmp opt-in for terraform provider devices
change snmp_enabled default from true to false so devices like
resolver1 that only need ping/dns don't trigger unnecessary snmp
discovery. skip sending snmp_version/snmp_port to the api when
snmp_enabled is false.
2026-03-17 11:13:07 -05:00

117 lines
3.5 KiB
Markdown

---
page_title: "towerops_device Resource - TowerOps"
description: |-
Manages a TowerOps device.
---
# towerops_device (Resource)
Manages a TowerOps device. Devices represent network equipment that can be assigned to a site or directly to the organization.
## Example Usage
### Site-based Device with SNMP v2c
```terraform
resource "towerops_device" "router" {
site_id = towerops_site.example.id
name = "Core Router"
ip_address = "192.168.1.1"
monitoring_enabled = true
snmp_enabled = true
snmp_version = "2c"
snmp_port = 161
}
```
### Organization-level Device (Site-less)
Devices can be created without a site, assigned directly to the organization:
```terraform
resource "towerops_device" "cloud_router" {
name = "Cloud Router"
ip_address = "10.0.1.1"
# No site_id - device belongs directly to organization
}
```
### Device with SNMPv3
```terraform
resource "towerops_device" "secure_switch" {
name = "Secure Switch"
ip_address = "192.168.1.10"
snmp_version = "3"
# SNMPv3 security settings
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
}
```
### Ping/DNS-only Device (no SNMP)
```terraform
resource "towerops_device" "resolver" {
site_id = towerops_site.example.id
name = "resolver1"
ip_address = "204.110.191.240"
}
```
### Minimal Configuration
```terraform
resource "towerops_device" "switch" {
name = "Access Switch"
ip_address = "192.168.1.2"
}
```
## Schema
### Required
- `ip_address` (String) - The IP address of the device.
### Optional
- `site_id` (String) - The ID of the site this device belongs to. Optional if `organization_id` is provided. Changing this forces a new resource.
- `organization_id` (String) - The ID of the organization this device belongs to. Defaults to the authenticated organization if not provided. Changing this forces a new resource.
- `name` (String) - The name of the device. If not provided, will be auto-discovered from SNMP.
- `description` (String) - A description of the device.
- `monitoring_enabled` (Boolean) - Whether monitoring is enabled for this device. Default: `true`.
- `snmp_enabled` (Boolean) - Whether SNMP polling is enabled for this device. Default: `false`.
- `snmp_version` (String) - The SNMP version to use (`1`, `2c`, or `3`). Default: `"2c"`.
- `snmp_port` (Number) - The SNMP port to use. Default: `161`.
#### SNMPv3 Fields (only used when `snmp_version = "3"`)
- `snmpv3_security_level` (String) - SNMPv3 security level. Must be one of:
- `noAuthNoPriv` - No authentication or privacy
- `authNoPriv` - Authentication without privacy
- `authPriv` - Authentication with privacy
- `snmpv3_username` (String) - SNMPv3 username.
- `snmpv3_auth_protocol` (String) - SNMPv3 authentication protocol. Must be one of: `MD5`, `SHA`, `SHA-224`, `SHA-256`, `SHA-384`, `SHA-512`.
- `snmpv3_auth_password` (String, Sensitive) - SNMPv3 authentication password.
- `snmpv3_priv_protocol` (String) - SNMPv3 privacy protocol. Must be one of: `DES`, `AES`, `AES-192`, `AES-256`.
- `snmpv3_priv_password` (String, Sensitive) - SNMPv3 privacy password.
### Read-Only
- `id` (String) - The unique identifier of the device.
- `inserted_at` (String) - The timestamp when the device was created.
## Import
Devices can be imported using their UUID:
```shell
terraform import towerops_device.router 7c9e6679-7425-40de-944b-e07fc1f90ae7
```