<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Pulumi: Modern Infrastructure as Code on Dev &amp; Platform Engineering Hub</title><link>https://rhidayat.work/series/pulumi/</link><description>Recent content in Pulumi: Modern Infrastructure as Code on Dev &amp; Platform Engineering Hub</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© 2026 Rachmat Hidayat</copyright><lastBuildDate>Sun, 09 Aug 2026 16:40:00 +0000</lastBuildDate><atom:link href="https://rhidayat.work/series/pulumi/index.xml" rel="self" type="application/rss+xml"/><item><title>Pulumi Ep 15: Multi-Language Components (MLC)</title><link>https://rhidayat.work/series/pulumi/advanced/15-multi-language-components/</link><pubDate>Sun, 09 Aug 2026 16:40:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/advanced/15-multi-language-components/</guid><description>In Episode 7, we built a reusable TypeScript ComponentResource. But what if the Data Science team wants to use your component in their Python IaC? Historically, they couldn&amp;rsquo;t. Pulumi Multi-Language Components (MLC) solves this by using gRPC to project your TypeScript code across all supported languages.</description></item><item><title>Pulumi Ep 14: Policy as Code with CrossGuard</title><link>https://rhidayat.work/series/pulumi/advanced/14-policy-as-code-with-crossguard/</link><pubDate>Sun, 09 Aug 2026 16:30:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/advanced/14-policy-as-code-with-crossguard/</guid><description>In Terraform, enforcing security rules requires external tools like OPA (Open Policy Agent) and Rego. Pulumi provides a native Policy-as-Code engine called CrossGuard. In this episode, we will write TypeScript policies that act as a strict firewall, preventing developers from provisioning insecure infrastructure.</description></item><item><title>Pulumi Ep 13: Unit Testing Infrastructure (Jest)</title><link>https://rhidayat.work/series/pulumi/advanced/13-unit-testing-infrastructure/</link><pubDate>Sun, 09 Aug 2026 16:20:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/advanced/13-unit-testing-infrastructure/</guid><description>Testing infrastructure usually means deploying it to a sandbox, waiting 15 minutes, running a bash script to ping an IP, and tearing it down. Because Pulumi is TypeScript, we can use the industry-standard Jest testing framework to write offline, millisecond unit tests to validate our infrastructure logic &lt;em&gt;before&lt;/em&gt; we ever touch the cloud.</description></item><item><title>Pulumi Ep 12: Authoring Dynamic Providers</title><link>https://rhidayat.work/series/pulumi/advanced/12-dynamic-providers/</link><pubDate>Sun, 09 Aug 2026 16:10:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/advanced/12-dynamic-providers/</guid><description>What happens when you need to provision a resource in a system that doesn&amp;rsquo;t have an official Pulumi plugin? In Terraform, you must write complex Go code, compile a binary, and distribute it. In Pulumi, you can author a Dynamic Provider directly in your &lt;code&gt;index.ts&lt;/code&gt; file using pure TypeScript.</description></item><item><title>Pulumi Ep 11: The Automation API (Embedded Pulumi)</title><link>https://rhidayat.work/series/pulumi/advanced/11-automation-api/</link><pubDate>Sun, 09 Aug 2026 16:00:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/advanced/11-automation-api/</guid><description>Running &lt;code&gt;pulumi up&lt;/code&gt; from a CLI is great for Platform Engineers, but what if you want to build a self-service Internal Developer Portal (IDP) where developers click a button on a web page to provision a database? The Pulumi Automation API allows you to embed the entire Pulumi Engine inside your own Node.js, Python, or Go applications.</description></item><item><title>Pulumi Ep 10: Using Native Providers (AWS Classic vs AWS Native)</title><link>https://rhidayat.work/series/pulumi/intermediate/10-using-native-providers/</link><pubDate>Sun, 09 Aug 2026 15:40:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/intermediate/10-using-native-providers/</guid><description>Did you know that the &lt;code&gt;@pulumi/aws&lt;/code&gt; package you have been using is actually built on top of Terraform? In this final intermediate episode, we explore the difference between &amp;lsquo;Bridged&amp;rsquo; providers and &amp;lsquo;Native&amp;rsquo; providers, and learn how &lt;code&gt;@pulumi/aws-native&lt;/code&gt; directly communicates with the AWS Cloud Control API.</description></item><item><title>Pulumi Ep 9: Pulumi Packages and the Registry</title><link>https://rhidayat.work/series/pulumi/intermediate/09-pulumi-packages-and-registry/</link><pubDate>Sun, 09 Aug 2026 15:30:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/intermediate/09-pulumi-packages-and-registry/</guid><description>Platform Engineering is rarely confined to a single cloud. You often need to provision AWS servers, configure GitHub repositories, and set up DataDog dashboards simultaneously. In this episode, we learn how to leverage the Pulumi Registry to install third-party Providers and orchestrate multi-cloud deployments from a single TypeScript file.</description></item><item><title>Pulumi Ep 8: Cross-Stack References (Micro-Stacks)</title><link>https://rhidayat.work/series/pulumi/intermediate/08-cross-stack-references/</link><pubDate>Sun, 09 Aug 2026 15:20:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/intermediate/08-cross-stack-references/</guid><description>Deploying your entire infrastructure (Networking, Databases, Kubernetes, and Frontend) in a single Pulumi stack is dangerous. A tiny typo in an S3 bucket configuration could accidentally trigger the destruction of your VPC. In this episode, we learn how to architect Micro-Stacks and stitch them together using StackReference.</description></item><item><title>Pulumi Ep 7: Abstraction with ComponentResources</title><link>https://rhidayat.work/series/pulumi/intermediate/07-abstraction-with-componentresources/</link><pubDate>Sun, 09 Aug 2026 15:10:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/intermediate/07-abstraction-with-componentresources/</guid><description>Terraform relies on Modules for abstraction, which are essentially isolated directories of HCL files. Pulumi takes a much more elegant approach. Because we are using a real programming language, we can abstract complex architectures into reusable TypeScript Classes called ComponentResources.</description></item><item><title>Pulumi Ep 6: Loops and Conditional Infrastructure</title><link>https://rhidayat.work/series/pulumi/intermediate/06-loops-and-conditional-infrastructure/</link><pubDate>Sun, 09 Aug 2026 15:00:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/intermediate/06-loops-and-conditional-infrastructure/</guid><description>Welcome to the Intermediate Tier. The true advantage of using a general-purpose programming language for IaC is access to native control flow. In this episode, we will dynamically generate Subnets and Security Group rules using native array mapping and conditional logic based on environment flags.</description></item><item><title>Pulumi Ep 5: Inputs, Outputs, and Promises (The Asynchronous Conundrum)</title><link>https://rhidayat.work/series/pulumi/fundamental/05-inputs-outputs-and-promises/</link><pubDate>Sun, 09 Aug 2026 14:50:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/fundamental/05-inputs-outputs-and-promises/</guid><description>When you write standard TypeScript, data is computed immediately. But in Pulumi, when you request an EC2 instance&amp;rsquo;s IP address, the IP does not exist until AWS physically boots the server. This introduces temporal paradoxes. In this final fundamental episode, we master Inputs, Outputs, and how to safely manipulate asynchronous infrastructure data.</description></item><item><title>Pulumi Ep 4: Configuration and Secrets Management</title><link>https://rhidayat.work/series/pulumi/fundamental/04-configuration-and-secrets/</link><pubDate>Sun, 09 Aug 2026 14:40:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/fundamental/04-configuration-and-secrets/</guid><description>Hardcoding values like instance sizes and database passwords into your TypeScript code is a severe anti-pattern. In this episode, we learn how to decouple configuration from code using the Pulumi Config system, allowing the exact same codebase to deploy vastly different Staging and Production architectures.</description></item><item><title>Pulumi Ep 3: Declaring Resources in TypeScript</title><link>https://rhidayat.work/series/pulumi/fundamental/03-declaring-resources-in-typescript/</link><pubDate>Sun, 09 Aug 2026 14:30:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/fundamental/03-declaring-resources-in-typescript/</guid><description>In Terraform, you write declarative configuration blocks. In Pulumi, you instantiate Object-Oriented classes. This episode explores how to declare complex resources like an AWS VPC, Security Group, and EC2 instance using pure TypeScript, while leveraging your IDE&amp;rsquo;s IntelliSense for maximum productivity.</description></item><item><title>Pulumi Ep 2: Stacks and State Management</title><link>https://rhidayat.work/series/pulumi/fundamental/02-stacks-and-state/</link><pubDate>Sun, 09 Aug 2026 14:20:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/fundamental/02-stacks-and-state/</guid><description>Managing state files in Terraform is notoriously difficult, requiring external buckets and DynamoDB locks. Pulumi solves this out-of-the-box using the Pulumi Service. In this episode, we explore how State is managed, and how to use Stacks to deploy identical infrastructure to Staging and Production environments safely.</description></item><item><title>Pulumi Ep 1: Introduction to Pulumi and Project Initialization</title><link>https://rhidayat.work/series/pulumi/fundamental/01-introduction-to-pulumi/</link><pubDate>Sun, 09 Aug 2026 14:10:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/fundamental/01-introduction-to-pulumi/</guid><description>It is time to leave YAML behind. In this episode, we will install the Pulumi CLI, scaffold a brand new TypeScript project, and understand the anatomy of the generated files. You will learn how Pulumi securely integrates with your cloud provider credentials.</description></item><item><title>Pulumi: Modern Infrastructure as Code</title><link>https://rhidayat.work/series/pulumi/</link><pubDate>Sun, 09 Aug 2026 14:00:00 +0000</pubDate><guid>https://rhidayat.work/series/pulumi/</guid><description>Why learn a proprietary configuration language like HCL when you already know TypeScript, Python, or Go? Pulumi revolutionizes Platform Engineering by allowing you to write Infrastructure as Code using the full power of general-purpose programming languages. This series takes you from your first Pulumi project to advanced Automation API usage.</description></item></channel></rss>