Skip to content

Terraform is an awesome tool to implement Infrastructure as Code and GitOps

License

Notifications You must be signed in to change notification settings

ucloud/terraform-provider-ucloud

Repository files navigation

Terraform Provider

Requirements

  • Terraform 0.13.x
  • Go 1.18+ (to build the provider plugin)

Building The Provider

Clone repository to: /path/to/terraform-provider-ucloud

git clone git@github.com:ucloud/terraform-provider-ucloud /path/to/terraform-provider-ucloud

Enter the provider directory and build the provider

cd /path/to/terraform-provider-ucloud
make build

Using the provider

If you're building the provider, follow the instructions to install it as a plugin. After placing it into your plugins directory, run terraform init to initialize it.

Developing the Provider

If you wish to work on the provider, you'll first need Go installed on your machine (version 1.18+ is required).

To compile the provider, run make build. This will build the provider and put the provider binary in the bin directory.

make build
./bin/terraform-provider-ucloud

In order to test the provider, you can simply run make test.

make test

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

Note: Acceptance tests create real resources, and often cost money to run.

make testacc

Replace the default binary

You can replace the default provider with the compiled dev binary, first run make dev:

make dev

Then, create a terraform config file in ~/.terraformrc, add the following content:

provider_installation {

  dev_overrides {
    "ucloud/ucloud" = "{your-home}/.terraform.d/plugins"
  }

  direct {}
}

Now, the ucloud provider will be replaced to your compiled binary, when you executing terraform command, you will see the following message:

| Warning: Provider development overrides are in effect
│
│ The following provider development overrides are set in the CLI configuration:
│  - ucloud/ucloud in {your-home}/.terraform.d/plugins
│
│ The behavior may therefore not match any released version of the provider and applying changes may cause the state to become
│ incompatible with published releases.

After development done, you should clean the ~/.terraformrc file.

Acceptance Testing

Before making a release, the resources and data sources are tested automatically with acceptance tests (the tests are located in the ucloud/*_test.go files).

You can run them by entering the following instructions in a terminal:

cd /path/to/terraform-provider-ucloud
export UCLOUD_PUBLIC_KEY=xxx
export UCLOUD_PRIVATE_KEY=xxx
export UCLOUD_REGION=xxx
export UCLOUD_PROJECT_ID=xxx
TF_ACC=1 TF_LOG=INFO go test ./ucloud -v -run="^TestAccUCloud" -timeout=1440m

Reference

UCloud Provider Official Docs