Add `component` attribute to stack configs. Allow configuring and provisioning many instances of the same component. @aknysh (#15)
what
- Add
component
attribute to stack configs
why
- Allow specifying YAML configs and provisioning many instances of the same component type.
For example, we can specify the following config to provision many different instances of AWS Aurora clusters by referencing the commonaurora-postgres
component:
components:
terraform:
db1:
component: aurora-postgres
vars:
instance_type: db.r4.large
cluster_size: 1
db2:
component: aurora-postgres
vars:
instance_type: db.r4.large
cluster_size: 1
db3:
component: aurora-postgres
vars:
instance_type: db.r1.large
cluster_size: 1
db4:
component: aurora-postgres
vars:
instance_type: db.r8.large
cluster_size: 1
and then use the following commands to plan/apply the database components:
atmos terraform plan db1 -s uw2-prod
atmos terraform apply db1 -s uw2-prod
atmos terraform plan db2 -s uw2-prod
atmos terraform apply db2 -s uw2-prod
atmos terraform plan db3 -s uw2-prod
atmos terraform apply db3 -s uw2-prod