Metadata-Version: 2.1
Name: tfrunner
Version: 0.4.0
Summary: 
Author: Gilberto Cunha
Author-email: grncunha13@gmail.com
Requires-Python: >=3.12,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: pydantic (>=2.10.3,<3.0.0)
Requires-Dist: pyyaml (>=6.0.2,<7.0.0)
Requires-Dist: requests (>=2.32.3,<3.0.0)
Requires-Dist: typer (>=0.15.0,<0.16.0)
Description-Content-Type: text/markdown

# Tfrunner

Welcome to `tfrunner`, a `cli` tool to run terraform commands with the following facilities:
- Multi-project support
- Automation support
- Remote backend
- GitLab secrets pulling


## Installation

Since `tfrunner` is a `cli` tool, the recommended installation is using `pipx`.

Please ensure you have a compatible `python >= 3.12` version.

Install with: `pipx install tfrunner`


## Usage

To use it to manage multiple projects, create a `yaml` file configuring each.

Here is an example file, let's name it `tfrunner.yaml`:
```yaml
state_backend:
  kind: gitlab
  spec:
    url: https://gitlab.com
    project_id: 123456
    token_var: KUBORG_TOKEN

secrets_backend:
  kind: gitlab
  spec:
    url: https://gitlab.com
    project_id: 123456
    token_var: KUBORG_TOKEN

projects:
  great-project:
    path: ./infra/great-project/terraform
    state_name: great-state

  awesome-project:
    path: ./infra/awesome-project/terraform
    state_name: awesome-state
```

Now you can run `tfrunner` as you would run any regular `terraform` command (options are also included). You need only to be wary of two additional arguments that are needed:
- `--project`: name of your project, as specified in your config file.
- `--config_path`: path to your configuration file. By default it will look for a `tfrunner.yaml` file in the current folder

As examples, for the `great-project` in our example `tfrunner.yaml` file, you could run:
```bash
tfrunner init --project great-project
tfrunner fmt --project great-project
tfrunner validate --project great-project
tfrunner plan --project great-project
tfrunner apply --project great-project
tfrunner destroy --config_path tfrunner.yaml --project great-project
```

The `--config_path` is optional in the `tfrunner destroy` command, as `tfrunner` will by default assume its path to be `tfrunner.yaml`.

