Continuous Deployment is key to BackStage. Puppet is used for configuration management internally across all environments. All changes are managed though Git, with Puppet Master and Hyera to feed Puppet with JSON to promote changes through to the various environments.
BackStage is based on Puppet for deployment of OpenAM, OpenDJ and Agents. However the view is Puppet is quite complex to manage, the view is to move away form this to a containerized model.
Customer view - puppet is great for infrastructure and to built an environment from bare metal not so great if there is a series of underlying dependancies.
Backstage will move further to Docker and the view is Puppet can be removed all together. No longer need puppet to configure or pull software as GIT is used to pulled and the software is baked into the Docker image. This approach still requires orchestration to build the environment to the required topology; BackStage are currently evaluating Kuberetes, Ansible and Docker Swarm. Docker Swarm is the current favorite due to its simplicity and integration with Docker.
Question - “How do you apply configuration for OpenAM, agents, etc”. Currently for OpenAM ssoadm is the tool of choice. Going forward amSter will enabe RESTful interactions with OpenAM so for example a configuration could be extracted from one environment, parameterised, stored in GIT and promoted to other environment using GIT Pull and parameter replacement. This will enable a far fmore Dev ops friendly approach. OpenIDM, OpenIG and OpenDJ are already very DevOps friendly in terms of CI deployment.
Question - “How do you rollback a BackStage release” - All releases deployed as Linux packages delivered using Puppet. Puppet is used to rollback changes. With Docker and Swarm it is able to handle far more elegantly. Many customers go with a blue, green approach where for example green has new code. A DNS change then makes the environment active and if rollback is required it just requires a DNS change back to blue. In addition, there is value in snapshot with snapshot rollback for stateless application to rollback application changes; this doesn’t play well with stateful applications - think databases.