diff --git a/knowledge base/pulumi.md b/knowledge base/pulumi.md index 4122a13..5377ae1 100644 --- a/knowledge base/pulumi.md +++ b/knowledge base/pulumi.md @@ -1,18 +1,17 @@ # Pulumi 1. [TL;DR](#tldr) -1. [Concepts](#concepts) - 1. [Project](#project) - 1. [Program](#program) - 1. [Stack](#stack) - 1. [Monolith vs micro-stack](#monolith-vs-micro-stack) - 1. [State](#state) - 1. [Configuration](#configuration) - 1. [Backend](#backend) -1. [Migrate to different backends](#migrate-to-different-backends) -1. [Ignore changes](#ignore-changes) -1. [Delete before replacing](#delete-before-replacing) -1. [Outputs](#outputs) +1. [Project](#project) +1. [Program](#program) + 1. [Ignore changes](#ignore-changes) + 1. [Delete before replacing](#delete-before-replacing) + 1. [Outputs](#outputs) +1. [Stack](#stack) + 1. [Monolith vs micro-stack](#monolith-vs-micro-stack) + 1. [State](#state) + 1. [Configuration](#configuration) +1. [Backend](#backend) + 1. [Migrate to different backends](#migrate-to-different-backends) 1. [Further readings](#further-readings) 1. [Sources](#sources) @@ -358,9 +357,7 @@ Learning resources: - [Code examples] - [Resources reference] -## Concepts - -### Project +## Project Refer to [projects] for more and updated information. @@ -386,12 +383,44 @@ pulumi new 'kubernetes-yaml' --generate-only pulumi new 'oci-java' ``` -### Program +## Program Programs are the the files containing the resources' definitions.
They are deployed into [stacks][stack]. -### Stack +### Ignore changes + +Add the [`ignoreChanges` option][ignorechanges] to the resource. + +```ts +const resource = new.aws.s3.Bucket("bucket", { + … +}, { + ignoreChanges: [ + "tags['last-deploy-at']" + ] +}); +``` + +### Delete before replacing + +Add the [`deleteBeforeReplace` option][deletebeforereplace] to the resource. + +```ts +const cluster = new aws.eks.Cluster("cluster", { + … +}, { + deleteBeforeReplace: true +}); +``` + +If a resource is assigned a static name, the `deleteBeforeReplace` option _should be_ implicitly enabled. + +### Outputs + +TODO + +## Stack Refer to [stacks] for more and updated information. @@ -412,7 +441,7 @@ The stack name can be specified in one of these formats: For self-managed [backends][backend], the `orgName` portion of the stack name must always be the constant string value `organization`. -#### Monolith vs micro-stack +### Monolith vs micro-stack Refer to [organizing pulumi projects & stacks] for more and updated information. @@ -462,9 +491,10 @@ const nested = new pulumi.StackReference("organization/nested/dev"); const eks = nested.getOutput("eks"); ``` -> All involved stacks must be stored in the same [backend] for [stack references] to be found. +> All involved stacks must be stored in the same backend for them to be able to find the correct [stack references].
+> See [backend]. -#### State +### State Refer to [state] for more and updated information. @@ -475,11 +505,11 @@ Pulumi records checkpoints early and often, so that it can execute similarly to Checkpoints are stored in the [backend], under the `.pulumi/stacks/{project.name}` folder. See the [backend] section for details. -#### Configuration +### Configuration TODO -### Backend +## Backend Refer to [state] for more and updated information. @@ -549,7 +579,26 @@ $ aws s3 ls --recursive s3://organization-backend/prefix/ 2024-03-19 17:21:28 2584430 prefix/.pulumi/stacks/test/dev.json.bak ``` -## Migrate to different backends +All involved stacks must be stored in the same backend for them to be able to find the correct [stack references]: + +```txt +$ # Only showing files of interest +$ tree +root/ +├── infra/ +│ ├── Pulumi.yaml ───> backend.url: "file://.." +│ └── index.ts ───> export const eks = eks_cluster; +├── app/ +│ ├── Pulumi.yaml ───> backend.url: "file://.." +│ └── index.ts ───> const infraStack = new pulumi.StackReference(`organization/infra/${env}`); +│ └──> const eks = infraStack.getOutput("eks"); +└── .pulumi/ + └── stacks/ + ├── infra/… + └── app/… +``` + +### Migrate to different backends 1. Get to the current backend: @@ -596,38 +645,6 @@ $ aws s3 ls --recursive s3://organization-backend/prefix/ cat 'Pulumi.mario.yaml' ``` -## Ignore changes - -Add the [`ignoreChanges` option][ignorechanges] to the resource. - -```ts -const resource = new.aws.s3.Bucket("bucket", { - … -}, { - ignoreChanges: [ - "tags['last-deploy-at']" - ] -}); -``` - -## Delete before replacing - -Add the [`deleteBeforeReplace` option][deletebeforereplace] to the resource. - -```ts -const cluster = new aws.eks.Cluster("cluster", { - … -}, { - deleteBeforeReplace: true -}); -``` - -If a resource is assigned a static name, the `deleteBeforeReplace` option _should be_ implicitly enabled. - -## Outputs - -TODO - ## Further readings - [Website]