Skip to content

Commit 935c72f

Browse files
authored
Merge branch 'master' into jkodroff/add-available-cli-versios
2 parents a86336f + 0c88606 commit 935c72f

File tree

6 files changed

+44
-9
lines changed
  • content
    • blog
      • day-2-operations-drift-detection-and-remediation
      • deployment-guardrails-with-policy-as-code
      • golden-paths-infrastructure-components-and-templates
      • idp-strategy-planning-self-service-infrastructure-that-balances-developer-autonomy-with-operational-control
    • docs/iac/guides/building-extending

6 files changed

+44
-9
lines changed

content/blog/day-2-operations-drift-detection-and-remediation/index.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: "Day 2 Operations: Drift Detection and Remediation | IDP Workshop"
2+
title: "Day 2 Operations: Drift Detection and Remediation"
33
allow_long_title: true
44
meta_desc: "Implement automated drift detection for your IDP using Pulumi. Maintain infrastructure integrity with scheduled checks and real-time alerts."
55
meta_image: meta.png
@@ -22,7 +22,7 @@ tags:
2222

2323
social:
2424
twitter: |
25-
Day 2 Operations: Drift Detection and Remediation | IDP Workshop
25+
Day 2 Operations: Drift Detection and Remediation
2626
2727
Learn how to maintain infrastructure integrity with automated drift detection:
2828
• Understand drift in cloud infrastructure
@@ -34,7 +34,7 @@ social:
3434
3535
#IDP #DriftDetection #PlatformEngineering #InfrastructureAsCode #DevOps
3636
linkedin: |
37-
**Day 2 Operations: Drift Detection and Remediation | IDP Workshop**
37+
**Day 2 Operations: Drift Detection and Remediation**
3838
3939
In the fourth post of our IDP Best Practices series, we explore the critical day 2 operations that ensure your infrastructure stays aligned with your intended configuration long after initial deployment.
4040

content/blog/deployment-guardrails-with-policy-as-code/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ This post is part of our IDP Best Practices series:
3131
* [How to Build an Internal Developer Platform: Strategy, Best Practices, and Self-Service Infrastructure](/blog/idp-strategy-planning-self-service-infrastructure-that-balances-developer-autonomy-with-operational-control)
3232
* [Build Golden Paths with Infrastructure Components and Templates](/blog/golden-paths-infrastructure-components-and-templates)
3333
* **Deployment Guardrails with Policy as Code** (you are here)
34-
* Day 2 Platform Operations: Automating Drift Detection and Remediation
34+
* [Day 2 Operations: Drift Detection and Remediation](/blog/day-2-operations-drift-detection-and-remediation)
3535
* Extend Your IDP for AI Applications: GPUs, Models, and Cost Controls
3636
* Next-Gen IDPs: How to Modernize Legacy Infrastructure with Pulumi
3737

content/blog/golden-paths-infrastructure-components-and-templates/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ This post is part of our IDP Best Practices series:
3636
- [How to Build an Internal Developer Platform: Strategy, Best Practices, and Self-Service Infrastructure](/blog/idp-strategy-planning-self-service-infrastructure-that-balances-developer-autonomy-with-operational-control/)
3737
- **Build Golden Paths: Guide to Reusable Infrastructure with Pulumi Components and Templates** (you are here)
3838
- [Policy as Code for Safer IDPs: Enabling Developer Self-Service with Guardrails](/blog/deployment-guardrails-with-policy-as-code)
39-
- Day 2 Platform Operations: Automating Drift Detection and Remediation
39+
- [Day 2 Operations: Drift Detection and Remediation](/blog/day-2-operations-drift-detection-and-remediation)
4040
- Extend Your IDP for AI Applications: GPUs, Models, and Cost Controls
4141
- Next-Gen IDPs: How to Modernize Legacy Infrastructure with Pulumi
4242

