A TypeScript/JavaScript wrapper around Terraform and Terragrunt. Fully Promise-based.
$ npm install js-terraform
or
$ yarn add js-terraform
Create a new Terraform
instance:
const {Terraform} = require('js-terraform');
const terraform = new Terraform()
Executes terraform init
on the given path
.
Options: ExecuteOptions: silent
defaults to true
Executes terraform plan
on the given path
. Returns ResourceCounts.
Options: ExecuteOptions: silent
defaults to true
Executes terraform destroy
on the given path
. Returns ResourceCounts.
Options: DestroyOptions: silent
defaults to false
, autoApprove
defaults to false
Executes terraform apply
on the given path
. Returns an ResourceCounts
object with information how many resources were added, changed or destroyed.
Options: ApplyOptions: silent
defaults to false
, autoApprove
defaults to false
Executes terraform output -json
on the given path
and returns the keys. E.g. when you have two outputs
output "output_1" {
value = "1"
}
output "output_2" {
value = "2"
}
the function would return ['output_1', 'output_2]
Options: ExecuteOptions: silent
defaults to true
Executes terraform output -json ${value}
on the given path
and returns the value. E.g. for
output "output_1" {
value = "1"
}
the function would return {'output_1': 1}
(when simple: true
) or
output_1: {
sensitive: false,
type: 'string',
value: '1'
}
when simple: false
Options: OutputOptions: silent
defaults to true
, simple
defaults to true
Executes terraform output -json
on the given path
and returns the values. E.g. for
output "output_1" {
value = "1"
}
output "output_2" {
value = "2"
}
the function would return {'output_1': 1, 'output_2': 2}
(simple: true
) or
output_1: {
sensitive: false,
type: 'string',
value: '1'
},
output_2: {
sensitive: false,
type: 'string',
value: '3'
}
when simple: false
Options: OutputOptions: silent
defaults to true
, simple
defaults to true
Create a new Terragrunt
instance:
const terragrunt = new Terragrunt()
Executes terragrunt apply
on the given path
. Returns void.
Options: ApplyOptions: silent
defaults to false
, autoApprove
defaults to false
Executes terragrunt destroy
on the given path
. Returns void.
Options: DestroyOptions: silent
defaults to false
, autoApprove
defaults to false
Executes terragrunt destroy
on the given path
. Returns void.
Options: ExecuteOptions: silent
defaults to false
Same signature and options as the Terraform.output
function, except that it uses terragrunt
Same signature and options as the Terraform.outputValue
function, except that it uses terragrunt
Same signature and options as the Terraform.getOutputKeys
function, except that it uses terragrunt
interface ExecuteOptions {
silent?: boolean
}
interface OutputOptions {
silent?: boolean
simple?: boolean
}
interface InteractiveOptions {
autoApprove?: boolean
silent?: boolean
}
DestroyOptions
and ApplyOptions
are an alias for InteractiveOptions
type ResourceCounts = {
addCount: number
changeCount: number
destroyCount: number
}
Information how many resources are added, changed or destroyed.
Many functions have the possibility to be executed in silent mode by passing a silent
flag in the options object. If silent: true
no output is passed to any logger nor the output streams (more on that below)!
The default depends on the function, please read the documentation carefully!
There are two different ways of "logging", the logger
and outputStreams
-
logger
: Is used for anyterraform
/terragrunt
function which does not need any interactive input (plan
,output
..). The default logger isconsole.log
. You can pass a custom logger by callingsetLogger
for, e.g. writing data to a file. But be careful,silent
must betrue
when you use custom logger and want to get the output -
outputStreams
(out
anderr
): Are used for anyterraform
/terragrunt
function which needs input by the user (apply
,destroy
...) The default streams areprocess.stderr
andprocess.stdout