Infrastructure as “Code” with
Pulumi
Venura Athukorala [@venura9]

Practice Lead - Azure @AC3
Agenda
• What?

• Basics and CLI

• Code

• Automate
What is Git-flow?
What is IaC?
Infrastructure Definition
Dev
Prod
Git Git-flow Orchestration Infra
What is Pulumi?
• Modern infrastructure as code platform.

• CLI, runtime, libraries, and a hosted service

• TypeScript, JavaScript, Python, Go,
and .NET, and their native tools, libraries,
and package managers.
What programming languages?
• Node.js - JavaScript, TypeScript, or any other Node.js compatible
language

• Python - Python 3.6 or greater

• .NET Core - C#, F#, and Visual Basic on .NET Core 3.1 or greater

• Go - statically compiled Go binaries
What providers?
https://www.pulumi.com/docs/intro/cloud-providers/
What about others?
Frequency of
Update
Community
Infrastructure
Size
Tooling
E.g., Error,
Logging,
Extras
State
Management
Stack
Management
Modularisatio
n
Language
ARM Highest Highest
Small-Medium

Medium Yes No Moderate JSON
Terraform Medium High Any High Yes Yes Easy HCL
API Highest Low Small Low Custom Custom Easy Any
SDK High Low Any Low Custom Custom Easy Many
Pulumi Medium Low Any High Yes Yes Easy Many
CLI Highest High Small Medium No Custom Easy PS/Shell
Getting Started
# Install on macos
$ brew install pulumi
# Install on linux
$ curl -fsSL https://get.pulumi.com | sh
# Install Python
$ brew install python
# Pulumi uses `az` when not using a Service Principal
$ az login
$ az account set --subscription “venura9”
https://www.pulumi.com/docs/get-started/
# New Project
$ pulumi new azure-python
–Murphy's law
“Anything that can go wrong will go wrong”
–Anonymous
“Enough Slides!”
Thank you!

Infrastructure as "Code" with Pulumi

  • 1.
    Infrastructure as “Code”with Pulumi Venura Athukorala [@venura9] Practice Lead - Azure @AC3
  • 2.
    Agenda • What? • Basicsand CLI • Code • Automate
  • 3.
  • 4.
    What is IaC? InfrastructureDefinition Dev Prod Git Git-flow Orchestration Infra
  • 5.
    What is Pulumi? •Modern infrastructure as code platform. • CLI, runtime, libraries, and a hosted service • TypeScript, JavaScript, Python, Go, and .NET, and their native tools, libraries, and package managers.
  • 6.
    What programming languages? •Node.js - JavaScript, TypeScript, or any other Node.js compatible language • Python - Python 3.6 or greater • .NET Core - C#, F#, and Visual Basic on .NET Core 3.1 or greater • Go - statically compiled Go binaries
  • 7.
  • 8.
    What about others? Frequencyof Update Community Infrastructure Size Tooling E.g., Error, Logging, Extras State Management Stack Management Modularisatio n Language ARM Highest Highest Small-Medium Medium Yes No Moderate JSON Terraform Medium High Any High Yes Yes Easy HCL API Highest Low Small Low Custom Custom Easy Any SDK High Low Any Low Custom Custom Easy Many Pulumi Medium Low Any High Yes Yes Easy Many CLI Highest High Small Medium No Custom Easy PS/Shell
  • 9.
    Getting Started # Installon macos $ brew install pulumi # Install on linux $ curl -fsSL https://get.pulumi.com | sh # Install Python $ brew install python # Pulumi uses `az` when not using a Service Principal $ az login $ az account set --subscription “venura9” https://www.pulumi.com/docs/get-started/ # New Project $ pulumi new azure-python
  • 10.
    –Murphy's law “Anything thatcan go wrong will go wrong”
  • 11.
  • 12.