Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions content/blog/advanced-aws-networking-part-1/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ The code samples in this section are not exhaustive. That is, they do not contai

Now that you've added some foundational Transit Gateway resources, you can create your inspection VPC.

The inspection VPC is implemented as a [Pulumi component resource](https://www.pulumi.com/docs/concepts/resources/components/). While we do not need to create multiple inspection VPCs in this codebase, implementing the inspection VPC as a component resource enhances the readability of both the code and the output by grouping all resources that belong to the inspection VPC in the output of `pulumi up`. You can also improve the component's readability by placing its code in a separate file (in this case, `inspection.py`).
The inspection VPC is implemented as a [Pulumi component resource](https://www.pulumi.com/docs/iac/concepts/components/). While we do not need to create multiple inspection VPCs in this codebase, implementing the inspection VPC as a component resource enhances the readability of both the code and the output by grouping all resources that belong to the inspection VPC in the output of `pulumi up`. You can also improve the component's readability by placing its code in a separate file (in this case, `inspection.py`).

When you create a component resource in Python, it's helpful to create a class that contains the arguments to the component resource. This allows you to pass the arguments to the component resource as a single object, which makes the code easier to read and understand. You can create a terse and easily readable arguments class in Python with the [`@dataclass` decorator](https://docs.python.org/3/library/dataclasses.html):

Expand Down Expand Up @@ -247,7 +247,7 @@ for subnet_id in public_subnet_ids:
)
```

You need to create both sets of these routes within an [apply](https://www.pulumi.com/docs/concepts/inputs-outputs/#apply) because of the need to access the raw values of each of the subnet ids. Apply can be conceptually difficult for beginners in Pulumi to grasp, but it essentially means "once you know all of the values that needed, pass them on to this function".
You need to create both sets of these routes within an [apply](https://www.pulumi.com/docs/iac/concepts/inputs-outputs/#apply) because of the need to access the raw values of each of the subnet ids. Apply can be conceptually difficult for beginners in Pulumi to grasp, but it essentially means "once you know all of the values that needed, pass them on to this function".

## Final steps

Expand Down
2 changes: 1 addition & 1 deletion content/blog/advanced-aws-networking-part-2/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ In [AWS Advanced Networking Part 1](https://pulumi.com/blog/advanced-aws-network

1. Learned about the benefits of a hub-and-spoke network architecture with centralized egress.
1. Created the shared [AWS Transit Gateway](https://aws.amazon.com/transit-gateway/) resources to be shared among our spoke VPCs and inspection VPC.
1. Defined your inspection VPC as a Pulumi [component resource](https://www.pulumi.com/docs/concepts/resources/components/).
1. Defined your inspection VPC as a Pulumi [component resource](https://www.pulumi.com/docs/iac/concepts/components/).

Now, to finish the architecture, you will need to:

Expand Down
2 changes: 1 addition & 1 deletion content/blog/advanced-typescript-type-ftw/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ typechecking – making for a more productive inner loop and helping to find err
how this works for infrastructure as code can be fascinating!
<!--more-->

A core part of the Pulumi [programming model](/docs/concepts/) is that we allow people to express complex
A core part of the Pulumi [programming model](/docs/iac/concepts/) is that we allow people to express complex
[dependency data](/docs/iac/concepts/inputs-outputs/) that may _eventually_ be available.
Traditional JavaScript programming might expose that as a Promise<T>, but we’ve taken that one step further by introducing
a type we call:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ app_event_lambda = aws.lambda_.Function(
)
```

If you're new to Pulumi, you might be wondering what's going on with the `lambda_environment`, why isn't `app_bucket.id` referenced directly, and what is [pulumi.Output.all](https://www.pulumi.com/docs/concepts/inputs-outputs/all/)? Simply put, this tells Pulumi to wait until the bucket is created before trying to use its name in a string we're building. This is an important core feature of Pulumi that largely happens [by nesting Outputs](https://www.pulumi.com/docs/concepts/inputs-outputs/apply/#accessing-nested-output-values). To learn more, see [Inputs & Outputs](https://www.pulumi.com/docs/concepts/inputs-outputs/).
If you're new to Pulumi, you might be wondering what's going on with the `lambda_environment`, why isn't `app_bucket.id` referenced directly, and what is [pulumi.Output.all](https://www.pulumi.com/docs/iac/concepts/inputs-outputs/all/)? Simply put, this tells Pulumi to wait until the bucket is created before trying to use its name in a string we're building. This is an important core feature of Pulumi that largely happens [by nesting Outputs](https://www.pulumi.com/docs/iac/concepts/inputs-outputs/apply/#accessing-nested-output-values). To learn more, see [Inputs & Outputs](https://www.pulumi.com/docs/iac/concepts/inputs-outputs/).

## Triggering the data loader

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ There you will find several instructions on installing and getting started with

- [Getting started with Pulumi](https://www.pulumi.com/docs/get-started/)

- [General Pulumi overview (concepts and architecture)](https://www.pulumi.com/docs/concepts/)
- [General Pulumi overview (concepts and architecture)](https://www.pulumi.com/docs/iac/concepts/)

Although Pulumi for Java is listed in "preview" status, it supports all of the most essential Pulumi programming model features (and the rest is on its way). Our goal is to gather feedback over the next few weeks, and we will be working hard to improve the Java experience across the board, including more examples and better documentation.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -557,7 +557,7 @@ Resources:
Duration: 7s
```

For the purposes of testing, we are now going to create a specific [AWS Provider resource](https://www.pulumi.com/docs/concepts/resources/providers/) that we can pass the IAM Role details to assume.
For the purposes of testing, we are now going to create a specific [AWS Provider resource](https://www.pulumi.com/docs/iac/concepts/providers/) that we can pass the IAM Role details to assume.

{{< chooser language "typescript,csharp,python,go,yaml" >}}
{{% choosable language typescript %}}
Expand Down
2 changes: 1 addition & 1 deletion content/blog/architecture-as-code-kubernetes/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,6 @@ Using this example, you can quickly build any of the Kubernetes architectural pa

## Conclusion

Deploying modern applications is complex. Any one of the architectures we’ve examined -- virtual machines, microservices, serverless and Kubernetes -- require deploying and configuring multiple resources. For many reasons, including security, compliance, and cost management, we want to reuse resources consistently. In a sense, architecture as code is the logical progression of the DevOps principle of ["cattle not pets"](https://medium.com/@Joachim8675309/devops-concepts-pets-vs-cattle-2380b5aab313). Infrastructure as code is the tool that enables this by bringing standard development practices, such as code review, CI/CD, and testing to infrastructure. Learn how to build reusable infrastructure components with Pulumi’s [programming model](/docs/concepts/), [API reference for cloud service providers](/registry), and [examples](https://github.com/pulumi/examples).
Deploying modern applications is complex. Any one of the architectures we’ve examined -- virtual machines, microservices, serverless and Kubernetes -- require deploying and configuring multiple resources. For many reasons, including security, compliance, and cost management, we want to reuse resources consistently. In a sense, architecture as code is the logical progression of the DevOps principle of ["cattle not pets"](https://medium.com/@Joachim8675309/devops-concepts-pets-vs-cattle-2380b5aab313). Infrastructure as code is the tool that enables this by bringing standard development practices, such as code review, CI/CD, and testing to infrastructure. Learn how to build reusable infrastructure components with Pulumi’s [programming model](/docs/iac/concepts/), [API reference for cloud service providers](/registry), and [examples](https://github.com/pulumi/examples).

Want to know more? Listen to the [New Stack Context podcast](https://thenewstack.io/pulumi-program-the-infrastructure-with-an-actual-programming-language/) on the Pulumi 2.0 release and Architecture as Code.
2 changes: 1 addition & 1 deletion content/blog/architecture-as-code-serverless/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ rpa = aws.iam.RolePolicyAttachment('task-exec-policy',
)
```

To learn more about creating [reusable components](/docs/concepts/resources#components), read about Pulumi's programming model, which shows how to author components.
To learn more about creating [reusable components](/docs/iac/concepts/resources/#components), read about Pulumi's programming model, which shows how to author components.

## Polyglot applications

Expand Down
2 changes: 1 addition & 1 deletion content/blog/automation-api-as-platform/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ This example demonstrates how to create infrastructure with Automation API and t

### Infrastructure as a function

We use an `inline` Pulumi program that doesn't require a separate package with `index.ts` and `Pulumi.yaml` files, although they can be authored in an `index.ts` file or imported from another package. The example deploys an AWS S3 website with the context and deployment automation defined in a function. Functions can be [components](/docs/concepts/resources#components), in this case, a static S3 website. However, they can be more complex, such as a Kubernetes cluster with accompanying containers and AWS resources.
We use an `inline` Pulumi program that doesn't require a separate package with `index.ts` and `Pulumi.yaml` files, although they can be authored in an `index.ts` file or imported from another package. The example deploys an AWS S3 website with the context and deployment automation defined in a function. Functions can be [components](/docs/iac/concepts/resources/#components), in this case, a static S3 website. However, they can be more complex, such as a Kubernetes cluster with accompanying containers and AWS resources.

```typescript
const projectName = "pulumi_over_http";
Expand Down
4 changes: 2 additions & 2 deletions content/blog/aws-serverless-analytics/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ export const impressionInputStream = impressionsInputStream.name;
export const clickInputStream = clicksInputStream.name;
```

In a dozen lines of code, we’ve provisioned two of our desired tables, “clicks” and “impressions”, using our serverless streaming input architecture. It takes care of everything, including implicitly creating an arrival time [partition scheme](https://docs.aws.amazon.com/athena/latest/ug/partitions.html) with the key “inserted_at”. We export our Kinesis input streams as [stack outputs](/docs/concepts/stack#outputs) that can be referenced in other projects, such as the instrumentation within our ad server or consumer-facing web app.
In a dozen lines of code, we’ve provisioned two of our desired tables, “clicks” and “impressions”, using our serverless streaming input architecture. It takes care of everything, including implicitly creating an arrival time [partition scheme](https://docs.aws.amazon.com/athena/latest/ug/partitions.html) with the key “inserted_at”. We export our Kinesis input streams as [stack outputs](/docs/iac/concepts/stacks/#outputs) that can be referenced in other projects, such as the instrumentation within our ad server or consumer-facing web app.

While on the surface this Pulumi component is described imperatively, it produces a declarative output in the form of a [state file](/docs/iac/concepts/state-and-backends/) that can be managed locally, in an object store like S3, or by the Pulumi Service backend. Running a ‘pulumi up’ shows that we’ve created 45 AWS resources, and lists our stack outputs to the console.

Expand Down Expand Up @@ -457,7 +457,7 @@ While Lambda’s limits restrict the utility of this method, the concept is powe

Developing software is an activity in seeking a specific state. For functions with simple inputs and outputs, this is a matter of well-factored code and unit test coverage. You can and should write this sort of test in your Pulumi applications. But often, the state that you’re seeking can’t be validated in unit tests. It raises many questions such as, “Am I stitching these cloud services together in a valid way? Will data flow from input service through to output destination? If I try to tighten down this IAM role, will everything still work?”

Our workflow is to make a change, run a pulumi up, and then verify that data ingested into Kinesis is read out the other end by Athena. A simple shell script using [stack outputs](/docs/concepts/stack#outputs) and a query in the AWS console are enough to get started here:
Our workflow is to make a change, run a pulumi up, and then verify that data ingested into Kinesis is read out the other end by Athena. A simple shell script using [stack outputs](/docs/iac/concepts/stacks/#outputs) and a query in the AWS console are enough to get started here:

```bash
#/bin/sh
Expand Down
2 changes: 1 addition & 1 deletion content/blog/command-provider-ga/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ The 1.0 release of the Command provider marks a stable API for the 1.x series. R
- The API documentation in the Pulumi registry has [examples in all Pulumi languages](https://github.com/pulumi/pulumi-command/issues/196) and is expanded.
- Capturing stdout and stderr of commands can now [be switched off](https://github.com/pulumi/pulumi-command/pull/451), which is useful when they might contain secrets or are very noisy.
- Environment handling for remote commands [has better error handling and is better documented](https://github.com/pulumi/pulumi-command/pull/395).
- The `CopyFile` resource is [superseded](https://github.com/pulumi/pulumi-command/pull/423) by the new `CopyToRemote` resource. It can copy whole directories in addition to individual files. The source of the copy is now a [Pulumi asset or archive](https://www.pulumi.com/docs/concepts/assets-archives/) which provides full interoperability with the Pulumi ecosystem. The use of assets and archives also makes Pulumi run copy operations only if the source has changed. For an easy transition, the previous `CopyFile` resource will remain available with a deprecation notice until the next major version.
- The `CopyFile` resource is [superseded](https://github.com/pulumi/pulumi-command/pull/423) by the new `CopyToRemote` resource. It can copy whole directories in addition to individual files. The source of the copy is now a [Pulumi asset or archive](https://www.pulumi.com/docs/iac/concepts/assets-archives/) which provides full interoperability with the Pulumi ecosystem. The use of assets and archives also makes Pulumi run copy operations only if the source has changed. For an easy transition, the previous `CopyFile` resource will remain available with a deprecation notice until the next major version.

Here’s an example of copying a directory to a remote host. For brevity, the remote server is assumed to exist, but it could also be provisioned in the same Pulumi program.

Expand Down
2 changes: 1 addition & 1 deletion content/blog/community-aws-iam-package/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -421,4 +421,4 @@ A few of the other use cases support by the Community AWS IAM package are:
If you want to learn more about Pulumi and the Community AWS IAM package, here are a few links you might find interesting:

- Read the [AWS IAM documentation](/registry/packages/aws-iam/) to learn more about the package, how to [install and configure](/registry/packages/aws-iam/installation-configuration/) it and use its APIs.
- If you’re interested in learning more about Pulumi concepts, try the [Concepts](/docs/concepts/) page.
- If you’re interested in learning more about Pulumi concepts, try the [Concepts](/docs/iac/concepts/) page.
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,7 @@ You can continue adding new segments to the cleanup lambda to help cleanup your
## Deploying To Multiple Regions

We want to ensure that all of our regions are cleaned up; therefore, we need to change the structure of the code. We can
take advantage of [explicit provider configuration](/docs/concepts/resources#explicit-provider-configuration)
take advantage of [explicit provider configuration](/docs/iac/concepts/resources/#explicit-provider-configuration)
to allow us to target the deployment of a resource to a specific region.

Let's assume we want to deploy our application to `us-east-1`, `us-east-2`, `eu-west-1`, `eu-west-2` and `us-west-2`. We can
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,5 @@ If you haven't yet, try out the new pulumi-eks package with [this walkthrough].
[manage EKS clusters]: /blog/easily-create-and-manage-aws-eks-kubernetes-clusters-with-pulumi/
[multi-language components]: https://github.com/pulumi/pulumi/issues/2430
[this walkthrough]: https://www.pulumi.com/blog/easily-create-and-manage-aws-eks-kubernetes-clusters-with-pulumi/
[resources]: https://www.pulumi.com/docs/concepts/resources/
[resources]: https://www.pulumi.com/docs/iac/concepts/resources/
<!-- markdownlint-enable url -->
2 changes: 1 addition & 1 deletion content/blog/crosswalk-for-aws-1-0/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ Today, we’re excited to deliver the 1.0 releases of the three core libraries t

Pulumi provides access to 100 providers (and counting!) for working with a wide variety of cloud and SaaS platforms. But since the very beginning of our work on Pulumi, [AWS](https://www.pulumi.com/registry/packages/aws/) has been the most used platform, both by the number of organizations using the provider, and by the average number of cloud resources managed per organization.

One of our guiding lights for Pulumi has always been to help organizations to scale up the complexity, capability, and richness of what they can build in the cloud, and in specific on the AWS platform. AWS offers an enormous number of powerful building block services, and organizations can stitch those building blocks together in countless ways to accomplish their needs. Pulumi brings a variety of software engineering tools to bear to help with this - rich programming languages, IDE productivity, testing, policy, and fast iteration. But none is more important than Pulumi’s focus on enabling the creation of [reusable infrastructure components](https://www.pulumi.com/docs/concepts/resources/components/) - higher level components that provide their own API interface built from the powerful building blocks of the underlying cloud resources.
One of our guiding lights for Pulumi has always been to help organizations to scale up the complexity, capability, and richness of what they can build in the cloud, and in specific on the AWS platform. AWS offers an enormous number of powerful building block services, and organizations can stitch those building blocks together in countless ways to accomplish their needs. Pulumi brings a variety of software engineering tools to bear to help with this - rich programming languages, IDE productivity, testing, policy, and fast iteration. But none is more important than Pulumi’s focus on enabling the creation of [reusable infrastructure components](https://www.pulumi.com/docs/iac/concepts/components/) - higher level components that provide their own API interface built from the powerful building blocks of the underlying cloud resources.

The Crosswalk for AWS libraries offer components that help address many of the most common use cases we’ve seen AWS users need to tackle - configuring the many components of their VPC network setup, running containers on Amazon ECS and Fargate, configuring a fully featured and production ready Amazon EKS Cluster, and setting up the infrastructure and functions needed as part of a serverless architecture. All with just a few lines of code that offers AWS best practices out of the box, while offering the ability to scale up into the full features of the AWS platform.

Expand Down
Loading
Loading