Overview
Each environment has its own Authsignal tenant. You build and test configuration in the dev tenant using the portal. You then capture the changes as code in a shared module and apply that module to QA and then production.
Changes start in dev and are applied to QA, then production
No changes means it does.
What’s covered
The module holds whichever parts of the Authsignal configuration you choose to manage, such as authenticators, flows, rules, and branding. You can bring in new resources at any time. The resources the provider supports are listed on the Terraform Registry. A few values usually have to differ per tenant, such as web addresses and the tenant name shown to users. These are variables, which you set in each environment’s tfvars. Everything else is identical everywhere. Resources that should only exist in some environments, such as a list of test account emails used in dev and QA, sit behind a variable that you switch on per environment.Repository layout
One shared module holds the Authsignal configuration. Each environment has a small folder that applies the module to one tenant, with its own state file and tfvars.Setup
- Configure the dev tenant in the portal.
- Capture the dev configuration as code in the shared module. Terraform can generate a starting point from dev, or you can write the code by hand.
- Import dev into Terraform state. The plan should show no changes to the tenant.
- Add QA and production one at a time. Terraform creates the configuration in each new tenant, importing anything the tenant already has.

