Skip to content

A Pulumi provider that safely enables randomness for resources

License

Notifications You must be signed in to change notification settings

pulumi/pulumi-random

Actions Status Slack NPM version NuGet version Python version PkgGoDev License

Random Provider

The random provider allows the safe use of randomness in a Pulumi program. This allows you to generate resource properties, such as names, that contain randomness in a way that works with Pulumi's goal state oriented approach. Using randomness as usual would not work well with Pulumi, because by definition, each time the program is evaluated, a new random state would be produced, necessitating re-convergence on the goal state. This provider understands how to work with the Pulumi resource lifecycle to accomplish randomness safely and in a way that works as desired.

Installing

This package is available in many languages in the standard packaging formats.

Node.js (Java/TypeScript)

To use from JavaScript or TypeScript in Node.js, install using either npm:

$ npm install @pulumi/random

or yarn:

$ yarn add @pulumi/random

Python

To use from Python, install using pip:

$ pip install pulumi_random

Go

To use from Go, use go get to grab the latest version of the library

$ go get github.com/pulumi/pulumi-random/sdk/v4/go/...

.NET

To use from .NET, install using dotnet add package:

$ dotnet add package Pulumi.Random

Example

For example, to generate a random password, allocate a RandomPassword resource and then use its result output property (of type Output<string>) to pass to another resource.

import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as random from "@pulumi/random";

const password = new random.RandomPassword("password", {
    length: 16,
    overrideSpecial: "_%@",
    special: true,
});
const example = new aws.rds.Instance("example", {
    password: password.result,
});

Reference

For further information, please visit the random provider docs or for detailed reference documentation, please visit the API docs.