# README
3DS OUTSCALE Terraform Provider
- Website: https://www.terraform.io
- Mailing list: Google Groups
Requirements
Migration to v1
[!WARNING]
Before you begin using the
v1
binary on your Terraform code, make sure to back up your state file!If you are using a local state file, make copy of your terraform.tfstate file in your project directory.
If you are using a remote backend such as an S3 bucket, make sure that you follow the backup procedures and that you exercise the restore procedure at least once.
Additionally, make sure you backup or version your code as migration will require some code changes (on Flexible_gpu resource).
Step 1: Upgrade provider version
terraform {
required_providers {
outscale = {
source = "outscale/outscale"
version = "1.0.0-rc.2"
}
}
}
provider "outscale" {
# Configuration options
}
terraform init -upgrade
Step 2: Edit terraform state and configuration files
Some block types changed in terraform state, the following script will delete those blocks.
Then terraform refresh
or terraform apply
will set the right block type.
On Linux
terraform fmt
sed -i '/"block_device_mappings_created": \[/, /\],/d' terraform.tfstate
sed -i 's/outscale_volumes_link/outscale_volume_link/g' terraform.tfstate
sed -i '/"link_public_ip": {/, /},/d' terraform.tfstate
sed -i '/"link_nic": {/, /},/d' terraform.tfstate
sed -i '/"flexible_gpu_id": "/, /",/d' terraform.tfstate
sed -i '/"accepter_net": {/, /},/d' terraform.tfstate
sed -i '/"source_net": {/, /},/d' terraform.tfstate
sed -i '/"state": {/, /},/d' terraform.tfstate
sed -i 's/outscale_volumes_link/outscale_volume_link/g' *.tf
sed -i 's/flexible_gpu_id /flexible_gpu_ids /g' *.tf
sed -i '/flexible_gpu_ids /s/= /= \[/' *.tf
sed -i '/outscale_flexible_gpu\./s/$/ \]/' *.tf
terraform fmt
On MacOS
terraform fmt
sed -i='' '/"block_device_mappings_created": \[/, /\],/d' terraform.tfstate
sed -i='' 's/outscale_volumes_link/outscale_volume_link/g' terraform.tfstate
sed -i='' '/"link_public_ip": {/, /},/d' terraform.tfstate
sed -i='' '/"link_nic": {/, /},/d' terraform.tfstate
sed -i='' '/"flexible_gpu_id": "/, /",/d' terraform.tfstate
sed -i='' '/"accepter_net": {/, /},/d' terraform.tfstate
sed -i='' '/"source_net": {/, /},/d' terraform.tfstate
sed -i='' '/"state": {/, /},/d' terraform.tfstate
sed -i='' 's/outscale_volumes_link/outscale_volume_link/g' *.tf
sed -i='' 's/flexible_gpu_id /flexible_gpu_ids /g' *.tf
sed -i='' '/flexible_gpu_ids /s/= /= \[/' *.tf
sed -i='' '/outscale_flexible_gpu\./s/$/\]/' *.tf
terraform fmt
Step 3: Refresh configuration to update terraform state
terraform refresh
Breaking change
Warning
We have a broken change on our api when creating access_key without expiration date for all version less then v0.9.0. (GH-issues)
We recommend to upgrade on the latest (v1.0.0-rc.2)
Using the Provider with Terraform
Warning
Our provider terraform has been moved from outscale-dev to outscale organisation on terraform registry
The next releases will be only publish under outscale organization on terraform registry
Add the following lines in the Terraform configuration to permit to get the provider from the Terrafom registry:
terraform {
required_providers {
outscale = {
source = "outscale/outscale"
version = "1.0.0-rc.2"
}
}
}
provider "outscale" {
# Configuration options
}
-
Execute
terraform init
-
Execute
terraform plan
Using the Provider with OpenTofu
terraform {
required_providers {
outscale = {
source = "outscale/outscale"
version = "1.0.0-rc.2"
}
}
}
provider "outscale" {
# Configuration options
}
-
Execute
tofu init
-
Execute
tofu plan
Migrating to OpenTofu from Terraform
Follow migration link
Configuring the proxy, if any
on Linux/macOS
export HTTPS_PROXY=http://192.168.1.24:3128
on Windows
set HTTPS_PROXY=http://192.168.1.24:3128
x509 client authentication, if any
Add the following lines in the Terraform configuration to define certificate location:
terraform {
required_providers {
outscale = {
source = "outscale/outscale"
version = "1.0.0-rc.2"
}
}
}
provider "outscale" {
access_key_id = var.access_key_id
secret_key_id = var.secret_key_id
region = var.region
x509_cert_path = "/myrepository/certificate/client_ca.crt"
x509_key_path = "/myrepository/certificate/client_ca.key"
}
or set the following environment variables:
export OUTSCALE_X509CERT=/myrepository/certificate/client_ca.crt
export OUTSCALE_X509KEY=/myrepository/certificate/client_ca.key
Building The Provider
Clone repository to: $GOPATH/src/github.com/outscale/terraform-provider-outscale
mkdir -p $GOPATH/src/github.com/terraform-providers
cd $GOPATH/src/github.com/terraform-providers
git clone --branch v1.0.0-rc.2 https://github.com/outscale/terraform-provider-outscale
Enter the provider directory and build the provider
cd $GOPATH/src/github.com/terraform-providers/terraform-provider-outscale
go build -o terraform-provider-outscale_v1.0.0-rc.2
Using the provider built
For Terraform
On Linux
-
Download and install Terraform
-
Move the plugin to the repository ~/.terraform.d/plugins/registry.terraform.io/outscale/outscale/1.0.0-rc.2/linux_amd64/.
mkdir -p ~/.terraform.d/plugins/registry.terraform.io/outscale/outscale/1.0.0-rc.2/linux_amd64
mv terraform-provider-outscale_v1.0.0-rc.2 ~/.terraform.d/plugins/registry.terraform.io/outscale/outscale/1.0.0-rc.2/linux_amd64
-
Execute
terraform init
-
Execute
terraform plan
On macOS
-
Download and install Terraform
-
Move the plugin to the repository ~/.terraform.d/plugins/registry.terraform.io/outscale/outscale/1.0.0-rc.2/darwin_arm64
mkdir -p ~/.terraform.d/plugins/registry.terraform.io/outscale/outscale/1.0.0-rc.2/darwin_arm64
mv terraform-provider-outscale_v1.0.0-rc.2 ~/.terraform.d/plugins/registry.terraform.io/outscale/outscale/1.0.0-rc.2/darwin_arm64
-
Execute
terraform init
-
Execute
terraform plan
For OpenTofu
On Linux
-
Download and install OpenTofu
-
Move the plugin to the repository ~/.terraform.d/plugins/registry.opentofu.org/outscale/outscale/1.0.0-rc.2/linux_amd64/.
mkdir -p ~/.terraform.d/plugins/registry.opentofu.org/outscale/outscale/1.0.0-rc.2/linux_amd64
mv terraform-provider-outscale_v1.0.0-rc.2 ~/.terraform.d/plugins/registry.opentofu.org/outscale/outscale/1.0.0-rc.2/linux_amd64
-
Execute
tofu init
-
Execute
tofu plan
On macOS
-
Download and install OpenTofu
-
Move the plugin to the repository ~/.terraform.d/plugins/registry.opentofu.org/outscale/outscale/1.0.0-rc.2/darwin_arm64
mkdir -p ~/.terraform.d/plugins/registry.opentofu.org/outscale/outscale/1.0.0-rc.2/darwin_arm64
mv terraform-provider-outscale_v1.0.0-rc.2 ~/.terraform.d/plugins/registry.opentofu.org/outscale/outscale/1.0.0-rc.2/darwin_arm64
-
Execute
tofu init
-
Execute
tofu plan
Issues and contributions
Check CONTRIBUTING.md for more details.
Building the documentation
Requirements:
- make
- python3
- python-venv
make doc