Why Application Director + Puppet Work Better Together
- Why did VMware invest in Puppet in 2011 if we were also building a provisioning tool?
- How does the integration between Application Director and Puppet announced in August work?
- When do I use Application Director and when do I use Puppet?
Before we delve into the differences, it is important to understand the big picture. When my team started developing Application Director, open source configuration management tools like Puppet, Chef, CF Engine already existed. They were doing a great job of keeping complex applications up to date with the latest code and configurations while also helping IT to automate inventory management – a big and valuable task in any datacenter.
With that, lets delve into some key differences between Application Director and Puppet to understand how the top-down approach of Application Director and bottom-up approach of Puppet comes together to provide a total Application Lifecycle management solution.The idea with Application Director was to take this process of application configuration management, which does include provisioning, and up-level it to provide the over-arching application semantics to make planning application deployments and moving them across clouds more viable for server side applications. In a simplified view, Application Director creates the notion of an application blueprint to describe the application topology and relationships between application components. Within that blueprint, application developers are writing Puppet scripts that ensure the components are installed within the latest IT policies, using Puppet to do late-binding configuration changes as Application Director provisions the application blueprints across clouds. So, Application Director draws the big picture of how the application is constructed and makes provisioning these apps portable across clouds, while Puppet makes sure all the components that make the app are configured and patched properly.
Application Aware vs Machine Aware:
One of the core strengths for Application Director is it’s ability to define complete applications as compared to single machines or VMs. Applications generally are composed of multiple components including web servers, application servers, messaging services, and databases among others. These components are dependent on each other, and that makes applications management complex and challenging. Any change in a single component can lead to a huge impact to the overall application. Application Director provides the ability to model application topologies, update application code or configurations, define dependencies, and show change impact analysis. This entire process centers on the application itself, but the application is deployed on machines in the cloud.
Puppet focuses on machine configuration. It’s ability to manage the state of machine is the primary focus. So, if every CentOS VM running Tomcat 7 needs to be patched to a certain level and have specific security configurations, Puppet will keep that up to date automatically for you during deployment. By plugging in Puppet scripts to the application configuration steps within Application Director, one can ensure both the application and the machines are automatically configured to IT’s standards.
Application Release Management vs Actual State/Desired State Management:
The ability to manage application deployments across different clouds and environments is one of the biggest challenges in a release management process. Application Director helps you manage and control that process, enabling users to reuse application blueprints across different development, test and production environments that may also be applied on different cloud infrastructures. In short, Application Director does a good job of separating the dependencies of architecting an application and provisioning it to different virtual environments.
Puppet easily discovers and configures new resources and visualizes change against a desired-state baseline. So, by using Puppet for the configuration management steps within the application provisioning, regardless of what size and type of cloud environment your application lands on, Puppet will automate the repetitive tasks of configuration management and proactively continue to manage infrastructure changes.
Application Lifecycle Management vs Configuration Management:
Application Director is an application lifecycle management platform. One should broadly view it as a platform to model (define), deploy, and manage your application lifecycle. Both extensible and application agnostic, Application Director can help architect and deploy any application to any cloud. As part of the overall VMware infrastructure, it can be embedded within a self-service portal to allow users to request deployment environments, manage helpdesk tickets, and orchestrate the approvals process. Check out our video on how you can automate Application Director to use it for self-service application deployment and how it looks to an end-user.
Puppet is a configuration management system. As such, it takes more of a bottoms up approach automating configuration management of servers from operating system and above, ensuring every machine meets IT’s standards. This compliments with Application Director by ensuring that while Application Director can deploy any single application on any environment, Puppet makes it so the resulting set of machines that power the application and all the application components running on it are consistent across every application deployed across every environment.
We’ve outlined a couple different ways to think of Application Director and Puppet working together. We recognize the policy management of server configurations across every application is a massive task that Puppet helps automate. While Application Director does have the ability to do configuration during application provisioning, this configuration is done by scripting. Therefore, for complex environments with lots of applications, we encourage you to consider having Application Director streamline the planning, deployment and application lifecycle, and use Puppet scripts to ensure configuration of your Application Director deployed apps are consistent across every application.