project
Which cloud, region and environment everything else is built in.
Every file has exactly one project block. It names the project, and says which cloud and region everything else in the file is built in. It may appear anywhere in the file, though it conventionally comes first.
ackee.ack
ackee 1# env is left to the environment this file is deployed into.project "shop" {cloud = "gcp"region = "europe-west1"gcpProject = "acme-shop-prod"}
Fields
| Field | Takes | Meaning |
|---|---|---|
| env | string default the environment's name | Usually left out. It is part of every resource's name in the cloud, and when the file leaves it out the environment the file is deployed into supplies its own name — so one file deploys to dev and prod without their resources colliding. Write it only to pin a file to one name wherever it is deployed. |
| cloud | "aws" | "gcp" | "azure" default "aws" | Which cloud this file deploys to. An environment is created for one cloud and stays on it, so a file whose cloud differs from its environment's is refused (AK214). |
| regionrequired | string | The cloud's own region name: "us-east-1" on AWS, "us-east1" on Google Cloud, "eastus" on Azure. |
| gcpProject | string | Google Cloud only, and required there: the id of the Google Cloud project to deploy into. |
The name, and why it matters
The quoted name after project and the env field together prefix the name of every resource Ackee creates — shop-dev-web, shop-dev-main. Names are how the cloud, and Ackee, recognise a resource from one deploy to the next.
A file downloaded from Ackee leaves env out whenever it would only repeat the environment's name, so the file you commit from dev is the file you can push to prod.