Why integrate Puppet deployments with an external solution like ElasticBox? Our CTO and Co-Founder, Alberto Arias Maestro, answered this very question at a recent Puppet meetup and demoed a full-on Puppet deployment.
The main advantage of a solution like ElasticBox is you can leverage Puppet without being a Puppet master (pun intended). Your developers can run applications without any knowledge of Puppet. Let’s look at how ElasticBox compliments Puppet.
Multi-layer applications are a challenge to deploy because of the dozen services and micro-services they run. Applications no longer run just the services like Nginx, a database, and a static Java application server. They rely on dozens of technologies like Memcached, Redis, MongoDB, RabbitMQ, and programming runtimes like Python, Ruby stacks. It gets complex when ten or more such services run with multiple instances for high availability, replication, and failover. The challenge, therefore, is to make the services and micro-services run together cohesively. ElasticBox provides bindings to configure connections between them. As a result, you can manage the micro-service connections systematically and programmatically.
Self-service for developers
How do you make the services and micro-services that you build available to developers to self-service and run at scale? The answer is a self-service catalog like the one in ElasticBox. The ElasticBox service catalog relies on a box model based on abstract composition. It allows configured Puppet services and micro-services to work on any OS platform or cloud. To add to that, the collaborative nature of ElasticBox organically encourages developers to self-service from the catalog.
In large-scale enterprise deployments, the IT operations team typically handles changes and logistics in environments to keep them stable and efficient. But what happens when there’s a new library, technology, runtime, or framework to adopt every few months? Can the IT operations team keep up with the innovative pace of the developers? You surely don’t want to slow down deployments while you hit the drawing board to reset and rewire, right? With ElasticBox, the IT operations team can work to stabilize things at their pace without interrupting the innovative flow of the developers.
Versioning in ElasticBox helps you manage environment changes fluidly. To implement devops at scale, you need to be able to reuse micro services across different applications. You need to be able to version them, update a service and refresh all the applications that consume them. As in this demo, for example, the Puppet master maps modules across several nodes to run and update them from one place.
Support for Puppet
Puppet uses many data sources like site.pp, Hiera, Puppet Enterprise, PuppetDB, External CMDB, Puppet agent, and Puppet modules to configure and communicate. ElasticBox works with all of them.
There are two ways to deploy with Puppet in ElasticBox. With either option, you won’t need to write a single line of code.
To run Puppet as a standalone node, wrap the quick start Puppet box as a child box in your deployment. You can directly paste Puppet modules in the box event scripts or clone modules with a quick start Git box. When a developer launches a Puppet configured application, they provide specific deployment values, which ElasticBox passes to the local Puppet node on the VM. The standalone Puppet client configured by Hiera executes Puppet modules with the deployment values from the developer.
In the second method, a Puppet master manages all the deployment nodes and modules centrally. Although this method requires extra work, you still don’t write a single line of code. Take a look at the demo to see this in action.
Here, we have three boxes that describe the deployments of a Puppet master, agent, and MongoDB. First, we deploy the Puppet master. It uses site.pp to listen for active nodes and passes MongoDB modules to that node type. It gets the modules from a Git box. Next, we deploy MongoDB from the MongoDB box. The box contains the Puppet agent box, which installs the agent and fetches the deployment values you provide for username, password, MongoDB version. Then the agent passes these facts through a facter to the Puppet master. That’s the demo!
Choose the Puppet standalone or master/agent configuration whichever works best for you. A solution like ElasticBox compliments Puppet deployments in a big way. Your developers can self-service application services or micro-services from a catalog, bind with multiple micro-services, and deploy at scale, on any platform or cloud without writing a single line of code or knowing Puppet. You deliver that kind of self-service power straight into the hands of developers. Start deploying with Puppet today!