AWS OpsWorks - Configuration as Code
One of the foundations of a good Devops organization is stable, repeatable environments that can be managed through code. When a DevOps team is developing an Infrastructure as Code management process, they often lean heavily on CloudFormation, as they should. But what should that team do if they need to support a hybrid cloud environment where servers and services are deployed both on premise and in the cloud? Queue AWS OpsWorks.
AWS OpsWorks is a Platform as a Service (PaaS) offering that can be used for automating the creation and configuration management of hybrid cloud environments. It is designed to work with either Chef or Puppet for configuration management, and gives the Devops Team the ability to create reliable, repeatable environments both on premise and in AWS. OpsWorks also gives the Devops Team management controls and monitoring, autoscaling utilities, and auto-healing capabilities to ensure environments stay stable and in the correct state.
How it Works
There are 3 options for using AWS OpsWorks depending on the features the team needs and their existing configuration management tools: OpsWorks for Puppet Enterprise, OpsWorks for Chef Automate, and OpsWorks Stacks.
Both OpsWorks for Puppet and OpsWorks for Chef Automate provide similar capabilities based on the configuration management system the Devops Team is familiar with. Both allow the team to bring their existing scripts, modules, and cookbooks with them or leverage community built solutions. In both cases, AWS-managed servers are deployed to provide the configuration management tools, and although they are managed by AWS, they do count as EC2 instances running on the account.
OpsWorks Stacks is the most flexible service under OpsWorks and gives the devops team the ability to create and manage several AWS Cloud resources in addition to EC2 and on-premise servers, including RDS, Load Balancers, VPCs etc. In OpsWorks Stacks, applications are broken into stacks and layers that can be reused in multiple environments. Layers are linked to Chef recipes and can be shared across stacks. One of the big differences between OpsWorks Stacks and the other OpsWorks services, is that OpsWorks Stacks doesn’t require private Chef servers so it has lower overhead than the other two options.
Who Is OpsWorks For
- Hybrid deployment environments
- Teams heavily invested in Chef or Puppet already
- Teams that want an open-source, cross-cloud compatible solution for configuration management
OpsWorks is ideal for teams that need to manage a hybrid fleet of on-premise and cloud servers, and need tools to manage consistency across domains, control configuration across heterogeneous environments of Linux and Windows servers, and leverage cloud features like load balancing and autoscaling with hybrid resources.
OpsWorks is also great for teams that have invested in Chef or Puppet automation and are looking for a seamless way to shift that tooling to the cloud in a managed service. It is a low maintenance, low overhead way of deploying existing automation to AWS, and is an ideal tool to assist in the migration of environments from on-premise to the cloud if Puppet or Chef scripts already exist.
Finally, OpsWorks is a great option for teams that are concerned about vendor-lock and aren’t comfortable committing to CloudFormation for Infrastructure as Code. These teams lose substantial features in comparison to CloudFormation, but gain the ability to deploy across clouds and their own resources.
Who is OpsWorks Not For
OpsWorks is not ideal for advanced Devops teams that are looking to automate the deployment of all of their AWS infrastructure. If the application stack is fairly simple, there are common layers that can be used to quickly automate an environment with no code and no custom CloudFormation. However, OpsWorks is not a great solution for automating complex AWS environments and doesn’t give advanced users the flexibility that CloudFormation does.
Teams can deploy OpsWorks at little to no cost. It is included in the cost of AWS resources and there is no additional charge there. For on-premise servers, OpsWorks costs $.02/hr per server to essentially turn an on-premise fleet into EC2 like servers.
Configuration As Code with OpsWorks
With AWS OpsWorks, DevOps teams can easily define their hybrid environments in code and get some of the same power and control of cloud-native deployment with their on-premise fleet of servers. It can help teams invested in Chef or Puppet to quickly deliver their applications to AWS, and provides a low-maintenance, low-cost solution for monitoring, auto-healing, and autoscaling environments.