We are considering building out some automation for creating environments for our developers. We have a big monolithic app that uses ~5 VMs with different software configurations – Database servers, application servers, web server, etc.
Recently we have produced DSC configurations for each of the server types we have, but I'm a little unsure about how to turn this into a pipeline where we can press a button and a fully configured environment comes out the other end.
We are mostly on-premises but are thinking about using Azure as our dev/test space.
My thinking of how the pipeline would work at the moment is running something like this:
1. Dev queues a build on TFS.
2. Generate an environment name or take one as input.
3. Create VMs in azure for each of our server roles, using some azure resource manager scripting.
4. Create a DSC $ConfigurationData AllNodes array with each of the server names in azure, and pass this into a DSC Configuration which uses a composite resource to configure each node.
5. Execute a suite of pester tests on the environment to confirm everything install OK and our DSC works as expected.
5. Register the environment with our octopus deploy server.
6. Tell octopus deploy to deploy our latest packages into the environment.
I was thinking we can just use steps 1-5 as a CI pipeline for changes to our composite resources for each node as well.
Once we have this in place, I think we can then start transitioning bits and pieces of the platform to be cloud native (individual web services and so on)
Does this seem like a good way to forward? I am considering using Azure DSC to host the configurations but not sure how this would integrate into the pipeline.