46 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # 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.)
 |