Package content

Package definition file

Each package must have a package definition YAML file to specify the package settings, the list of expected module deployments and their configuration.

By default, the package definition file is expected to be located in the current working directory and to be named package.yaml. However, another location can be specified by using the --package-file (or -p) CLI argument.

Package modules

The files for the modules deployed by a package must be stored in folders located at the same path that the deployment definition file. The first level of folders has the name of the module engine, the second level of folders has the name of the module.

Example

package.yaml
    python/
        python1/
            main.py
        python2/
            main.py
    terraform/
        terraform1/
            template.tf
            variables.tf
    cloudformation/
        cloudformation1/
            template.yaml

This example package has 2 Python modules, 1 Terraform modules and 1 CloudFormation modules.

Package persistent data

While the package definition file and the package module files can be stored locally or in a code management platform, the package persistent data requires a S3 bucket. If you have multiple packages, you can use the same S3 bucket and use the package name as prefix.

Package persistent data include:

  • Package state in state.json: Contains the list of module deployed and their configuration at the time they were deployed. This is used to evaluate the list of deployments to create, update or destroy.
  • Cached information about AWS accounts and organizational units in orga.json: Accelerate the execution of AWS Orga Deployer by removing the need to query AWS Organizations at each run.
  • Terraform states for Terraform modules in terraform/<ModuleName>/<AccountId>/<Region>/terraform.tfstate.