What is Azure Resource Manager and what are its top alternatives?
Azure Resource Manager (ARM) is a cloud service that allows users to manage and organize resources within Azure by grouping them into resource groups. Key features of ARM include template-based resource deployment, role-based access control, and resource tagging. However, ARM has limitations such as complexity in creating and managing templates, limited support for non-Azure resources, and potential issues with scaling in large environments.
Terraform: Terraform is an open-source infrastructure as code software tool that provides a way to define and create infrastructure across cloud providers. Key features include declarative configuration, support for multiple cloud providers, and infrastructure state management. Compared to ARM, Terraform is more flexible and supports a wide range of providers, but may require additional learning curve.
Google Cloud Deployment Manager: Google Cloud Deployment Manager is a service that allows users to specify all resources needed for their application in a declarative format. Key features include configuration templates, resource tracking, and easy rollback functionality. Compared to ARM, Google Cloud Deployment Manager is tightly integrated with Google Cloud services but may lack support for other cloud providers.
AWS CloudFormation: AWS CloudFormation is a service that allows users to define and provision AWS infrastructure as code. Key features include stack management, resource provisioning, and dependency mapping. Compared to ARM, AWS CloudFormation is specific to the AWS ecosystem but offers a wide range of templates and AWS resource support.
Pulumi: Pulumi is an infrastructure as code tool that allows users to define their cloud infrastructure using familiar programming languages. Key features include language support, infrastructure state management, and multi-cloud capabilities. Compared to ARM, Pulumi offers flexibility with programming languages but may require more coding knowledge.
Rancher: Rancher is an open-source container management platform that provides centralized infrastructure management. Key features include Kubernetes management, multi-cluster support, and container orchestration. Compared to ARM, Rancher focuses more on container management but can be used for managing infrastructure as well.
OpenStack Heat: OpenStack Heat is an orchestration service within the OpenStack ecosystem that allows users to describe their infrastructure using templates. Key features include template definition, resource provisioning, and auto-scaling capabilities. Compared to ARM, OpenStack Heat is specific to OpenStack environments but offers robust orchestration features.
Ansible: Ansible is an open-source automation tool that can be used for infrastructure as code tasks. Key features include agentless architecture, playbooks for defining configurations, and wide community support. Compared to ARM, Ansible focuses more on automation tasks but can be used for provisioning and managing infrastructure.
Chef: Chef is a configuration management tool that offers infrastructure as code capabilities. Key features include recipe-based configuration, infrastructure automation, and compliance management. Compared to ARM, Chef is more focused on configuration management but can be used for deploying and managing infrastructure.
SaltStack: SaltStack is an open-source automation and orchestration tool that allows users to define and enforce infrastructure configurations. Key features include remote execution, configuration management, and event-driven automation. Compared to ARM, SaltStack offers more capabilities for automation and orchestration tasks but may require more setup and configuration.
Cloudify: Cloudify is an open-source cloud orchestration platform that enables users to automate and manage applications and infrastructure. Key features include hybrid cloud support, scalable orchestration, and self-healing capabilities. Compared to ARM, Cloudify offers more advanced orchestration features but may have a steeper learning curve.
Top Alternatives to Azure Resource Manager
- AWS CloudFormation
You can use AWS CloudFormation’s sample templates or create your own templates to describe the AWS resources, and any associated dependencies or runtime parameters, required to run your application. You don’t need to figure out the order in which AWS services need to be provisioned or the subtleties of how to make those dependencies work. ...
- Terraform
With Terraform, you describe your complete infrastructure as code, even as it spans multiple service providers. Your servers may come from AWS, your DNS may come from CloudFlare, and your database may come from Heroku. Terraform will build all these resources across all these providers in parallel. ...
- PowerShell
A command-line shell and scripting language built on .NET. Helps system administrators and power-users rapidly automate tasks that manage operating systems (Linux, macOS, and Windows) and processes. ...
- Chef
Chef enables you to manage and scale cloud infrastructure with no downtime or interruptions. Freely move applications and configurations from one cloud to another. Chef is integrated with all major cloud providers including Amazon EC2, VMWare, IBM Smartcloud, Rackspace, OpenStack, Windows Azure, HP Cloud, Google Compute Engine, Joyent Cloud and others. ...
- Kubernetes
Kubernetes is an open source orchestration system for Docker containers. It handles scheduling onto nodes in a compute cluster and actively manages workloads to ensure that their state matches the users declared intentions. ...
- Packer
Packer automates the creation of any type of machine image. It embraces modern configuration management by encouraging you to use automated scripts to install and configure the software within your Packer-made images. ...
- Pulumi
Pulumi is a cloud development platform that makes creating cloud programs easy and productive. Skip the YAML and just write code. Pulumi is multi-language, multi-cloud and fully extensible in both its engine and ecosystem of packages. ...
- AWS Cloud Development Kit
It is an open source software development framework to model and provision your cloud application resources using familiar programming languages. It uses the familiarity and expressive power of programming languages for modeling your applications. It provides you with high-level components that preconfigure cloud resources with proven defaults, so you can build cloud applications without needing to be an expert. ...
Azure Resource Manager alternatives & related posts
- Automates infrastructure deployments43
- Declarative infrastructure and deployment21
- No more clicking around13
- Any Operative System you want3
- Atomic3
- Infrastructure as code3
- CDK makes it truly infrastructure-as-code1
- Automates Infrastructure Deployment1
- K8s0
- Brittle4
- No RBAC and policies in templates2
related AWS CloudFormation posts
We use Terraform because we needed a way to automate the process of building and deploying feature branches. We wanted to hide the complexity such that when a dev creates a PR, it triggers a build and deployment without the dev having to worry about any of the 'plumbing' going on behind the scenes. Terraform allows us to automate the process of provisioning DNS records, Amazon S3 buckets, Amazon EC2 instances and AWS Elastic Load Balancing (ELB)'s. It also makes it easy to tear it all down when finished. We also like that it supports multiple clouds, which is why we chose to use it over AWS CloudFormation.
I use Terraform because it hits the level of abstraction pocket of being high-level and flexible, and is agnostic to cloud platforms. Creating complex infrastructure components for a solution with a UI console is tedious to repeat. Using low-level APIs are usually specific to cloud platforms, and you still have to build your own tooling for deploying, state management, and destroying infrastructure.
However, Terraform is usually slower to implement new services compared to cloud-specific APIs. It's worth the trade-off though, especially if you're multi-cloud. I heard someone say, "We want to preference a cloud, not lock in to one." Terraform builds on that claim.
Terraform Google Cloud Deployment Manager AWS CloudFormation
Terraform
- Infrastructure as code122
- Declarative syntax73
- Planning45
- Simple28
- Parallelism24
- Well-documented8
- Cloud agnostic8
- It's like coding your infrastructure in simple English6
- Immutable infrastructure6
- Platform agnostic5
- Extendable4
- Automation4
- Automates infrastructure deployments4
- Portability4
- Lightweight2
- Scales to hundreds of hosts2
- Doesn't have full support to GKE1
related Terraform posts
We recently moved our main applications from Heroku to Kubernetes . The 3 main driving factors behind the switch were scalability (database size limits), security (the inability to set up PostgreSQL instances in private networks), and costs (GCP is cheaper for raw computing resources).
We prefer using managed services, so we are using Google Kubernetes Engine with Google Cloud SQL for PostgreSQL for our PostgreSQL databases and Google Cloud Memorystore for Redis . For our CI/CD pipeline, we are using CircleCI and Google Cloud Build to deploy applications managed with Helm . The new infrastructure is managed with Terraform .
Read the blog post to go more in depth.
We are in the process of building a modern content platform to deliver our content through various channels. We decided to go with Microservices architecture as we wanted scale. Microservice architecture style is an approach to developing an application as a suite of small independently deployable services built around specific business capabilities. You can gain modularity, extensive parallelism and cost-effective scaling by deploying services across many distributed servers. Microservices modularity facilitates independent updates/deployments, and helps to avoid single point of failure, which can help prevent large-scale outages. We also decided to use Event Driven Architecture pattern which is a popular distributed asynchronous architecture pattern used to produce highly scalable applications. The event-driven architecture is made up of highly decoupled, single-purpose event processing components that asynchronously receive and process events.
To build our #Backend capabilities we decided to use the following: 1. #Microservices - Java with Spring Boot , Node.js with ExpressJS and Python with Flask 2. #Eventsourcingframework - Amazon Kinesis , Amazon Kinesis Firehose , Amazon SNS , Amazon SQS, AWS Lambda 3. #Data - Amazon RDS , Amazon DynamoDB , Amazon S3 , MongoDB Atlas
To build #Webapps we decided to use Angular 2 with RxJS
#Devops - GitHub , Travis CI , Terraform , Docker , Serverless
related PowerShell posts
I currently work helpdesk and have been for about 6 years. I am looking to become more valuable, and I can't decide what route to take? Python is of interest, and so is PowerShell. What are some recommendations? Maybe something that would benefit a helpdesk position or even get into a network administrator.
Objective: I am trying to build a custom service that will create VMs in Azure, based on inputs taken from a web interface. I want the backend code that interacts with Azure to be PowerShell.
Ask: Hoping to find help with deciding the simplest architecture of tools to achieve this.
What I have so far with my Limited Knowledge: I am new to Azure and Jenkins. I arrived at Jenkins coz it can run PowerShell and has API that can be called to trigger a job. Although integrating with it over the web seems problematic since its on-prem network. I hear it is possible using the VPN. For the Web, I hope to use Azure Web App with Python/Node.js that I can manage to make API calls to Jenkins.
Is there a better way? I just need help getting the right directions; I will walk the way.
- Dynamic and idempotent server configuration110
- Reusable components76
- Integration testing with Vagrant47
- Repeatable43
- Mock testing with Chefspec30
- Ruby14
- Can package cookbooks to guarantee repeatability8
- Works with AWS7
- Has marketplace where you get readymade cookbooks3
- Matured product with good community support3
- Less declarative more procedural2
- Open source configuration mgmt made easy(ish)2
related Chef posts
In late 2013, the Operations Engineering team at PagerDuty was made up of 4 engineers, and was comprised of generalists, each of whom had one or two areas of depth. Although the Operations Team ran its own on-call, each engineering team at PagerDuty also participated on the pager.
The Operations Engineering Team owned 150+ servers spanning multiple cloud providers, and used Chef to automate their infrastructure across the various cloud providers with a mix of completely custom cookbooks and customized community cookbooks.
Custom cookbooks were managed by Berkshelf, andach custom cookbook contained its own tests based on ChefSpec 3, coupled with Rspec.
Jenkins was used to GitHub for new changes and to handle unit testing of those features.
Since #ATComputing is a vendor independent Linux and open source specialist, we do not have a favorite Linux distribution. We mainly use Ubuntu , Centos Debian , Red Hat Enterprise Linux and Fedora during our daily work. These are also the distributions we see most often used in our customers environments.
For our #ci/cd training, we use an open source pipeline that is build around Visual Studio Code , Jenkins , VirtualBox , GitHub , Docker Kubernetes and Google Compute Engine.
For #ServerConfigurationAndAutomation, we have embraced and contributed to Ansible mainly because it is not only flexible and powerful, but also straightforward and easier to learn than some other (open source) solutions. On the other hand: we are not affraid of Puppet Labs and Chef either.
Currently, our most popular #programming #Language course is Python . The reason Python is so popular has to do with it's versatility, but also with its low complexity. This helps sysadmins to write scripts or simple programs to make their job less repetitive and automating things more fun. Python is also widely used to communicate with (REST) API's and for data analysis.
Kubernetes
- Leading docker container management solution164
- Simple and powerful128
- Open source106
- Backed by google76
- The right abstractions58
- Scale services25
- Replication controller20
- Permission managment11
- Supports autoscaling9
- Cheap8
- Simple8
- Self-healing6
- No cloud platform lock-in5
- Promotes modern/good infrascture practice5
- Open, powerful, stable5
- Reliable5
- Scalable4
- Quick cloud setup4
- Cloud Agnostic3
- Captain of Container Ship3
- A self healing environment with rich metadata3
- Runs on azure3
- Backed by Red Hat3
- Custom and extensibility3
- Sfg2
- Gke2
- Everything of CaaS2
- Golang2
- Easy setup2
- Expandable2
- Steep learning curve16
- Poor workflow for development15
- Orchestrates only infrastructure8
- High resource requirements for on-prem clusters4
- Too heavy for simple systems2
- Additional vendor lock-in (Docker)1
- More moving parts to secure1
- Additional Technology Overhead1
related Kubernetes posts
How Uber developed the open source, end-to-end distributed tracing Jaeger , now a CNCF project:
Distributed tracing is quickly becoming a must-have component in the tools that organizations use to monitor their complex, microservice-based architectures. At Uber, our open source distributed tracing system Jaeger saw large-scale internal adoption throughout 2016, integrated into hundreds of microservices and now recording thousands of traces every second.
Here is the story of how we got here, from investigating off-the-shelf solutions like Zipkin, to why we switched from pull to push architecture, and how distributed tracing will continue to evolve:
https://eng.uber.com/distributed-tracing/
(GitHub Pages : https://www.jaegertracing.io/, GitHub: https://github.com/jaegertracing/jaeger)
Bindings/Operator: Python Java Node.js Go C++ Kubernetes JavaScript OpenShift C# Apache Spark
Our first experience with .NET core was when we developed our OSS feature management platform - Tweek (https://github.com/soluto/tweek). We wanted to create a solution that is able to run anywhere (super important for OSS), has excellent performance characteristics and can fit in a multi-container architecture. We decided to implement our rule engine processor in F# , our main service was implemented in C# and other components were built using JavaScript / TypeScript and Go.
Visual Studio Code worked really well for us as well, it worked well with all our polyglot services and the .Net core integration had great cross-platform developer experience (to be fair, F# was a bit trickier) - actually, each of our team members used a different OS (Ubuntu, macos, windows). Our production deployment ran for a time on Docker Swarm until we've decided to adopt Kubernetes with almost seamless migration process.
After our positive experience of running .Net core workloads in containers and developing Tweek's .Net services on non-windows machines, C# had gained back some of its popularity (originally lost to Node.js), and other teams have been using it for developing microservices, k8s sidecars (like https://github.com/Soluto/airbag), cli tools, serverless functions and other projects...
Packer
- Cross platform builds27
- Vm creation automation9
- Bake in security4
- Good documentation1
- Easy to use1
related Packer posts
LaunchDarkly is almost a five year old company, and our methodology for deploying was state of the art... for 2014. We recently undertook a project to modernize the way we #deploy our software, moving from Ansible-based deploy scripts that executed on our local machines, to using Spinnaker (along with Terraform and Packer) as the basis of our deployment system. We've been using Armory's enterprise Spinnaker offering to make this project a reality.
- Infrastructure as code with less pain8
- Best-in-class kubernetes support4
- Simple3
- Can use many languages3
- Great CLI2
- Can be self-hosted2
- Multi-cloud2
- Built-in secret management1