This repository implements a Terraform provider for Cisco Modeling Labs version 2.4 and later. It's current state is "beta". Changes can be expected, for example:
Note: The provider needs CML 2.4 or newer. This is due to some additional API capabilities which were introduced with 2.4.0. Older versions are blocked within by the
gocmlclient
.
The current implementation provides:
internal/provider/
),
cml2_lab
to create, update and destroy labscml2_node
to create, update and destroy nodes in a labcml2_link
to create, update and destroy links between nodes in a labcml2_lifecycle
to control the state of a lab (like STARTED
, STOPPED
), including staged starting and configuration injectioncml2_group
to create, update and destroy groupscml2_user
to create, update and destroy userscml2_lab
to retrieve state of an existing labcml2_node
to retrieve state of an existing node in a labcml2_images
to retrieve the available node images from the controllercml2_groups
to retrieve user groups from the controllercml2_extconn
to retrieve external connector information from the controllercml2_system
to retrieve system state (ready state, version, ...) from the controllercml2_users
to retrieve users from the controllerexamples/
) and generated documentation (docs/
),install
command:go install
Please refer to the examples
directory and look at the built-in documentation
provided via the registry.
For some basic examples look in the examples
directory
If you wish to work on the provider, you'll first need Go installed on your machine (see Requirements above).
To compile the provider, run go install
. This will build the provider and put
the provider binary in the $GOPATH/bin
directory.
To generate or update documentation, run go generate
.
In order to run the full suite of Acceptance tests, run make testacc
. For this
to work, the provider needs to be configured via environment variables. Here's
an example:
# for testing purposes, suggest to use direnv
TF_VAR_username="admin"
TF_VAR_password="secret"
TF_VAR_address="https://cml-controller.cml.lab"
export TF_VAR_username TF_VAR_password TF_VAR_address
Those variables are referenced for acceptance testing in internal/provider/testing
.
make testacc
Acceptance testing with Github actions can be achieved using the provided
tunnel.sh
script which uses tools like gh
CLI and ngrok
to forward the API
calls to a locally installed CML instance. See tunnel.sh
and the ghsecret
CLI tool for additional details.