Before using this template, you need to configure the project. For this, please see the Getting Started Guide on the Goldstack documentation.
To stand up the infrastructure for this module, find the directory for this module in the
packages/ folder and navigate to this folder in the command line. Then identify the name of the deployment you have defined in the Goldstack configuration tool. This can be found in the
packages/[moduleName]/goldstack.json file. Look for the
"deployments" property and there for the
"name" of the first deployment. The name should either be
In order to stand up the infrastructure, run the following command:
yarn infra up [deploymentName]
This will be either
yarn infra up dev or
yarn infra up prod depending on your choice of deployment. Note that running this command can take a while.
Note that you will not be able to access your website yet. First run a deployment as described below.
Once the infrastructure is successfully set up in AWS using
yarn infra up, we can deploy the module. For this, simply run the following command:
yarn deploy [deploymentName]
This will either be
yarn deploy dev or
yarn deploy prod depending on your choice of deployment during project configuration.
You should now be able to view your website on the domain name you have configured. You can find the domain name in
"deployments" and there the property
"websiteDomain" for your selected deployment.
This module allows publishing simple static websites. You can start developing your website by modifying the files in the
web/ folder or copy and paste the files of an existing website in there. The module will deploy all files from this folder to the AWS infrastructure.
All infrastructure for this module is defined in Terraform. You can find the Terraform files for this template in the directory
[moduleDir]/infra/aws. You can define multiple deployments for this template, for instance for development, staging and production environments.
If you configured AWS deployment before downloading your project, the deployments and their respective configurations are defined in
The configuration tool will define one deployment. This will be either
prod depending on your choice during project configuration. In the example
goldstack.json below, a deployment with the name
dev is defined.
Infrastructure commands for this template can be run using
yarn. There are four commands in total:
yarn infra up: For standing up infrastructure.
yarn infra init: For initialising Terraform.
yarn infra plan: For running Terraform plan.
yarn infra apply: For running Terraform apply.
yarn infra destroy: For destroying all infrastructure using Terraform destroy.
yarn infra upgrade: For upgrading the Terraform versions (supported by the template). To upgrade to an arbitrary version, use
yarn infra terraform.
yarn infra terraform: For running arbitrary Terraform commands.
For each command, the deployment they should be applied to must be specified.
yarn infra [command] [deploymentName]
For instance, to stand up the infrastructure for the
dev deployment, the following command would need to be issued:
yarn infra up dev
Generally you will only need to run
yarn infra up. However, if you are familiar with Terraform and want more fine-grained control over the deployment of your infrastructure, you can also use the other commands as required.
Note that for running
yarn infra terraform, you will need to specify which command line arguments you want to provide to Terraform. By default, no extra arguments are provided:
yarn infra terraform [deployment] plan
If extra arguments are needed, such as variables, you can use the
--inject-variables option, such as for running
yarn infra terraform [deployment] --inject-variables plan
If you want to interact with the remote backend, you can also provide the
--inject-backend-config option, such as for running
yarn infra terraform [deployment] --inject-backend-config init
Goldstack templates make it very easy to customize infrastructure to your specific needs. The easiest way to do this is to simply edit the
*.tf files in the
infra/aws folder. You can make the changes you need and then run
yarn infra up [deploymentName] to apply the changes.
infra/aws folder contains a file
variables.tf that contains the variables required for your deployment; for instance the domain name for a website. The values for these variables are defined in the module's
goldstack.json file in the
"configuration" property. There is one global
configuration property that applies for all deployments and each deployment also has its own
configuration property. In order to add a new variable, add the variable to
variables.tf and then add it to the configuration for your template or to the configurations for the deployments.
_c in the variable name. For instance:
myVariableName in the Goldstack configuration will translate to the Terraform variable
my_variable_name as defined in
In order to manage your infrastructure, Terraform maintains a state for each deployment; to calculate required changes when the infrastructure is updated and also for destroying the infrastructure if it is no longer required. Goldstack by default will store the terraform state in the
infra/aws folder as simple files.
This works well for deploying infrastructure from your local development environment but is not a good choice when building a CI/CD pipeline for the infrastructure definition. In that case, it is better to define Remote State. A popular choice many projects adopt here is to store the state in an S3 bucket. Please see the Terraform documentation for further details.
We are not aware of any additional security hardening that can be performed for this module. Please raise an issue if there are any further steps that could be taken.