Skip to main content

Official Python SDK for HashiCorp Terraform Cloud / Terraform Enterprise (TFE) API v2

Project description

HCP Terraform and Terraform Enterprise Python Client (pyTFE)

PyPI Python Versions Test License Issues

The official Python API client for HCP Terraform and Terraform Enterprise.

This client targets the HCP Terraform V2 API. As Terraform Enterprise is the self-hosted distribution of HCP Terraform, this client supports both HCP Terraform and Terraform Enterprise use cases. In this repository and API, we refer to the platform generically as Terraform Enterprise unless a feature is explicitly called out as only supported in one or the other (rare).

Version Information

We follow Semantic Versioning. During the initial alpha period we use 0.y.z:

  • Minor (0.y.z → 0.(y+1).z): new, backwards-compatible features and enhancements.
  • Patch (0.y.z → 0.y.(z+1)): bug fixes and performance improvements.
  • Occasionally, a function signature change that fixes incorrect behavior may appear in a minor version.

Example Usage

Construct a new pyTFE client, then use the resource services on the client to access different parts of the Terraform Enterprise API. The following example lists all organizations.

(Recommended) Using explicit config

from pytfe import TFEClient, TFEConfig

config = TFEConfig(
    address="https://tfe.local",
    token="insert-your-token-here",
    timeout=30.0,
    user_agent_suffix="example-app/0.1 pytfe/0.1",
)

client = TFEClient(config)

orgs = client.organizations.list()
for org in orgs.items:
    print(org.name)

Using the default config with environment variables

The default configuration reads the TFE_ADDRESS and TFE_TOKEN environment variables.

  1. TFE_ADDRESS — URL of an HCP Terraform or Terraform Enterprise instance. Example: https://tfe.local
  2. TFE_TOKEN — An API token for the HCP Terraform or Terraform Enterprise instance.

Environment variables are used as a fallback when address or token are not provided explicitly:

Using the default configuration

from pytfe import TFEClient, TFEConfig

# Equivalent to providing no values; falls back to env vars if set.
client = TFEClient(TFEConfig())
orgs = client.organizations.list()
for org in orgs.items:
    print(org.name)

When host or token is empty

from pytfe import TFEClient, TFEConfig

config = TFEConfig(address="", token="")
client = TFEClient(config)

orgs = client.organizations.list()
for org in orgs.items:
    print(org.name)

Documentation

Examples

See the examples/ directory for runnable snippets covering common workflows (workspaces, variables, configuration versions, runs/plans/applies, state, agents).

Running tests

See TESTS.md. Typical flow:

pip install -e .[dev]
make test

Issues and Contributing

See CONTRIBUTING.md. We welcome issues and pull requests.

Releases

See RELEASES.md.

License

This project is licensed under the MPL-2.0. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytfe-0.1.1.tar.gz (96.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pytfe-0.1.1-py3-none-any.whl (130.3 kB view details)

Uploaded Python 3

File details

Details for the file pytfe-0.1.1.tar.gz.

File metadata

  • Download URL: pytfe-0.1.1.tar.gz
  • Upload date:
  • Size: 96.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for pytfe-0.1.1.tar.gz
Algorithm Hash digest
SHA256 9b0d9e56f5f2d4a38ac48a5112a7ae55052e3ba67a7e2cb56a7ce105e9a7387a
MD5 beb0d559c05dabdf16357844389d485b
BLAKE2b-256 a4ca6a8bff35585e97dec2a79170e9812d09931ba8849d4e6e9f5fd5b98eaa65

See more details on using hashes here.

File details

Details for the file pytfe-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: pytfe-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 130.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for pytfe-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a8c154b7be10b022a143903221e9f350b0de56f7ee42eadb1383b026489bf76e
MD5 f9bb7a5e336a14ef4cbe6ffb9e97b5e8
BLAKE2b-256 42c8f0b5f859afa79c44f6be11dd78e1df30492351afe99f0f918f7c08dc258b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page