diff --git a/docs/configuration.md b/docs/configuration.md index 6254d2e..881dc3c 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -1,5 +1,6 @@ # Configuration +Code reads its configuration from the environment variables. All configuration is done through environment variables. Not all of these are necessary to run the code. The most important ones are: @@ -23,7 +24,6 @@ Note that not all of these cookies are needed to use all parts of the source cod - `GOODJUDGMENTOPENCOOKIE` - `INFER_COOKIE` -- `CSETFORETELL_COOKIE`, deprecated, superseded by `INFER_COOKIE`. - `HYPERMINDCOOKIE` - `GOOGLE_API_KEY`, necessary to fetch Peter Wildeford's predictions. - `SECRET_BETFAIR_ENDPOINT` diff --git a/docs/infra.md b/docs/infra.md new file mode 100644 index 0000000..5685f5c --- /dev/null +++ b/docs/infra.md @@ -0,0 +1,45 @@ +# Terraform + +Infra is managed by [Terraform](https://www.terraform.io/) (WIP, not everything is migrated yet). + +Managed with Terraform: + +- Vercel +- Digital Ocean (database) +- Heroku + +TODO: + +- Algolia +- Twitter bot +- DNS? + +## Recipes + +### Set up a new dev repo for managing prod + +1. Install [Terraform CLI](https://www.terraform.io/downloads) +2. `cd tf` +3. `terraform init` +4. Get a current version of prod tfvars configuration + - Source is in `metaforecast-notes-and-secrets` secret repo, `tf/prod.auto.tfvars` for now (will move to Terraform Cloud later) + - Store it in `tf/prod.auto.tfvars` (or somewhere else, there are [other ways](https://www.terraform.io/language/values/variables#assigning-values-to-root-module-variables)) +5. Get a current version of terraform state + - Source is in `metaforecast-notes-and-secrets` secret repo for now (will move to Terraform Cloud or [pg backend](https://www.terraform.io/language/settings/backends/pg) later) + - Store it in `tf/terraform.tfstate` + +Now everything is set up. + +Check with `terraform plan`; it should output `"No changes. Your infrastructure matches the configuration."`. + +### Edit environment variables in prod + +1. Update terraform state and vars from `metaforecast-notes-and-secrets` +2. Modify `tf/prod.auto.tfvars` as needed +3. Run `terraform apply` + - Check if proposed actions list is appropriate + - Enter `yes` + - Terraform will push the new configuration to Heroku and Vercel. +4. Push terraform state and vars back to `metaforecast-notes-and-secrets` + +(After we move to Terraform Cloud (1) and (4) won't be needed.) diff --git a/tf/.gitignore b/tf/.gitignore index 3e4aae0..458cf26 100644 --- a/tf/.gitignore +++ b/tf/.gitignore @@ -1,3 +1,3 @@ /*.tfstate* /.terraform* -/prod.tfvars +/prod.*tfvars diff --git a/tf/main.tf b/tf/main.tf index 69029a7..fc2e744 100644 --- a/tf/main.tf +++ b/tf/main.tf @@ -61,7 +61,7 @@ resource "vercel_project" "metaforecast" { git_repository { type = "github" - repo = "QURIresearch/metaforecast" + repo = "quantified-uncertainty/metaforecast" } domain {