content/blog/idp-strategy-planning-self-service-infrastructure-that-balances-developer-autonomy-with-operational-control/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ This post is part of our IDP Best Practices series. You can explore the full ser
8282
- **How to Build an Internal Developer Platform: Strategy, Best Practices, and Self-Service Infrastructure** (you are here)
8383
- [Build Golden Paths: Guide to Reusable Infrastructure with Pulumi Components and Templates](/blog/golden-paths-infrastructure-components-and-templates/)
8484
- [Policy as Code for Safer IDPs: Enabling Developer Self-Service with Guardrails](/blog/deployment-guardrails-with-policy-as-code)
85-
- Day 2 Platform Operations: Automating Drift Detection and Remediation
85+
- [Day 2 Operations: Drift Detection and Remediation](/blog/day-2-operations-drift-detection-and-remediation)
8686
- Extend Your IDP for AI Applications: GPUs, Models, and Cost Controls
8787
- Next-Gen IDPs: How to Modernize Legacy Infrastructure with Pulumi
8888

content/docs/iac/guides/building-extending/components/build-a-component.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ Pulumi Components are implemented as custom classes in any Pulumi-supported lang
4141

4242
Pulumi Components inherently support multi-language use. Regardless of the language a component was written in, it is a fast one-step process to generate a SDK, allowing you to use it in all Pulumi-supported languages.
4343

44+
{{< notes type="warning" >}}
45+
If your component uses a local package (such as any Terraform provider via `terraform-provider`, or another component that contains a local package), you must commit the generated SDK code to version control. See [Using components with local packages](/docs/iac/guides/building-extending/packages/local-packages/#components-with-local-packages) for details.
46+
{{< /notes >}}
47+
4448
## Structure of a Component
4549

4650
A Pulumi Component consists of three main parts:

content/docs/iac/guides/building-extending/packages/local-packages.md

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@ This clones the repo and executes the source, enabling you to use packages from
6666
#### Using `terraform-provider`
6767

6868
```bash
69-
pulumi package add terraform-provider hashicorp/random
69+
pulumi package add terraform-provider hashicorp/random 3.5.1
7070
```
7171

72-
Refer to the [Terraform Provider documentation](/docs/iac/using-pulumi/pulumi-packages/terraform-provider/) for more details.
72+
Refer to the [Any Terraform Provider documentation](/docs/iac/using-pulumi/pulumi-packages/terraform-provider/) for more details.
7373

7474
## Using generated SDKs
7575

@@ -206,11 +206,42 @@ When working with local packages, it's important to understand how breaking chan
206206
To ensure stability, you should specify the version of both:
207207

208208
```bash
209-
pulumi package add terraform-provider hashicorp/random --version=3.5.1
209+
pulumi package add terraform-provider hashicorp/random 3.5.1
210210
```
211211

212212
This pins the Terraform provider version, protecting you from unexpected breaking changes when the underlying provider is updated.
213213

214+
## Using components with local packages {#components-with-local-packages}
215+
216+
When creating a component that contains a local package, you must ensure the generated SDK is available to consumers of your component. This applies when your component uses:
217+
218+
- Any Terraform provider via [`terraform-provider`](/registry/packages/terraform-provider/)
219+
- Another component that itself contains a local package
220+
- Any other Pulumi plugin that generates code in the `sdk` folder
221+
222+
### Requirements
223+
224+
1. You must be using Pulumi 3.200.0 or later.
225+
1. In your component code, run `pulumi package add` to generate the upstream SDK.
226+
1. Ensure the generated code in the `sdk` folder is committed to version control.
227+
228+
### Why this is necessary
229+
230+
When someone consumes your component, they need access to all the SDKs your component depends on. For published packages from the Pulumi Registry, these dependencies are automatically resolved. However, for local packages generated within your component, the generated SDK code must be available in your repository so that consumers can use it.
231+
232+
### Example workflow
233+
234+
If you're building a component that uses a Terraform provider:
235+
236+
```bash
237+
cd my-component
238+
pulumi package add terraform-provider hashicorp/random 3.5.1
239+
git add sdk/
240+
git commit -m "Add generated SDK for terraform-provider random"
241+
```
242+
243+
Consumers of your component will then be able to use it without needing to regenerate the SDK themselves.
244+
214245
## See also
215246

216247
For more information about developing and publishing your own packages, see the [Publishing Packages](/docs/iac/build-with-pulumi/publishing-packages/) guide.

0 commit comments

Comments
 (0)