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:
- Dev queues a build on TFS.
- Generate an environment name or take one as input.
- Create VMs in azure for each of our server roles, using some azure resource manager scripting.
- 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.
- Execute a suite of pester tests on the environment to confirm everything install OK and our DSC works as expected.
- Register the environment with our octopus deploy server.
- 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.