Skip to content

canonical/terraform-provider-maas

Repository files navigation

Terraform Provider for MAAS

This repository contains the source code for the Terraform MAAS provider.

⚠️ Repository ownership and provider name change

The Terraform Provider for MAAS repository now lives under the Canonical GitHub organisation with a new name github.com/canonical/terraform-provider-maas.

Ensure you are pointing at the new provider name inside your Terraform module(s), which is canonical/maas:

  1. Manually update the list of required providers in your Terraform module(s):

    terraform {
      required_providers {
        maas = {
    -     source  = "maas/maas"
    +     source  = "canonical/maas"
          version = "~>2.0"
        }
      }
    }
  2. Upgrade your provider dependencies to add the canonical/maas provider info:

    terraform init -upgrade
  3. Replace the provider reference in your state:

    terraform state replace-provider maas/maas canonical/maas
  4. Upgrade your provider dependencies to remove the maas/maas provider info:

    terraform init -upgrade

References:


Requirements

Build The Provider

  1. Clone the repository

  2. Enter the repository directory

  3. Build the provider with:

    make build
  4. (Optional): Install the freshly built provider with:

    make install

Usage

Provider Configuration

The provider accepts the following config options:

maas

provider "maas" {
  api_version = "2.0"
  api_key = "YOUR MAAS API KEY"
  api_url = "http://<MAAS_SERVER>[:MAAS_PORT]/MAAS"
}

Resources and Data Sources Configuration

The docs section contains details about each supported Terraform resource and data source.

Release process

  1. Create a new branch from master as release-vX.X.X

    git branch release-vX.X.X master
    git push -u origin release-vX.X.X
  2. Update the CHANGELOG.md with your release version, date and change details and push the changes to the new branch. New changes between previous release vY.Y.Y and current one vX.X.X can be found with the following command:

    git log --oneline vY.Y.Y..vX.X.X
  3. Raise a PR on Github, title of the PR should be in the following format Release vX.X.X

  4. Merge the PR into master, taking a note of the merge commit which is created

  5. Go to Releases on Github

  6. Click Draft a new release

  7. On Target choose the latest merge commit you want to release for

  8. Set the tag to create a new tag for the version in the format "vX.X.X"

  9. Set the release title to the release version, for example v1.0.1

  10. Copy and paste the relevant CHANGELOG.md entries to the release description

  11. Click Publish release

  12. The new version should be available on the Releases page

Additional Info

Testing

Unit tests run with every pull request and merge to master. The end to end tests run on a nightly basis against a hosted MAAS deployment, results can be found here and are checked on each PR, with a warning if failed.