terraform-shell-resource

by matti

Run (exec) a command in shell and capture the output (stdout, stderr) and status code (exit status)

155 Stars 34 Forks Last release: Not found MIT License 72 Commits 27 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

terraform-shell-resource

Build Status

A workaround for https://github.com/hashicorp/terraform/issues/610 <-- please 👍, meanwhile:

This module runs a command as a

null_resource
and makes the stdout, stderr and exit status available as outputs (stored in triggers map). See an external data source version with more features at https://github.com/matti/terraform-shell-outputs (that runs on every apply, this one only runs once when the resource is created and if command is changed).

Usage

module "files" {
  source  = "matti/resource/shell"
  command = "ls -l"
}

output "my_files" { value = module.files.stdout }

...
Apply complete! Resources: 3 added, 0 changed, 0 destroyed.

Outputs:

my_files = total 16 -rw-r--r-- 1 mpa staff 112 Feb 9 09:06 main.tf -rw-r--r-- 1 mpa staff 1007 Feb 9 09:07 terraform.tfstate

Full usage

module "first" {
  source = "matti/resource/shell"

command = ">/tmp/first echo I was here first" }

module "greeting" { source = "matti/resource/shell"

workaround for missing depends_on in modules

depends = [ module.first.id ]

environment = { GREETING = "hello" }

command = "echo $GREETING world from $(pwd) where /tmp/first has content: $(cat /tmp/first)" command_when_destroy = "echo $GREETING and good bye from $(pwd)"

runs on every apply

trigger = timestamp()

working_dir = "/tmp" }

output "greeting" { value = module.greeting.stdout }

Apply complete! Resources: 6 added, 0 changed, 0 destroyed.

Outputs:

greeting = hello world from /private/tmp where /tmp/first has content: I was here first

Additional examples

See tests and examples

Related issues:

  • https://github.com/hashicorp/terraform/issues/610
  • https://github.com/hashicorp/terraform/issues/17337
  • https://github.com/hashicorp/terraform/issues/6830
  • https://github.com/hashicorp/terraform/issues/17034
  • https://github.com/hashicorp/terraform/issues/10878
  • https://github.com/hashicorp/terraform/issues/8136
  • https://github.com/hashicorp/terraform/issues/18197
  • https://github.com/hashicorp/terraform/issues/17862

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.