I'm starting on a new project and I'd like to use SaltStack
for managing a large deployment spanning several datacenters. Everything runs on Linux. I had previous experience with Chef
but I relatively new to SaltStack
. My goal is to keep the entire project in a single git repository and make SaltStack to pull configurations from this repository and apply it to minions. It seems that SaltStack have no notion of versioning but serving content from different branches in the repository would work even better. So, I was thinking to create a git repository of the following structure:
salt -+- config (for salt-master config files)
+- states
+- pillars
+- reactors
+- formulas
and use different branches for dev
, qa
and prod
environments. I also would like to use pillars
for providing datacenter specific configuration and I was thinking to use GitFS
to glue everything together.
However, there are those pesky top.sls
files that handled in a very peculiar way, do not fit in this picture and eventually break this concept.
There also configuration files that I'd like to keep in this repository but I have no better idea for now other then manually copy or symlink them to under /etc/salt
from the config
directory.
I went through documentation several times and did some experimentation in a simulation environment but I couldn't come up with any sensible project layout yet, so I'm reaching to the stackoverflow community.
My questions are:
- Could anybody share a repository structure and configuration they successfully used for managing a similar environment?
- Have anybody figured out a good way for maintaining configuration files?