https://github.com/netascode/terraform-nso-nac-nso
Terraform Cisco NSO Network-as-Code Module
https://github.com/netascode/terraform-nso-nac-nso
cisco iac nac netascode network-as-code nso terraform terraform-module
Last synced: 4 months ago
JSON representation
Terraform Cisco NSO Network-as-Code Module
- Host: GitHub
- URL: https://github.com/netascode/terraform-nso-nac-nso
- Owner: netascode
- License: apache-2.0
- Created: 2025-07-24T15:08:22.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2026-02-24T12:45:53.000Z (5 months ago)
- Last Synced: 2026-03-10T17:54:04.417Z (5 months ago)
- Topics: cisco, iac, nac, netascode, network-as-code, nso, terraform, terraform-module
- Language: HCL
- Homepage: https://registry.terraform.io/modules/netascode/nac-nso/nsoiosxr
- Size: 19.5 KB
- Stars: 0
- Watchers: 0
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Terraform Network-as-Code Cisco NSO Module
A Terraform module to configure Cisco NSO devices.
## Usage
This module supports an inventory driven approach, where a complete NSO configuration or parts of it are either modeled in one or more YAML files or natively using Terraform variables.
## Examples
Configuring an NSO device-group configuration using YAML:
#### `system.nac.yaml`
```yaml
nso:
url: http://1.2.3.4:8080
configuration:
device_groups:
- name: group1
device_name:
- xrv9k-01
ned_id: "cisco-iosxr-cli-7.6.6:cisco-iosxr-cli-7.6.6"
```
#### `main.tf`
```hcl
module "nso" {
source = "netascode/nac-nso/nso"
version = ">= 0.2.1"
yaml_files = ["system.nac.yaml"]
}
```
## Requirements
| Name | Version |
|------|---------|
| [terraform](#requirement\_terraform) | >= 1.8.0 |
| [nso](#requirement\_nso) | >= 0.2.1 |
| [utils](#requirement\_utils) | 1.1.0-beta3 |
## Inputs
| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| [managed\_device\_groups](#input\_managed\_device\_groups) | List of device group names to be managed. By default all device groups will be managed. | `list(string)` | `[]` | no |
| [managed\_devices](#input\_managed\_devices) | List of device names to be managed. By default all devices will be managed. | `list(string)` | `[]` | no |
| [model](#input\_model) | As an alternative to YAML files, a native Terraform data structure can be provided as well. | `map(any)` | `{}` | no |
| [write\_default\_values\_file](#input\_write\_default\_values\_file) | Write all default values to a YAML file. Value is a path pointing to the file to be created. | `string` | `""` | no |
| [write\_model\_file](#input\_write\_model\_file) | Write the full model including all resolved templates to a single YAML file. Value is a path pointing to the file to be created. | `string` | `""` | no |
| [yaml\_directories](#input\_yaml\_directories) | List of paths to YAML directories. | `list(string)` | `[]` | no |
| [yaml\_files](#input\_yaml\_files) | List of paths to YAML files. | `list(string)` | `[]` | no |
## Outputs
| Name | Description |
|------|-------------|
| [default\_values](#output\_default\_values) | All default values. |
| [model](#output\_model) | Full model. |
## Resources
| Name | Type |
|------|------|
| [nso_device.device](https://registry.terraform.io/providers/CiscoDevNet/nso/latest/docs/resources/device) | resource |
| [nso_device_group.device_group](https://registry.terraform.io/providers/CiscoDevNet/nso/latest/docs/resources/device_group) | resource |
| [nso_global_settings.global_settings](https://registry.terraform.io/providers/CiscoDevNet/nso/latest/docs/resources/global_settings) | resource |
## Modules
| Name | Source | Version |
|------|--------|---------|
| [model](#module\_model) | ./modules/model | n/a |