This message was deleted.
# general
s
This message was deleted.
l
You want all stacks to be configured via a single file?
That won't work well in per-user stack setup. Teams where everyone has their own stack.
w
That won’t work well in per-user stack setup. Teams where everyone has their own stack.
Ah good point! That sounds like a pretty common use case.
You want all stacks to be configured via a single file?
Yes. For my use case though, there will only be 3 stacks at most: dev, staging, and prod. With 3 .yml files, it’s a bit hard to see what are the differences among those envs.
l
Maybe you could put it all in a new .yaml, and write a script that creates your Pulumi.yaml and all stack files from it? Then you could remove Pulumi.yaml and Pulumi.<stack>.yaml from source control and replace them with your multistack.yaml file...?
w
Maybe you could put it all in a new .yaml, and write a script that creates your Pulumi.yaml and all stack files from it?
Yep! I think I might do that. It should worth the effort. Do you see any potentials for pulumi to: 1. pulumi itself supports different config formats 2. it accepts some plugin or some-sort to allow user customize their configurations?
l
Not me personally. But everyone has their specific needs and it might suit others.
👍 1
b
Don't forget that you're using a programming language, so technically your config can look like whatever you want. For example, if you're using typescript you could have something like:
Copy code
export const config = {
    rdsInstance: {
        engine: "mysql",
        instanceType: {
            dev: "db.t2.micro",
            prod: "db.t2.xlarge"
        }
    }
};
You can also include some stack config in there too, so you can include secrets in it:
Copy code
import * as pulumi from "@pulumi/pulumi";

const pulumiconfig = new pulumi.Config();

export const config = {
    rdsInstance: {
        engine: "mysql",
        instanceType: {
            dev: "db.t2.micro",
            prod: "db.t2.xlarge"
        },
        username: "root",
        password: pulumiconfig.getSecret("mysqlpassword")
    }
};
w
Thank you! Defining it directly in the source code is a very interesting direction! Thanks for pointing that out 🙂
👍 1