PHPackages                             mammatus/terraform - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. mammatus/terraform

ActiveLibrary

mammatus/terraform
==================

🏗️ Tooling to pass data from Mammatus based apps to Terraform

00MakefileCI passing

Since Jul 28Pushed todayCompare

[ Source](https://github.com/MammatusPHP/terraform)[ Packagist](https://packagist.org/packages/mammatus/terraform)[ RSS](/packages/mammatus-terraform/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Terraform
=========

[](#terraform)

[![Continuous Integration](https://github.com/MammatusPHP/terraform/workflows/Continuous%20Integration/badge.svg)](https://github.com/MammatusPHP/terraform/workflows/Continuous%20Integration/badge.svg)[![Latest Stable Version](https://camo.githubusercontent.com/9c2667077997ab757cd18d8a6075b0661d6d292992ce345d655b2dc1a137997e/68747470733a2f2f706f7365722e707567782e6f72672f6d616d6d617475732f7465727261666f726d2f762f737461626c652e706e67)](https://packagist.org/packages/mammatus/terraform)[![Total Downloads](https://camo.githubusercontent.com/e0520fe818909fd9b1c95310fdcb7b378481310517839018ad89f9d558400b2d/68747470733a2f2f706f7365722e707567782e6f72672f6d616d6d617475732f7465727261666f726d2f646f776e6c6f6164732e706e67)](https://packagist.org/packages/mammatus/terraform/stats)[![License](https://camo.githubusercontent.com/6e56af04ea65d8a1c36a40d93485536a4c65642cf853f49f7bc2fb858791cefc/68747470733a2f2f706f7365722e707567782e6f72672f6d616d6d617475732f7465727261666f726d2f6c6963656e73652e706e67)](https://packagist.org/packages/mammatus/terraform)

Tooling to pass data from Mammatus based apps to Terraform.

Install
=======

[](#install)

To install via [Composer](http://getcomposer.org/), use the command below, it will automatically detect the latest version and bind it with `^`.

```
composer require mammatus/terraform

```

Usage
=====

[](#usage)

Collect data from your Mammatus application and export it as **HCL tfvars lines** for GitHub Actions workflows or `terraform.tfvars` files.

Register variables through a `Variables` event listener in your Mammatus app:

```
use Mammatus\Terraform\Events\Variables;
use Mammatus\Terraform\Events\Variables\Registry\Entry;

Variables::class => [
    static function (Variables $variables): void {
        $variables->add(new Entry('app_name', 'mammatus-demo'));
        $variables->add(new Entry('replicas', 3));
    },
],
```

Export tfvars from the CLI:

```
vendor/bin/mammatus-terraform-tfvars
```

Or from PHP:

```
use Mammatus\Container\Factory;
use Mammatus\Terraform\Tfvars;

Factory::create()->get(Tfvars::class)->export();
```

HCL tfvars export
-----------------

[](#hcl-tfvars-export)

The tfvars export produces assignment lines that can be pasted directly into a `terraform.tfvars` file or a GitHub Actions `terraformVars` block:

```
app_name = "mammatus-demo"
replicas = 3

```

Environment variable references from your Mammatus app are preserved as strings:

```
$variables->add(new Entry('rabbitmq_vhost', '$HOME_RABBITMQ_VHOST'));
```

```
rabbitmq_vhost = "$HOME_RABBITMQ_VHOST"

```

Passing data to Terraform
=========================

[](#passing-data-to-terraform)

GitHub Actions `terraformVars` (recommended for WyriHaximus workflows)
----------------------------------------------------------------------

[](#github-actions-terraformvars-recommended-for-wyrihaximus-workflows)

[WyriHaximus/github-workflows](https://github.com/WyriHaximus/github-workflows) writes the `terraformVars` input into `terraform.tfvars` during release management. Use `toTfvars()` to inject Mammatus-generated entries between your static variables.

Generate tfvars from your app in a dedicated job:

```
jobs:
  terraform-mammatus-tfvars:
    name: Generate MammatusPHP tfvars for Terraform
    runs-on: chaos-fast
    outputs:
      terraform-tfvars: ${{ steps.terraform-mammatus-tfvars.outputs.terraform-tfvars }}
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
      - name: Generate Mammatus tfvars for Terraform
        id: terraform-mammatus-tfvars
        run: echo "terraform-tfvars
