A TypeScript/JavaScript wrapper around Terraform and Terragrunt. Fully Promise-based.
$ npm install js-terraformor
$ yarn add js-terraformCreate 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/terragruntfunction which does not need any interactive input (plan,output..). The default logger isconsole.log. You can pass a custom logger by callingsetLoggerfor, e.g. writing data to a file. But be careful,silentmust betruewhen you use custom logger and want to get the output -
outputStreams(outanderr): Are used for anyterraform/terragruntfunction which needs input by the user (apply,destroy...) The default streams areprocess.stderrandprocess.stdout