Multi Region Deployments
Runiac is designed from the ground up to enable multi-region deployments with clean code and minimal changes baked directly into the runiac deploy
command.
No more terraform loops or complex pipeline scripting.
Runiac steps perform two types of deployments during a runiac deploy
. One type is primary
, the other type regional
. To perform multi-region deployments we will focus on the regional
deployment type. These types are described in more detail in the steps documentation
Configuration
Two configurations are used for running multi-region deployments, primary_region
and regional_regions
.
primary_region: centralus
regional_regions: centralus,eastus,westus,uksouth,southeastasia
primary_region
: Runiac will first execute the iac in the.
directory of all steps. If this deployment is successful for all steps it will move to the regional deployments.regional_regions
: Runiac will concurrently execute the iac in the./regional
directory of the steps with the iteratee value passed in as theruniac_region
input variable.
It is common to define the minium regions used for ephemeral enviroments (developers and pull requests) in the YAML and then pass in a larger region list for higher environments via the CLI flag
--regional-regions
.
Code Declaration
Example code declaration using Terraform.
Full example available in the runiac github repo
Directory
./step1_default
├── backend.tf
├── main.tf
├── providers.tf
├── regional <---
│ ├── backend.tf
│ ├── main.tf
│ ├── providers.tf
│ └── variables.tf
└── variables.tf
Regional Terraform
resource "azurerm_resource_group" "spoke" {
name = "${local.namespace-}rg-runiac-spoke-${var.runiac_region}"
location = var.runiac_region
}
Execution
Execute runiac deploy
🚀