Before I jump into this, anyone have insight on how it might be done or how difficult it might be? I just ask because it seems like something you've probably already considered already :)
Thanks for the awesome project @mkocher!
The solution I use now is the environment variable switches, which are OK but not ideal.
Set ROLES=foo,bar, then run soloist and have your ci.yml switch on roles. Soloist will split it on the commas, so you can apply as many or as few roles to the box as you want.
If you're using capistrano, you can use $CAPISTRANO:HOSTROLES$ in a command it will be replaced with the roles assigned to the host in capistrano.
This works pretty well, and is what I use at the moment. I'd like to look at integrating some sort of envdir like support, because I want to be able to just run soloist once I'm on a server and have it do the right thing. Having to run ROLES=foo,bar soloist on a server leaves room for mistakes. Envdir might not be the right solution, it might make sense to just have a soloistroles file that could be in the current directory or /etc.