Skip to content
This repository has been archived by the owner on Oct 13, 2021. It is now read-only.

crossplane-contrib/provider-terraform-vsphere

Repository files navigation

provider-terraform-vsphere

This project is deprecated. See https://github.com/crossplane-contrib/terrajet.

Overview

provider-terraform-vsphere is an experimental Crossplane infrastructure provider for the vSphere vCenter Server and ESXi APIs. Available resources and their fields can be found in the CRD Docs. Documentation for the original Terraform resources that were used to generate these CRDs, and descriptions for the attributes which compose them, can be found in the documentation for the Terraform vSphere provider. Source code for the Terraform provider can be found at https://github.com/hashicorp/terraform-provider-vsphere If you encounter an issue please reach out on slack.crossplane.io and create an issue in the crossplane-contrib/provider-terraform-vsphere repo.

  • Custom Resource Definitions (CRDs) that model vSphere the infrastructure and services, following the schema observed in the Terraform vSphere Provider.
  • Generated code enabling Go representations of the CRDs to be encoded and decoded to/from the native Terraform format zclconf/go-cty for serialization to the Terraform GRPC wire format
  • Generated code enabling Go representations of Resources to be compared, so that differences between the desired and observed state of a Resource can be detected.
  • Taken together, these capabilities enable the generic controller implemented in crossplane-contrib/terraform-runtime to fulfill the crossplane/crossplane-runtime ExternalClient interface.

This provider was generated by running https://github.com/crossplane-contrib/terraform-provider-gen pointed at the plugin binary built from https://github.com/hashicorp/terraform-provider-vsphere

The same provider binary used to build the provider must also be present at runtime. Point the runtime at the full path to the plugin on the local filesystem using the --pluginPath= cli flag. When using an official image the appropriate plugin binary will be bundled. For local development, the binary required by terraform-provider-gen.yaml can be downloaded using the command: go run github.com/crossplane-contrib/terraform-provider-dl --config=terraform-provider-gen.yaml --output=$DIRECTORY

Where $DIRECTORY is the directory you would like to use for the --pluginPath argument. Please use an empty directory because the plugin expects the directory to only contain the terraform plugin.

Demo

This is the demo we ran on the TBS livestream @ https://www.youtube.com/watch?v=nDZdQxjGAkw

./hack/integration-test/setup.sh
./demo.sh
kubectl apply -f examples/controller-config.yaml
kubectl apply -f examples/provider.yaml
kubectl apply -f hack/integration-test/provider
kubectl apply -f hack/integration-test/resources

Getting Started and Documentation

For getting started guides, installation, deployment, and administration, see our Documentation.

Contributing

provider-terraform-vsphere is a community driven project and we welcome contributions. See the Crossplane Contributing guidelines to get started.

Adding New Resource

Please see the documentation for crossplane-contrib/terraform-provider-gen for the latest documentation on using the code generation tools. This tool is still highly experimental so it is possible that new resources could uncover edge cases that require further development on the shared codegen tools.

Report a Bug

For filing bugs, suggesting improvements, or requesting new features, please open an issue.

Contact

Please use the following to reach members of the community:

Roadmap

provider-terraform-vsphere goals and milestones are currently tracked in the Crossplane repository. More information can be found in ROADMAP.md.

Governance and Owners

provider-aws is run according to the same Governance and Ownership structure as the core Crossplane project.

Code of Conduct

provider-aws adheres to the same Code of Conduct as the core Crossplane project.

Licensing

provider-terraform-vsphere is licensed under the Apache License, Version 2.0.

FOSSA Status