<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0"><channel><title>Pulumi Blog: Derek Schaller</title><link>https://www.pulumi.com/blog/author/derek-schaller/</link><description>Pulumi blog posts: Derek Schaller.</description><language>en-us</language><pubDate>Fri, 14 Mar 2025 00:00:00 +0000</pubDate><item><title>Pulumi + Gitlab: Better Than Ever</title><link>https://www.pulumi.com/blog/gitlab-better-than-ever/</link><pubDate>Fri, 14 Mar 2025 00:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/gitlab-better-than-ever/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/gitlab-better-than-ever/index.png" /&gt;
&lt;p&gt;Pulumi&amp;rsquo;s integration with GitLab has reached new heights with enhancements designed to streamline your infrastructure as code workflows. Today, we&amp;rsquo;re excited to announce several significant improvements to our GitLab integration that make managing cloud infrastructure with Pulumi and GitLab more seamless than ever before: GitLab as a first-class VCS in Pulumi Cloud, enhanced merge request comments, organizational templates in GitLab, and later this year, Pulumi Deployments for GitLab.&lt;/p&gt;
&lt;p&gt;Pulumi and GitLab have long enjoyed a productive partnership. From supporting GitLab sign-in to enabling GitLab CI/CD pipelines for infrastructure deployments, we&amp;rsquo;ve consistently worked to ensure GitLab users can leverage Pulumi&amp;rsquo;s powerful infrastructure as code capabilities within their existing workflows.&lt;/p&gt;
&lt;p&gt;Our GitLab Merge Request integration allows teams to visualize infrastructure changes directly within merge requests, making code reviews more effective and infrastructure changes more transparent.&lt;/p&gt;
&lt;h2 id="whats-new-in-our-gitlab-integration"&gt;What&amp;rsquo;s New in Our GitLab Integration&lt;/h2&gt;
&lt;h3 id="enhanced-merge-request-comments"&gt;Enhanced Merge Request Comments&lt;/h3&gt;
&lt;p&gt;We&amp;rsquo;ve revamped how Pulumi interacts with GitLab by building a Gitlab application to handle the authentication. Previously, only customers using Gitlab as an identity provider to Pulumi Cloud could leverage it. Now, Pulumi provides even more detailed and actionable comments on your merge requests, giving reviewers comprehensive insights into proposed infrastructure changes.&lt;/p&gt;
&lt;p&gt;These comments include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Streamlined discoverability of infrastructure changes&lt;/li&gt;
&lt;li&gt;Resource-by-resource breakdown of changes&lt;/li&gt;
&lt;li&gt;Direct links to the Pulumi Console for deeper analysis&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="diff-comment.png" alt="Enhanced GitLab Merge Request Comments"&gt;&lt;/p&gt;
&lt;p&gt;To configure the GitLab integration:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Organization Settings → Integrations&lt;/strong&gt; in Pulumi Cloud&lt;/li&gt;
&lt;li&gt;Select GitLab and enter your access token&lt;/li&gt;
&lt;li&gt;Choose which projects or groups should receive Pulumi comments&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="gitlab-as-a-first-class-vcs-in-pulumi-cloud"&gt;GitLab as a First-Class VCS in Pulumi Cloud&lt;/h3&gt;
&lt;p&gt;Version control systems are a first-class, configurable concept in Pulumi Cloud. When you select GitLab as your VCS, the Pulumi Cloud interface adapts to show only relevant options and terminology, creating a more intuitive experience for GitLab users.&lt;/p&gt;
&lt;p&gt;This integration enables:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Direct linking to GitLab repositories, branches, and commits&lt;/li&gt;
&lt;li&gt;Automatic detection of Pulumi projects in GitLab repositories&lt;/li&gt;
&lt;li&gt;Streamlined setup for GitLab-based CI/CD workflows, using the CI/CD wizard on a stack&amp;rsquo;s page&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="organizational-templates-in-gitlab"&gt;Organizational Templates in GitLab&lt;/h3&gt;
&lt;p&gt;Pulumi Cloud now fully supports &lt;a href="https://www.pulumi.com/docs/pulumi-cloud/developer-portals/templates/#using-organization-templates-within-your-pulumi-organization"&gt;organizational templates&lt;/a&gt; stored in GitLab repositories. This powerful feature allows platform teams to define standardized infrastructure templates that developers across the organization can easily discover and use to create new projects.&lt;/p&gt;
&lt;p&gt;Once a GitLab repository is registered as a template source, Pulumi automatically detects &lt;code&gt;pulumi.yaml&lt;/code&gt; files and surfaces them in the template gallery. These templates can be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Public or private repositories&lt;/li&gt;
&lt;li&gt;Subject to Pulumi&amp;rsquo;s role-based access control (RBAC)&lt;/li&gt;
&lt;li&gt;Available in both the UI and CLI via &lt;code&gt;pulumi new&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This integration makes it easier than ever to standardize infrastructure patterns across your organization while leveraging GitLab for version control and collaboration.&lt;/p&gt;
&lt;h2 id="coming-soon-pulumi-deployments-for-gitlab"&gt;Coming Soon: Pulumi Deployments for GitLab&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.pulumi.com/docs/deployments/concepts/"&gt;Pulumi Deployments&lt;/a&gt; will also soon support GitLab, enabling fully automated infrastructure provisioning directly from your GitLab pipelines. This integration will provide:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fully managed compute for running Pulumi operations&lt;/li&gt;
&lt;li&gt;Click to deploy self service workflows in the Pulumi Cloud UI&lt;/li&gt;
&lt;li&gt;Rich new out of the box functionality like Time to Live Stacks, Drift Detection, Click to Deploy, Git Push to Deploy, Review Stacks and Scheduled Deployments.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All this functionality is available today by specifying the raw git credentials, but we look forward to making the integration frictionless in the future. To learn more about Pulumi Deployments read our &lt;a href="https://www.pulumi.com/docs/deployments/concepts/"&gt;Pulumi Deployments documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="getting-started"&gt;Getting Started&lt;/h2&gt;
&lt;p&gt;Ready to try these new GitLab integrations? Here&amp;rsquo;s how to get started:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;If you&amp;rsquo;re new to Pulumi, &lt;a href="https://app.pulumi.com/signup"&gt;sign up for a free account&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;For existing users, navigate to your organization settings to configure the GitLab integration&lt;/li&gt;
&lt;li&gt;Check out our updated documentation for detailed setup instructions&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;With these enhancements, Pulumi&amp;rsquo;s GitLab integration is better than ever, providing a seamless experience for managing infrastructure as code within your GitLab workflows. Learn more in the &lt;a href="https://www.pulumi.com/docs/iac/operations/continuous-delivery/gitlab-ci/"&gt;Pulumi GitLab documentation&lt;/a&gt;. We&amp;rsquo;re committed to continuing to improve this integration based on your feedback.&lt;/p&gt;
&lt;p&gt;Have questions or feedback? Join our &lt;a href="https://slack.pulumi.com/"&gt;Community Slack&lt;/a&gt; to connect with the Pulumi team and other users, or open an issue on our &lt;a href="https://github.com/pulumi/pulumi"&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;</description><author>Meagan Cojocar</author><author>Derek Schaller</author><category>gitlab</category><category>integrations</category><category>pulumi-cloud</category><category>releases</category><category>features</category></item><item><title>Introducing Pulumi ESC Projects and Environment Tags</title><link>https://www.pulumi.com/blog/esc-projects-environment-tags-launch/</link><pubDate>Thu, 12 Sep 2024 13:00:00 -0400</pubDate><guid>https://www.pulumi.com/blog/esc-projects-environment-tags-launch/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/esc-projects-environment-tags-launch/index.png" /&gt;
&lt;p&gt;We&amp;rsquo;re thrilled to unveil two new features that will empower you to organize your collection of &lt;a href="https://www.pulumi.com/docs/esc/"&gt;Pulumi ESC&lt;/a&gt; Environments: &lt;b&gt;Projects&lt;/b&gt; and &lt;b&gt;Environment Tags&lt;/b&gt;. Projects offer a structured way to group related environments and Environment Tags allow you to add contextual information to each environment. Together, they offer a powerful way for you to manage, navigate, and collaborate on your secrets and configurations.&lt;/p&gt;
&lt;h2 id="overview-of-pulumi-esc"&gt;Overview of Pulumi ESC&lt;/h2&gt;
&lt;p&gt;Pulumi ESC is a developer-first platform designed to simplify the management of secrets and configurations into collections called &lt;i&gt;&lt;a href="https://www.pulumi.com/docs/esc/concepts/environments/"&gt;environments&lt;/a&gt;&lt;/i&gt;. As a fully managed solution, it offers &lt;a href="https://www.pulumi.com/docs/esc/providers/login/"&gt;dynamic cloud provider credential&lt;/a&gt; resolution, a rich set of &lt;a href="https://www.pulumi.com/docs/esc/providers/"&gt;providers&lt;/a&gt; to retrieve secrets from external platforms, and the ability to use the secrets and configurations you have defined across any surface, including your applications and infrastructure via &lt;a href="https://www.pulumi.com/docs/esc/languages-sdks/"&gt;Multi-language SDKs&lt;/a&gt;, &lt;a href="https://www.pulumi.com/docs/reference/cloud-rest-api/#environments"&gt;REST APIs&lt;/a&gt;, &lt;a href="https://www.pulumi.com/docs/iac/cli/commands/pulumi_env/"&gt;CLI&lt;/a&gt;, &lt;a href="https://www.pulumi.com/registry/packages/pulumiservice/api-docs/environment/"&gt;Pulumi-Service Provider&lt;/a&gt;, and &lt;a href="https://www.pulumi.com/blog/esc-automation-api-pulumi-service-provider-launch/#streamline-automated-workflows-with-automation-api-enhancements"&gt;Automation API&lt;/a&gt;. Like all Pulumi functionality, Pulumi ESC focuses on enhancing both agility and security in modern cloud development.&lt;/p&gt;
&lt;p&gt;As developers have embraced Pulumi ESC to manage their collections of secrets and configurations across many teams and projects, the demand for more sophisticated organizational tools has increased. To address this growing need for more organized and efficient management of cloud environments, we are introducing Projects and Environment Tags in Pulumi ESC.&lt;/p&gt;
&lt;h2 id="introducing-projects"&gt;Introducing Projects&lt;/h2&gt;
&lt;p&gt;Projects offer a structured way to organize environments into logical groupings. Each Project has a distinct name, providing context for the environments within it, and can contain multiple environments with variations, each having a specific purpose. Additionally, Projects help large organizations simplify environment management by mitigating possible environment name conflicts and ensuring changes are made in isolation to the correct environments.&lt;/p&gt;
&lt;p&gt;For example, your organization could have a project named &amp;ldquo;payments-app&amp;rdquo; containing &lt;code&gt;dev&lt;/code&gt;, &lt;code&gt;staging&lt;/code&gt;, and &lt;code&gt;prod&lt;/code&gt; environments within it. Your organization could also have a project called &amp;ldquo;dev-credentials&amp;rdquo; which contains different environments used to provide temporary runtime access to credentials for developers while working.&lt;/p&gt;
&lt;p&gt;We have two additional features as part of this launch:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Grouping and Search&lt;/strong&gt;: You can group environments by either Project name or by Environment Tags, as well as search by them, making it simple to locate and manage your environments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Environment Clone&lt;/strong&gt;: Using the built-in cloning functionality, you can securely copy environments with sensitive information, preserving either the entire version history or just the latest environment state, depending on your needs.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="note note-info"&gt;
&lt;div class="icon-and-line"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" class="ph-icon ph-icon--fill" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;use href="https://www.pulumi.com/icons/sprite.fd29ca76b1ea49dbd3f6703cc46ae6138b0ed98cabf8d2c60a23a474880f964d.svg#p-info-fill"/&gt;&lt;/svg&gt;
&lt;div class="line"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="content"&gt;To use Projects and Environment Tags, please update your &lt;a href="https://www.pulumi.com/docs/iac/cli/"&gt;Pulumi CLI&lt;/a&gt; and &lt;a href="https://www.pulumi.com/docs/esc/languages-sdks/"&gt;SDK&lt;/a&gt; to the latest.&lt;/div&gt;
&lt;/div&gt;
&lt;div class="note note-info"&gt;
&lt;div class="icon-and-line"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" class="ph-icon ph-icon--fill" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;use href="https://www.pulumi.com/icons/sprite.fd29ca76b1ea49dbd3f6703cc46ae6138b0ed98cabf8d2c60a23a474880f964d.svg#p-info-fill"/&gt;&lt;/svg&gt;
&lt;div class="line"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="content"&gt;&lt;p&gt;Environments will now need to be referenced by specifying the project as part of the environment identifier. Any existing environments within your organization will be available in the &lt;code&gt;default&lt;/code&gt; project. Projects are fully backward compatible - all your existing programs, imports and CLI commands will work without requiring any changes at the moment. Note that only environments within the &lt;code&gt;default&lt;/code&gt; project will be backwards compatibly and resolve without a project prefix.&lt;/p&gt;
&lt;p&gt;Users will be able to create new environments in the default project until &lt;b&gt;Nov 30, 2024&lt;/b&gt;. Starting Dec 1, 2024, users will not be able to create new environments in the default project.&lt;/p&gt;
&lt;p&gt;Starting &lt;b&gt;Apr 1, 2025&lt;/b&gt;, users will not be able to edit their environments within the ‘default’ Project. We recommend customers migrate their existing environments to user-created projects at the earliest to take advantage of new Pulumi ESC capabilities.&lt;/p&gt;
&lt;p&gt;Moving environments out of the &lt;code&gt;default&lt;/code&gt; project is as easy as cloning the environment into a new project and updating any references to it. An example clone command that preserves all environment history, tags, and team access looks as follows&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; $ pulumi env clone default/dev your-project/dev --preserve-history --preserve-env-tags --preserve-rev-tags --preserve-access
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;We offer numerous ways for you to get started with Projects via the Pulumi Web Console, &lt;a href="https://www.pulumi.com/docs/esc/languages-sdks/"&gt;SDK&lt;/a&gt;, &lt;a href="https://www.pulumi.com/docs/reference/cloud-rest-api/#environments"&gt;REST API&lt;/a&gt;, &lt;a href="https://www.pulumi.com/docs/iac/cli/commands/pulumi_env/"&gt;CLI&lt;/a&gt; and &lt;a href="https://www.pulumi.com/registry/packages/pulumiservice/api-docs/environment/"&gt;Pulumi-Service Provider&lt;/a&gt; - choose what best fits your workflow. Here is one example using the Pulumi CLI to create and list environments within a project:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; $ pulumi env init cloud-pe/demo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Environment created: dschaller/cloud-pe/demo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; $ pulumi env ls -p cloud-pe
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; cloud-pe/demo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pulumi/cloud-pe/demo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="breaking-changes"&gt;Breaking Changes&lt;/h3&gt;
&lt;p&gt;With the introduction of Projects, all existing environments part of the &lt;code&gt;default&lt;/code&gt; project will continue to work without requiring any changes. However, when moving existing environments out of the default project you may notice some differences that we have outlined below.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If your environment was interpolating the &lt;code&gt;context.currentEnvironment.name&lt;/code&gt; or &lt;code&gt;context.rootEnvironment.name&lt;/code&gt; from &lt;a href="https://www.pulumi.com/docs/esc/concepts/environments/#pulumi-contextual-information"&gt;Contextual information&lt;/a&gt;, this value will now include the project for any environments outside of the &lt;code&gt;default&lt;/code&gt; project.&lt;/li&gt;
&lt;li&gt;If you were using any of the &lt;a href="https://www.pulumi.com/docs/esc/concepts/environments/#using-secrets-providers-and-oidc"&gt;secrets providers with OIDC&lt;/a&gt;, you will need to update both the subject and audience if a trust relationship has been set up. The subject will be either &lt;code&gt;pulumi:environments:org:&amp;lt;organization name&amp;gt;:env:&amp;lt;project name&amp;gt;/&amp;lt;environment name&amp;gt;&lt;/code&gt; if no &lt;code&gt;subjectAttributes&lt;/code&gt; are specified or if the &lt;code&gt;currentEnvironment.name&lt;/code&gt; subject attribute is specified it will now resolve to &lt;code&gt;currentEnvironment.name:&amp;lt;project name&amp;gt;/&amp;lt;environment name&amp;gt;&lt;/code&gt;. The audience will be the provider&amp;rsquo;s platform name (&lt;code&gt;aws&lt;/code&gt;, &lt;code&gt;azure&lt;/code&gt;, or &lt;code&gt;gcp&lt;/code&gt;) followed by the org name of the environment (e.g. &lt;code&gt;aws:pulumi&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="introducing-environment-tags"&gt;Introducing Environment Tags&lt;/h2&gt;
&lt;p&gt;Using Environment Tags, teams can now assign any number of custom tags to each environment within Pulumi ESC. These tags serve as contextual identifiers that can streamline workflows by enabling you to group and search across environments based on specific criteria such as teams, project stages, deployment environments, compliance requirements, or geographic locations. This multi-dimensional approach provides unparalleled flexibility and control, ensuring your Pulumi ESC environments can scale seamlessly with your organizations evolving needs.&lt;/p&gt;
&lt;p&gt;For example, suppose your organization has multiple environments across different geographic regions. You can use Environment Tags like &amp;lsquo;region: us-east&amp;rsquo; or &amp;lsquo;region: eu-central-1&amp;rsquo; to quickly filter environments by region. Similarly, for security audits, you might tag environments with ‘Compliance: SOC2’ or ‘Compliance: GDPR’ to easily find relevant environments and ensure they are compliant.&lt;/p&gt;
&lt;p&gt;You can use the Pulumi Web Console and the &lt;a href="https://www.pulumi.com/docs/iac/cli/commands/pulumi_env/"&gt;CLI&lt;/a&gt; to create and manage Environment Tags. Here is an example of using the CLI to add and list Environment Tags.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ pulumi env tag cloud-pe/demo region us-east-1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Name: region
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Value: us-east-1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Last updated at 2024-09-10 11:03:05.708 -0700 PDT by Derek &amp;lt;dschaller&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ pulumi env tag ls cloud-pe/demo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Name: region
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Value: us-east-1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Last updated at 2024-09-10 11:03:05.708 -0700 PDT by Derek &amp;lt;dschaller&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Pulumi ESC Projects and Environment Tags are powerful additions that bring order and clarity to your secrets and configuration to even the most complex infrastructure landscapes. By enabling you to organize, group, and search for your environments with ease, we&amp;rsquo;re empowering you to scale your infrastructure with high confidence and flexibility.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re excited to see how you leverage these new capabilities. Check out the docs to learn more about Pulumi ESC Projects and Environment Tags and start organizing your environments today!&lt;/p&gt;
&lt;p&gt;As always, please share your &lt;a href="https://github.com/pulumi/esc/issues/new/choose"&gt;feedback&lt;/a&gt; on how we can further improve Pulumi ESC to suit your needs.&lt;/p&gt;</description><author>Derek Schaller</author><author>Arun Loganathan</author><category>esc</category><category>secrets</category><category>features</category></item></channel></rss>