@ppwcode/terraform-ppwcode-modules
v6.2.0
Published
A number of general Terraform modules
Downloads
59
Readme
This repository contains a number of general Terraform modules.
The Terraform documentation describes how to use modules. You import the modules from Github, as described in the documentation. Use the format for public Github repositories, using the "double-slash" to refer to the correct subdirectory.
module "MODULE_INSTANCE_NAME" {
source = "github.com/peopleware/terraform-ppwcode-modules//MODULE_NAME"
}
On the other hand, …
The module domain_version/
directly, and thus the module subdomain/
that depends on it,
uses a Node.js JavaScript script (though a Terraform external data source provider) to get information
about the SOA serial and the state of the git repository of the Terraform configuration it is used in.
Node.js JavaScript code depends on other npm packages, that need to be installed for the script to be able to
work. This repository is therefor, apart from being a collection of Terraform modules, also a Node.js package, with dependencies described in package.json
. The dependencies need to be available in a
node_modules/
folder next to the script, or in one of its ancestor folders, before Terraform can use the
modules in > terraform plan
or > terraform apply
.
This is done by running > npm install
in the project that uses these modules.
For this to work, this collection of Terraform modules / npm package must itself be loaded in the
Terraform configuration in which it is used via > npm install
. These commands
work recursively.
This is done by making the configuration in which these modules are used an npm package itself, with this
collection of Terraform modules defined as a development dependency in its package.json
. Once
> npm install
is executed, these modules will be available in
node_modules/terraform-ppwcode-modules/
. To create an instance of a module MODULE_NAME
then, the Terraform
configuration has to refer to it via a relative path, like this:
module "MODULE_INSTANCE_NAME" {
source = "./node_modules/terraform-ppwcode-modules/MODULE_NAME"
}
Note to the Terraform maintainers: go with the flow, and promote npm as the primary method to distribute modules.
Compatibility
This library is intended to be compatible with Node 6, 8, and 10.
Development
Node version
Development is done in Node 10, via nvm
.
Compatibility
The code does not use async
/ await
, which was introduced in Node 8.
Also, we use Q
as Promise library, instead of native Promises, since Node 6 does not yet support util.promisify()
.
We use Q.nfcall
instead.
Style
This code uses Standard coding style.
TODO
Setup a CI
Move to ppwcode
team. Request access from Travis.
Create parallel builds for Node 6, 8 10, and back tag.