The challenge today with system administrators is to manage growing complex IT infrastructure environments. Enterprises use hybrid and heterogeneous environment which may include virtual machines, cloud services, on premise software applications. In order to support internal customers, follow company compliance and guidelines, maintain service levels and operate in always demanding environment they need a tool to manage the infrastructure efficiently and effectively.
Every cloud service provider (CSP) provides some or the other capabilities of managing their cloud environment. In case of Amazon Web Services (AWS), they provide CloudFormation for creating AWS resources. AWS provides the facility of Amazon Machine Image (AMI) which is a special type of pre-configured operating system and virtual application software which is used to create a virtual machine within the Amazon Elastic Compute Cloud (EC2). It serves as the basic unit of deployment for services delivered using EC2. Why do you need to manage AMIs (Amazon Machine Image)? AMI based deployments poses a challenge that every time you upgrade the software or changes in the OS configuration, provisioning and patching you need to create new AMI. You soon end up in managing several versions of AMIs.
AWS CloudFormation provides developers and sysadmins an easy way to create AWS resources (for example Amazon EC2 instance, RDS Database instance, S3 instance). AWS CloudFormation supports many AWS resources, allowing you to build a highly available, reliable, and scalable AWS infrastructure for your application needs AWS CloudFormation takes care of following –
- Provisioning the AWS resources in an orderly and predictable fashion
- Handling and recovering from any failures or issues
AWS CloudFormation also helps you to bootstrap deployment and management tools which you might be using for your enterprise environment. The crux of configuration management is to deploy machines predictably and consistently and manage the change. CloudFormation is a great tool when you are operating in AWS only environment. What about applications that use both datacenter resources and AWS, or local testing environments, or development machines?
Puppet is an open source platform developed under the guidance of the team at PuppetLabs http://www.puppetlabs.com. Puppet allows you to manage the provisioning, configuring and patching applications, operating system components and their application stacks efficiently.
CloudFormation empowers you to script the entire configuration of AWS resources however it’s only meant for managing AWS resources. You as an enterprise does not necessary operate only in ‘AWS only’ environment and hence you need something that goes beyond AWS and help you manage your entire infrastructure and Puppet does exactly the same job. The best part is you can leverage best of both tools CloudFormation (to define the static creation of AWS resources) and Puppet (to leverage the dynamic nature of AWS resources) to manage your enterprise infrastructure. AWS CloudFormation and Puppet can be used together to automate your entire deployment and management processes, from your AWS resources through to your application artifacts.
Puppet’s strength is that it’s a more expressive language for defining actions that occur within the instances once they’ve been provisioned. Puppet is a client/server application (clients pull configuration from a PuppetMaster), declarative solution which is much more script oriented. Puppet is good at infrastructure lifecycle management which starts with provisioning, patch management and compliance. It is good at automating repetitive task which system administrators perform. Also, it can easily and quickly deploy applications and manage change in the on-premise as well as cloud environment.
With extensive work experience on AWS and infrastructure lifecycle management e-Zest can provide professional consulting on implementing Puppet for cloud management.
In the subsequent sections will dive deeper into Puppet and how it can be used effectively to deliver AWS managed services.