Terraform provider for Netbox.
- A libc library like libc6-compat or libc-utils
- General developer tools like make, bash, ... (to build the provider)
- Go 1.21 minimum (to build the provider)
- Terraform (to use the provider)
| Netbox version | Provider version |
|---|---|
| 2.8 | 0.x.y |
| 2.9 | 1.x.y |
| 2.11 | 2.x.y |
| 3.0 | 3.x.y |
| 3.1 | 4.x.y |
| 3.2 | 5.x.y |
| 3.3 | 6.x.y |
| 3.4 | 7.x.y |
| 4.0 | 8.x.y |
This project does not use netbox-community/go-netbox but the same library generated by myself located here smutel/go-netbox. By the past this project was not maintained anymore so I decided to create my own project.
Clone repository to: $GOPATH/src/github.com/smutel/terraform-provider-netbox
mkdir -p $GOPATH/src/github.com/smutel
cd $GOPATH/src/github.com/smutel
git clone [email protected]:smutel/terraform-provider-netbox.gitEnter the provider directory and build the provider
cd $GOPATH/src/github.com/smutel/terraform-provider-netbox
make buildTo run the tests you need to have a running netbox installation. For example netbox-docker.
To run the tests execute:
source utils/netbox_docker_variables.sh
TF_ACC=1 go test -v ./...Scheme and URL are not needed it the default is used (https and localhost:8000)
To run only some tests execute the following:
source utils/netbox_docker_variables.sh
TF_ACC=1 go test -v ./... -run TestAccNetboxVirtualizationVMTo run this provider in delve run:
dlv exec --accept-multiclient --continue --headless ./terraform-provider-netbox -- -debugFor Visual Studio Code a config is provided in this repo. Pressing should run the provider in debug mode.
This will output a value for TF_REATTACH_PROVIDER:
Starting: /home/andy/go/bin/dlv dap --check-go-version=false --listen=127.0.0.1:43501 --log-dest=3 from /home/andy/terraform/terraform-provider-netbox
DAP server listening at: 127.0.0.1:43501
Type 'dlv help' for list of commands.
{"@level":"debug","@message":"plugin address","@timestamp":"2022-09-04T19:19:00.482554+02:00","address":"/tmp/plugin2734508527","network":"unix"}
Provider started. To attach Terraform CLI, set the TF_REATTACH_PROVIDERS environment variable with the following:
TF_REATTACH_PROVIDERS='{"registry.terraform.io/smutel/netbox":{"Protocol":"grpc","ProtocolVersion":5,"Pid":2519102,"Test":true,"Addr":{"Network":"unix","String":"/tmp/plugin2734508527"}}}'In your terrafom directory run the following:
export TF_REATTACH_PROVIDER=(Value from above)
terraform planMore information about debugging a terraform provider can be found in the terraform documentation
NOTE
Before changing the version of the provider, please remove the temporary folder .terraform and ~/.terraform.d.
terraform {
required_providers {
netbox = {
source = "smutel/netbox"
version = "~> 8.0.0"
}
}
}You can install the provider manually in your global terraform provider folder.
export NETBOX_PROVIDER_VERSION=8.0.0
mkdir -p ~/.terraform.d/plugins/registry.terraform.io/smutel/netbox/${NETBOX_PROVIDER_VERSION}/linux_amd64
cp terraform-provider-netbox_v${NETBOX_PROVIDER_VERSION} ~/.terraform.d/plugins/registry.terraform.io/smutel/netbox/${NETBOX_PROVIDER_VERSION}/linux_amd64/terraform-provider-netbox_v${NETBOX_PROVIDER_VERSION}make localinstall
==> Creating folder ~/.terraform.d/plugins/registry.terraform.io/smutel/netbox/0.0.1/linux_amd64
==> Installing provider in this folderThe definition of the provider is optional. All the parameters could be setup by environment variables.
provider netbox {
# Environment variable NETBOX_URL
url = "127.0.0.1:8000"
# Environment variable NETBOX_TOKEN
token = "0123456789abcdef0123456789abcdef01234567"
# Environment variable NETBOX_SCHEME
scheme = "http"
# Environment variable NETBOX_INSECURE
insecure = "true"
}For further information, check this documentation
To contribute to this project, please follow the conventional commits rules.