Book a
Consultation

Book a
Consultation

The Advancement of Infrastructure Management: From Manual Builds to Azure Bicep

Dustin-Lee Duxbury
,

As I reflect on my 18 years in IT, I can't help but laugh at the memory of countless hours spent building servers for customers.

Defocused shot of people standing in the background of an office environment

Armed with nothing but a checklist and an endless amount of coffee, I'd meticulously install disks, CPUs, Memory, and rack servers, often repeating this process hundreds of times for a single deployment. Those were the days when infrastructure management was a true test of patience and attention to detail.

I vividly remember the anxiety of wondering if I'd missed a crucial step on my checklist, knowing that a single oversight could lead to inconsistencies across what should have been identical builds.

It wasn't uncommon to find yourself troubleshooting issues caused by these minor discrepancies weeks or even months down the line.

But times have changed and working with a Managed Service Provider (MSP), I've had a front-row seat to the evolution of infrastructure management. Today, I'm excited to introduce what I think is the future of this field, Azure Bicep.

Microsoft’s Infrastructure as Code (IaC) tool is set to (or already has in some cases) transform how we approach cloud resources, and I can’t wait to share with you how it addresses the pain points of the past and opens new possibilities for efficient, scalable infrastructure management.

The Old Way, Manual Infrastructure and Its Pain Points

In the not-so-distant past, infrastructure management was a time-consuming and error-prone process which involved:

  1. Manual Installation: Each server required individual attention, from hardware assembly to software configuration.
  2. Inconsistent Builds: Human error led to variations between supposedly identical servers.
  3. Time-Intensive efforts: Scaling infrastructure meant multiplying the time and effort required.
  4. Limited Documentation: Configuration details often existed only as memories in the minds of the engineers who built the systems. As they raced through builds, steps were easily forgotten or altered, resulting in documentation that was rarely an accurate reflection of the final configuration. This "mental documentation" leads to a precarious situation where critical system knowledge could walk out the door with a single employee.
  5. Difficult Updates: Changing configurations across multiple servers was a logistical nightmare.

The Rise of Infrastructure as Code (IaC)

Enter Infrastructure as Code (IaC). While adoption rates are gradual, it promises to be a paradigm shift that addresses these pain points:

  1. Consistency: Identical configurations across all deployments.
  2. Speed: Rapid deployment and scaling of infrastructure.
  3. Version Control: Infrastructure configurations can be tracked and rolled back if needed.
  4. Documentation: The code itself serves as living documentation of the infrastructure.
  5. Automation: Reduces human error and frees up valuable time for innovation.

But we already automate using scripts.

While scripting technologies like PowerShell marked a significant step forward from purely manual processes, they still have their limitations.

Engineers often create snippets of scripts to automate parts of the infrastructure deployment process, but this approach is far from perfect. These scripts typically require numerous manual steps to execute, and their effectiveness heavily depends on the logic and foresight of the person writing them.

Moreover, these scripts are often non-idempotent, meaning that running them multiple times could produce inconsistent or unexpected results. The outcome of a script might vary based on the current state of the system, leading to potential errors or unintended changes when rerun.

This is where declarative Infrastructure as Code (IaC) tools like Azure Bicep come into play. They offer a more robust, reliable, and truly idempotent solution. With Bicep, you define the desired end-state of your infrastructure, and the tool ensures that state is achieved consistently, regardless of how many times the code is run. This approach eliminates the unpredictability of script-based automation and provides a more comprehensive and dependable method for managing infrastructure.

Why you need Azure Bicep

Azure Bicep is a domain-specific language (DSL) that uses declarative syntax to deploy Azure resources. It takes the benefits of IaC to the next level, specifically for Azure environments.

Bicep offers:

  1. Simplified Syntax: More readable and maintainable than JSON ARM templates, with concise syntax that requires no previous programming knowledge.
  2. Strong Typing: Catches errors before deployment, ensuring more reliable infrastructure. The Bicep Extension for VS Code provides rich type-safety, IntelliSense, and syntax validation.
  3. Modularity: Enables creation of reusable components for common patterns, allowing you to break your code into manageable parts.
  4. Azure-Native: Seamlessly integrates with Azure Resource Manager, offering immediate support for all preview and GA versions of Azure services.
  5. Idempotent Deployments: Ensures consistent results when deploying the same file multiple times, maintaining the desired state of resources.
  6. Orchestration: Handles the complexities of ordering operations, with Resource Manager deploying interdependent resources in the correct order and in parallel when possible.

Adopting Azure Bicep: A Two-Year Journey

Transitioning to Azure Bicep is a process, but one that pays dividends in efficiency and reliability.

Here's an example timeline for adoption:

  1. Months 1-3, Assessment and Planning
    1. Review existing cloud resources
    2. Identify critical infrastructure components
    3. Develop a roadmap for Bicep implementation
  2. Months 4-6, Initial Implementation
    1. Create Bicep templates for existing deployments
    2. Set up version control for infrastructure code
    3. Implement basic CI/CD pipelines for Bicep deployments
  3. Months 7-12, Expansion and Refinement
    1. Extend Bicep coverage to more complex resources
    2. Develop modular components for common patterns
    3. Integrate approval processes for infrastructure changes
  4. Year 2, Advanced Implementation and Optimisation
    1. Transition to "infrastructure-through-code-only" approach
    2. Implement advanced pipeline features (e.g., automated testing)
    3. Develop a library of reusable Bicep modules
    4. Continual refinement and optimisation of Bicep templates

Bicep Deployment Comparison

Compared to traditional deployment methods, Bicep offers several advantages:

  1. Preview Changes: Use the what-if operation to get a preview of changes before deployment, allowing you to see which resources will be created, updated, or deleted.
  2. No State Management: All state is stored in Azure, eliminating the need to manage state files and facilitating collaboration.
  3. Integration with Azure Services: Bicep works seamlessly with Azure Policy, template specs, and Blueprints.
  4. Cost-Effective and Open Source: Bicep is completely free and supported by Microsoft, with no premium features to pay for.

How Wanstor Can Help: Your Partner in IaC Implementation

As your MSP, we're here to guide you through every step of this journey:

  1. Assessment: We'll evaluate your current infrastructure and develop a tailored Bicep adoption plan.
  2. Training: Our experts will train your team on Bicep syntax and best practices.
  3. Implementation: We'll assist in creating initial Bicep templates and setting up CI/CD pipelines.
  4. Optimisation: Ongoing support to refine your Bicep implementations and create reusable modules.
  5. Maintenance: Regular reviews and updates to ensure your infrastructure remains efficient and secure.
  6. Azure Integration: We'll help you leverage Bicep's integration with Azure services like Azure Policy and Blueprints to enhance your governance and compliance posture.

Conclusion

The transition from manual infrastructure management to Azure Bicep represents more than just a technological shift, it's a transformation in how we approach cloud resources. By embracing IaC and specifically Azure Bicep, you're not just streamlining your operations; you're future proofing your infrastructure.

With Azure Bicep, you gain consistency, speed, and reliability in your Azure deployments. You empower your team to manage infrastructure with the same rigor and best practices applied to application code. And most importantly, you free up valuable time and resources to focus on what really matters, innovating and growing your business.

As your trusted MSP, we're excited to embark on this journey with you. Together, we'll leverage Azure Bicep to build a more efficient, scalable, and manageable cloud infrastructure.

The future of infrastructure management is here. Are you ready to embrace it?