An open API service indexing awesome lists of open source software.

https://github.com/mirantis/terraform-provider-mke


https://github.com/mirantis/terraform-provider-mke

Last synced: 2 months ago
JSON representation

Awesome Lists containing this project

README

        

# Mirantis MKE provider

Mirantis MKE provider for managing resources in a running MKE stack.

This provider does not currently install MKE. The goal of the provider
is to interact with an existing installation.

This provider is developed internally, and comes with no warranty. Use it
at your own risk.

## Requirements

- [Terraform](https://www.terraform.io/downloads.html) >= 1.4
- [Go](https://golang.org/doc/install) >= 1.20
- [GoReleaser](https://goreleaser.com/) : If you want to use it locally

## Building The Provider

1. Clone the repository
2. Enter the repository directory
3. Build the provider using the `make local` command (uses goreleaser)

```shell
$/> make local
```

## Adding Dependencies

This provider uses [Go modules](https://github.com/golang/go/wiki/Modules).
Please see the Go documentation for the most up to date information about using
Go modules.

To add a new dependency `github.com/author/dependency` to your Terraform provider:

```shell
go get github.com/author/dependency
go mod tidy
```

Then commit the changes to `go.mod` and `go.sum`.

## Using the provider

The provider, once installed properly can be used in any terraform root/chart.

### Using the released provider

Go to the terraform registry page and follow the instructions for declaring
the provider version in your chart/module

@see https://registry.terraform.io/providers/Mirantis/mke/latest

### Using the local source code provider

The `make local` target will use goreleaser to build the provider, and
then provide instructions on how to configure `terraform` to use the
provider locally,

@see https://developer.hashicorp.com/terraform/cli/config/config-file#development-overrides-for-provider-developers

## Developing the Provider

### Using the local provider

You can develop the provider locally, and test the development version by building
the plugin locally, and then configuring terraform to use the local version as a
`dev_override` for the production version.

To build the local plugin:
```
make local
```

It is recommended that you use the `dev_override` by using a special TF config file
and running terraform with an environment variable telling it to use the special file.
This avoids using the development version globally, preventing simple mistakes.

First create a file like my_tf_config_file:

```
provider_installation {
# This disables the version and checksum verifications for this provider
# and forces Terraform to look for the mke provider plugin in the
# given directory.
dev_overrides {
"mirantis/mke" = "path/to/this/repo/dist/terraform-provider-mke_linux_amd64_v1"
}
# For all other providers, install them directly from their origin provider
# registries as normal. If you omit this, Terraform will _only_ use
# the dev_overrides block, and so no other providers will be available.
direct {}
}
```

@NOTE that you mus replace `linux` and `amd64` if you are on a Mac/Windows machine
or not on a 64bit intel/amd processor. See `go env GOOS` and `go env GOARCH` for
the correct values.

then run terraform with a config file override pointing to the new file:
```
$/> TF_CLI_CONFIG_FILE=my_tf_config_file terraform plan
```
(or use an environment variable export)

@see: https://developer.hashicorp.com/terraform/cli/config/config-file#development-overrides-for-provider-developers"

### Contributing

To generate or update documentation, run `go generate`.

In order to run the testing mode unit test suite:

```
make test
```

In order to run the full suite of Acceptance tests, run `make testacc`.

*Note:* Acceptance tests require that you have an environment set up for
testing that mke can use.

```shell
make testacc
```

## Requirements

No requirements.

## Providers

No providers.

## Modules

No modules.

## Resources

No resources.

## Inputs

No inputs.

## Outputs

No outputs.