cloudposse / cloudposse/atmos

Implement `pipeform` for Terraform Operations

Open
#926 31 comments 1 reaction 1 assignee Claimed by @suzuki-shunsuke View on GitHub
Dominant language
Go
Stars
1.4k
Forks
175
Avg merge
2d 3h
Merged PRs (30d)
134

Description

### Describe the Feature

Improve the console DX of terraform operations by presenting the user with a friendly UI to show terrafom progress.

https://github.com/magodo/pipeform

### Expected Behavior

Running `atmos terraform plan` and `atmos terraform apply` will launch the pipeform UI. Note, this does not require `pipeform` to be installed, as it will be used as a native Go module.

### Use Case

On the command line, the output from terraform is overwhelming and doesn't convey the overall progress of the operation. Terraform will feel much friendlier if we present the user with a progress indicator.

### Describe Ideal Solution

The UI would be enabled by default, but can be disabled via the `atmos.yaml` configuration.

```yaml
# atmos.yaml
terraform:
ui:
enable: [plan, apply]
```

https://github.com/user-attachments/assets/701671cd-f361-4c4e-83a7-98687d331c28

Requirements:

- [ ] If no TTY is attached, the UI should be automatically disabled
- [ ] If the `CI=true` environment variable is set, then UI should be automatically disabled
- [ ] If the `--no-ui` flag is explicitly passed, then the UI should be disabled.

### Alternatives Considered

_No response_

### Additional Context

The pipeform library is licensed MPL2 and is not currently implemented as a Go module. We've contacted the @magodo (author) and he said he would accept a PR converting it to a library. As part of this implementation, we will need to first open a PR for that work.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.