Summary After you write your application, you need a way to make it available to your users. These days, that usually means deploying it to a cloud provider, whether that’s a virtual server, a serverless platform, or a Kubernetes cluster. To manage the increasingly dynamic and flexible options for running software in production, we have turned to building infrastructure as code. Pulumi is an open source framework that lets you use your favorite language to build scalable and maintainable systems out of cloud infrastructure. In this episode Luke Hoban, CTO of Pulumi, explains how it differs from other frameworks for interacting with infrastructure platforms, the benefits of using a full programming language for treating infrastructure as code, and how you can get started with it today. If you are getting frustrated with switching contexts when working between the application you are building and the systems that it runs on, then listen now and then give Pulumi a try. Announcements Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great. When you’re ready to launch your next app or want to try a project you hear about on the show, you’ll need somewhere to deploy it, so take a look at our friends over at Linode. With 200 Gbit/s private networking, node balancers, a 40 Gbit/s public network, fast object storage, and a brand new managed Kubernetes platform, all controlled by a convenient API you’ve got everything you need to scale up. And for your tasks that need fast computation, such as training machine learning models, they’ve got dedicated CPU and GPU instances. Go to pythonpodcast.com/linode to get a $20 credit and launch a new server in under a minute. And don’t forget to thank them for their continued support of this show! You monitor your website to make sure that you’re the first to know when something goes wrong, but what about your data? Tidy Data is the DataOps monitoring platform that you’ve been missing. With real time alerts for problems in your databases, ETL pipelines, or data warehouse, and integrations with Slack, Pagerduty, and custom webhooks you can fix the errors before they become a problem. Go to pythonpodcast.com/tidydata today and get started for free with no credit card required. Your host as usual is Tobias Macey and today I’m interviewing Luke Hoban about building and maintaining infrastructure as code with Pulumi Interview Introductions How did you get introduced to Python? Can you start by describing the concept of "infrastructure as code"? What is Pulumi and what is the story behind it? Where does the name come from? How does Pulumi compare to other infrastructure as code frameworks, such as Terraform? What are some of the common challenges in managing infrastructure as code? How does use of a full programming language help in addressing those challenges? What are some of the dangers of using a full language to manage infrastructure? How does Pulumi work to avoid those dangers? Why is maintaining a record of the provisioned state of your infrastructure necessary, as opposed to relying on the state contained by the infrastructure provider? What are some of the design principles and constraints that developers should be considering as they architect their infrastructure with Pulumi? Can you describe how Pulumi is implemented? How does Pulumi manage support for multiple languages while maintaining feature parity across them? How do you manage testing and validation of the different providers? The strength of any tool is largely measured in the ecosystem that exists around it, which is one of the reasons that Terraform has been so successful. How are you approaching the problem of bootstrapping the community and prioritizing platform support? Can you talk through the workflow of working with Pulumi to build and maintain a proper infrastructure? What are some of the ways to approach testing of infrastructure code? What does the CI/CD lifecycle for infrastructure look like? What are the limitations of infrastructure as code? How do configuration management tools fit with frameworks such as Pulumi? The core framework of Pulumi is open source, and your business model is focused around a managed platform for tracking state. How are you approaching governance of the project to ensure its continued viability and growth? What are some of the most interesting, innovative, or unexpected design patterns that you have seen your users include in their infrastructure projects? When is Pulumi the wrong choice? What do you have planned for the future of Pulumi? Keep In Touch LinkedIn lukehoban on GitHub @lukehoban on Twitter Picks Tobias Bookshelf App Luke GoBinaries.com Closing Announcements Thank you for listening! Don’t forget to check out our other show, the Data Engineering Podcast for the latest on modern data management. Visit the site to subscribe to the show, sign up for the mailing list, and read the show notes. If you’ve learned something or tried out a project from the show then tell us about it! Email hosts@podcastinit.com) with your story. To help other people find the show please leave a review on iTunes and tell your friends and co-workers Join the community in the new Zulip chat workspace at pythonpodcast.com/chat Links Pulumi Terraform IronPython HCL == Hashicorp Config Language Kubernetes TypeScript DevOps CloudFormation ARM == Azure Resource Manager AWSx GCP == Google Cloud Platform Pulumi SaaS SaltStack Podcast Episode Ansible Elastic Beanstalk The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA