Run Terraform from Gulp


100.1.1-develop4 years ago4 years agoMinified + gzip package size for @kennship/gulp-terraform in KB



Run Terraform from Gulp.


const terraform = require('@kennship/gulp-terraform');

gulp.task('terraform.apply', () => terraform.apply({
  args: {
    state: '/path/to/terraform.tfstate',
    varFile: '.env/production.tfvars',

Each method returns a Promise.

If you have a more complex use case, and you are using Node 8 (or a Babel transform), you may use async/await to work with Terraform:

// Please note that you will need special setup for async/await
async function attemptToDeploy() {
  try {
    await terraform.apply('path/to/config');
  } catch (error) {
    console.error('Problem running Terraform!');


terraform.apply(positionalArgs, options);
terraform.destroy(positionalArgs, options);
terraform.get(positionalArgs, options);
terraform.import(positionalArgs, options);
terraform.init(positionalArgs, options);
terraform.output(positionalArgs, options);
terraform.plan(positionalArgs, options);
terraform.push(positionalArgs, options);
terraform.refresh(positionalArgs, options);
terraform.show(positionalArgs, options);
terraform.taint(positionalArgs, options);
terraform.untaint(positionalArgs, options);
terraform.validate(positionalArgs, options);
terraform.version(positionalArgs, options);

Each of these methods takes an optional array of positional arguments, and an options object. Each method returns a Promise that resolves when the Terraform run has completed, or rejects if there is an issue.

positionalArgs is either a string or an array of strings used to supply positional arguments at the end of the call. For example, terraform.apply('path/to/config') would be run as terraform apply path/to/config.

options is an object allowing further configuration:

  • args is a map of CLI argument names to their values. Array values are split into multiple arguments. Arguments passed in camel-case will be converted to the hyphenated form expected by Terraform; for example, {stateOut: 'some/value'} would get passed as -state-out=some/value. Also, to specify a flag with no value, set its value to true.
  • vars is a map of Terraform variable names to their values. These are set by manipulating the environment variables used for the Terraform call.
  • cwd is the working directory to call Terraform from. This will make a difference if the configuration is specified as a relative path. The default behavior is to use process.cwd().
  • terraformPath may be used to provide a path to a Terraform binary. This is useful if your system does not have Terraform in its PATH variable.
terraform.runCommand(commandName, positionalArgs, options);

This method is used to implement the named commands. terraform.runCommand('apply', opts) is the same as terraform.apply(opts).


terraform.apply('path/to/config', {
  args: {
    varFile: '.env/production.tfvars',
  vars: {
    site_domain_name: 'gulpjs.com',
// > terraform apply -var-file=.env/production.tfvars path/to/config
// This will also set the Terraform variable "site_domain_name" to the
// value "gulpjs.com".

terraform.validate('path/to/config' {args: {color: false}});
// > terraform validate -no-color path/to/config
// Makes sure that the Terraform files in the given directory are valid, but
// don't show color in the output.



If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.