Mikrotik provider for Terraform
Intro
This is a terraform provider for managing resources on your RouterOS device. To see what resources and data sources are supported, please see the documentation on the terraform registry.
Support
You can discuss any issues you have or feature requests in Discord.
Donations
If you get value out this project and want to show your support you can find me on patreon.
Building provider locally
Requirements:
To build the provider with make
:
$ make build
which creates a terraform-provider-mikrotik
binary in repository's root folder.
or build with go
compiler:
$ go build -o terraform-provider-mikrotik
To use locally built provider, Terraform should be aware of its binary.
It could be done with custom CLI config file:
# custom.tfrc
provider_installation {
dev_overrides {
"ddelnano/mikrotik" = "/path/to/clones/repository/terraform-provider-mikrotik"
}
direct {}
}
The dev_overrides section is available since Terraform 0.14
.
Finally, tell Terraform CLI to use custom confiuration by exporting environment variable:
$ export TF_CLI_CONFIG_FILE=path/to/custom.tfrc
NOTE: with dev_overrides
it is not possible to run terraform init
(see official docs) so you should immediately use terraform plan
and terraform apply
without initializing.
Contributing
Dependencies
- RouterOS. See which versions are supported by what is tested in CI
- Terraform 0.12+
For code generation of boilerplate code, see codegen Readme
Testing
The provider is tested with Terraform's acceptance testing framework. As long as you have a RouterOS device you should be able to run them. Please be aware it will create resources on your device! Code that is accepted by the project will not be destructive for anything existing on your router but be careful when changing test code!
In order to run the tests you will need to set the following environment variables:
export MIKROTIK_HOST=router-hostname:8728
export MIKROTIK_USER=username
# Please be aware this will put your password in your bash history and is not safe
export MIKROTIK_PASSWORD=password
After those environment variables are set you can run the tests with the following command:
make testacc
β οΈ For RouterOS versions
6.x
you have to set environment variableLEGACY_BGP_SUPPORT="true"
before running tests.
Testing without MikroTik hardware
If you do not have MikroTik hardware or virtual machine with pre-installed RouterOS, you still have a way to run tests locally.
To make this happen, install Docker on your developer machine, and run from the root of the repository:
$ make routeros
It will start RouterOS container locally and make its API server available at 127.0.0.1:8728
Just export connection settings
export MIKROTIK_HOST=127.0.0.1:8728
export MIKROTIK_USER=admin
export MIKROTIK_PASSWORD=""
and you are ready to run tests with
$ make test
You can use specific RouterOS version by passing ROUTEROS_VERSION
argument
$ make routeros ROUTEROS_VERSION="6.49beta54"
or even
$ make routeros ROUTEROS_VERSION=latest
To cleanup everything, just run:
$ make routeros-clean