Pulumi - Developer-First Infrastructure as Code. Your Cloud, Your Language, Your Way ๐Ÿš€

Overview

Slack GitHub Discussions NPM version Python version NuGet version GoDoc License Gitpod ready-to-code

Pulumi's Infrastructure as Code SDK is the easiest way to create and deploy cloud software that use containers, serverless functions, hosted services, and infrastructure, on any cloud.

Simply write code in your favorite language and Pulumi automatically provisions and manages your AWS, Azure, Google Cloud Platform, and/or Kubernetes resources, using an infrastructure-as-code approach. Skip the YAML, and use standard language features like loops, functions, classes, and package management that you already know and love.

For example, create three web servers:

index.html nohup python -m SimpleHTTPServer 80 &`, }); } ">
let aws = require("@pulumi/aws");
let sg = new aws.ec2.SecurityGroup("web-sg", {
    ingress: [{ protocol: "tcp", fromPort: 80, toPort: 80, cidrBlocks: ["0.0.0.0/0"]}],
});
for (let i = 0; i < 3; i++) {
    new aws.ec2.Instance(`web-${i}`, {
        ami: "ami-7172b611",
        instanceType: "t2.micro",
        securityGroups: [ sg.name ],
        userData: `#!/bin/bash
            echo "Hello, World!" > index.html
            nohup python -m SimpleHTTPServer 80 &`,
    });
}

Or a simple serverless timer that archives Hacker News every day at 8:30AM:

{ require("https").get("https://news.ycombinator.com", res => { let content = ""; res.setEncoding("utf8"); res.on("data", chunk => content += chunk); res.on("end", () => new aws.sdk.DynamoDB.DocumentClient().put({ TableName: snapshots.name.get(), Item: { date: Date.now(), content }, }).promise()); }).end(); }); ">
const aws = require("@pulumi/aws");

const snapshots = new aws.dynamodb.Table("snapshots", {
    attributes: [{ name: "id", type: "S", }],
    hashKey: "id", billingMode: "PAY_PER_REQUEST",
});

aws.cloudwatch.onSchedule("daily-yc-snapshot", "cron(30 8 * * ? *)", () => {
    require("https").get("https://news.ycombinator.com", res => {
        let content = "";
        res.setEncoding("utf8");
        res.on("data", chunk => content += chunk);
        res.on("end", () => new aws.sdk.DynamoDB.DocumentClient().put({
            TableName: snapshots.name.get(),
            Item: { date: Date.now(), content },
        }).promise());
    }).end();
});

Many examples are available spanning containers, serverless, and infrastructure in pulumi/examples.

Pulumi is open source under the Apache 2.0 license, supports many languages and clouds, and is easy to extend. This repo contains the pulumi CLI, language SDKs, and core Pulumi engine, and individual libraries are in their own repos.

Welcome

  • Getting Started: get up and running quickly.

  • Tutorials: walk through end-to-end workflows for creating containers, serverless functions, and other cloud services and infrastructure.

  • Examples: browse a number of useful examples across many languages, clouds, and scenarios including containers, serverless, and infrastructure.

  • Reference Docs: read conceptual documentation, in addition to details on how to configure Pulumi to deploy into your AWS, Azure, or Google Cloud accounts, and/or Kubernetes cluster.

  • Community Slack: join us over at our community Slack channel. Any and all discussion or questions are welcome.

  • GitHub Discussions: Ask your questions or share what you're building with Pulumi.

  • Roadmap: check out what's on the roadmap for the Pulumi project over the coming months.

Getting Started

Watch the video

See the Get Started guide to quickly get started with Pulumi on your platform and cloud of choice.

Otherwise, the following steps demonstrate how to deploy your first Pulumi program, using AWS Serverless Lambdas, in minutes:

  1. Install:

    To install the latest Pulumi release, run the following (see full installation instructions for additional installation options):

    $ curl -fsSL https://get.pulumi.com/ | sh
  2. Create a Project:

    After installing, you can get started with the pulumi new command:

    $ mkdir pulumi-demo && cd pulumi-demo
    $ pulumi new hello-aws-javascript

    The new command offers templates for all languages and clouds. Run it without an argument and it'll prompt you with available projects. This command created an AWS Serverless Lambda project written in JavaScript.

  3. Deploy to the Cloud:

    Run pulumi up to get your code to the cloud:

    $ pulumi up

    This makes all cloud resources needed to run your code. Simply make edits to your project, and subsequent pulumi ups will compute the minimal diff to deploy your changes.

  4. Use Your Program:

    Now that your code is deployed, you can interact with it. In the above example, we can curl the endpoint:

    $ curl $(pulumi stack output url)
  5. Access the Logs:

    If you're using containers or functions, Pulumi's unified logging command will show all of your logs:

    $ pulumi logs -f
  6. Destroy your Resources:

    After you're done, you can remove all resources created by your program:

    $ pulumi destroy -y

To learn more, head over to pulumi.com for much more information, including tutorials, examples, and details of the core Pulumi CLI and programming model concepts.

Platform

CLI

Architecture Build Status
Linux/macOS x64 Linux x64 Build Status
Windows x64 Windows x64 Build Status

Languages

Language Status Runtime
JavaScript Stable Node.js 12+
TypeScript Stable Node.js 12+
Python Stable Python 3.6+
Go Stable Go 1.14+
.NET (C#/F#/VB.NET) Stable .NET Core 3.1+

Clouds

See Supported Clouds for the full list of supported cloud and infrastructure providers.

Contributing

Please See CONTRIBUTING.md for information on building Pulumi from source or contributing improvements.

Comments
  • Toward replacing MSBuild with make+bash on Windows

    Toward replacing MSBuild with make+bash on Windows

    Description

    The main goal of this PR is to have CI run Windows verifications using the same set of Bash+Makefiles that we use on Mac and Linux workers, instead of using a separately coded MSBuild logic as previously.

    It turns out that a lot of tests were never run on Windows (intentionally or not) and therefore require explicit skips or fixes for non-cross-platform builds.

    As a positive side-effect of this refactor, test subset splitting to speed up CI runs now works for Windows in the same way as Linux and Mac.

    Another change I included here that was making it easier to debug issues is making GHA aware of individual test suite steps instead of running one large make test_all target. At the cost of introducing some duplication in the GHA YAML vs Makefile itself, test failures are now isolated to an explicit step that shows which test suite they belong to, which to me makes it a lot faster to read and make sense of failing test output. It also is easy to see how much time each test suite takes.

    The PR does not actually remove the MSBuild project yet as the change only touches PR verification workflow for starters, and will need to be promoted to the master+nightlies+release workflows to fully deprecate MSBuild.

    • [x] Needs https://github.com/pulumi/pulumi/pull/8634 to fix some failures
    • [ ] Fix to use binary installer for gotestsum (source installer is slow)
      • this can be deferred for later, we're just paying extra 30sec on builds, an annoyance
    • [x] Need to check if any of newly introduced windows skips can be relaxed to actually run the tests
      • turned out a bit non-trivial, logged follow up #8646 #8647 #8648 #8649
    • [ ] Verify if we want to keep sxs tests skip
      • it appears that the test is about TypeScript compatibility between HEAD and last-shipped Pulumi; it incurs unusually high cost as it is compiling a node dependency with c/cpp node_gyp; moreover it fails on Windows. I'd recommend keeping it skipped on Windows and even perhaps moving it out of PR verification flow into nightlies/master only, unless we can figure out caching that speeds it up a lot
    • [ ] Verify if OK to skip code coverage on Windows (the trick with coverage-enabled Pulumi build is not working)
      • at this point it seems diminishing returns to push for coverage collection on Windows

    Fixes # (issue)

    Checklist

    • [ ] I have added tests that prove my fix is effective or that my feature works
    • [ ] Yes, there are changes in this PR that warrants bumping the Pulumi Service API version
    impact/no-changelog-required 
    opened by t0yv0 254
  • WIP: try to retire msbuild

    WIP: try to retire msbuild

    Description

    Fixes pulumi/home#1692

    Checklist

    • [ ] I have added tests that prove my fix is effective or that my feature works
    • [ ] Yes, there are changes in this PR that warrants bumping the Pulumi Service API version
    impact/no-changelog-required 
    opened by t0yv0 176
  • Reify `Input` and `Optional` types in the schema type system.

    Reify `Input` and `Optional` types in the schema type system.

    These changes support arbitrary combinations of input + plain types within a schema. Handling plain types at the property level was not sufficient to support such combinations. Reifying these types required updating quite a bit of code. This is likely to have caused some temporary complications, but should eventually lead to substantial simplification in the SDK and program code generators.

    With the new design, input and optional types are explicit in the schema type system. Optionals will only appear at the outermost level of a type (i.e. Input<Optional<>>, Array<Optional<>>, etc. will not occur). In addition to explicit input types, each object type now has a "plain" shape and an "input" shape. The former uses only plain types; the latter uses input shapes wherever a plain type is not specified. Plain types are indicated in the schema by setting the "plain" property of a type spec to true.

    impact/no-changelog-required 
    opened by pgavlin 142
  • [codegen/typescript] Call site defaults for plain Pulumi Object types

    [codegen/typescript] Call site defaults for plain Pulumi Object types

    Description

    Apply a default function when a object type is passed as an argument to Resource.

    Partial fix for: #8132

    Note: the massive number of files changes is because I needed to change the name of our registration inputs to resourceInputs. The old name (just inputs) conflicted with the inputs package. Changes were made to nodejs/gen.go and the test added is called env-helper (in codegen/internal/test/testdata).

    Checklist

    • [x] I have added tests that prove my fix is effective or that my feature works
    • [ ] Yes, there are changes in this PR that warrants bumping the Pulumi Service API version
    language/javascript area/codegen 
    opened by iwahbe 133
  • 5758 for Node JS

    5758 for Node JS

    Description

    Fixes #7944 Part of #5758 for Node JS.

    This brings Node JS to parity with Go and Python. .NET is pending.

    @mikhailshilkov adding you to see if there are blockers to merging this we need to address first. This is a change in codegen and it increases the size of the generated packages. Currently PR checks on azure-native show up as failing which is slightly concerning to me. In the beginning of developing this feature I manually rebuilt azure-native and found a TypeScript compilation issue. I've cut out a part of the azure-native schema and added it to the test suite, so I do not believe the particular issues is happening again, but this is good to discuss. Should I go ahead and try to manually built azure-native with this change prior to merging?

    Thank you.

    Checklist

    • [ ] I have added tests that prove my fix is effective or that my feature works
    • [ ] Yes, there are changes in this PR that warrants bumping the Pulumi Service API version
    opened by t0yv0 130
  • [schema] Add IsOverlay option to disable codegen for particular types

    [schema] Add IsOverlay option to disable codegen for particular types

    Description

    Related to https://github.com/pulumi/docs/issues/6740

    Add a new IsOverlay option to schema types and functions that allows providers to document overlays in the schema. This makes it easier to generate API docs consistently, even for code that is generated outside of the typical codegen process.

    Fixes # (issue)

    Checklist

    • [ ] I have added tests that prove my fix is effective or that my feature works
    • [ ] Yes, there are changes in this PR that warrants bumping the Pulumi Service API version
    impact/no-changelog-required 
    opened by lblackstone 120
  • Do not generate Go inputty types for output-only schema types

    Do not generate Go inputty types for output-only schema types

    These changes prevent the Go SDK generator from generating input types that are never referenced by rest of the generated SDK. For example, if an object type never appears in a resource input property, these changes will prevent an input type from being generated for that object type. In further pursuit of this goal, these changes prevent the generation of input/output types for function inputs and arguments if function output versions are disabled or if the function does not need an output form.

    In order to preserve backwards compatibility, the extra input types can be retained by setting the generateExtraInputTypes property in the Go language options for a Pulumi package.

    The goal of these changes is to reduce the size of Go SDK, particularly for Azure-Native.

    Fixes: https://github.com/pulumi/pulumi/issues/8194

    opened by mikhailshilkov 119
  • Programgen updates to utilize fn.Output forms in examples and API docs (7949)

    Programgen updates to utilize fn.Output forms in examples and API docs (7949)

    Description

    The goal is to teach programgen to emit fn.Output forms of invokes to simplify example generation.

    Fixes #7949

    Checklist

    • [ ] I have added tests that prove my fix is effective or that my feature works
    • [ ] Yes, there are changes in this PR that warrants bumping the Pulumi Service API version
    opened by t0yv0 110
  • 5758 for C#/.NET

    5758 for C#/.NET

    Description

    Fixes #7945 Part of #5758 for .NET/C#

    Checklist

    • [ ] I have added tests that prove my fix is effective or that my feature works
    • [ ] Yes, there are changes in this PR that warrants bumping the Pulumi Service API version
    opened by t0yv0 108
  • Add an EnumType to the PCL model

    Add an EnumType to the PCL model

    Introduce a new type in enum type in PCL.

    Languages implementation:

    • [X] C#
    • [x] Python
    • [x] TypeScript
    • [x] Go

    Description

    Fixes #6263

    Checklist

    • [x] I have added tests that prove my fix is effective or that my feature works
    • [ ] Yes, there are changes in this PR that warrants bumping the Pulumi Service API version
    impact/no-changelog-required 
    opened by iwahbe 101
  • CI: revamp, use an explicit matrix of test commands

    CI: revamp, use an explicit matrix of test commands

    This vastly increases the number of test jobs, but should have the benefit of ensuring each performs a smaller amount of work and completes more quickly, improving test time when there is low contention for runners.

    Work done in this PR, by commit and impact:

    Re-enables linting on PRs: the GitHub Action lint job by setting the matrix parameters that steps within the job required; it's now working and the linting for Python is fixed.

    Improves readability of the test.yml, test-fast.yml GitHub Action workflows the test matrix an explicit set of shell commands that can be run locally, making it easier to determine which commands to run to reproduce integration test failures.

    Improves verification of what test will run for a given makefile by adding a dryrun mode to all go tests. If the environment variable is set PULUMI_TEST_DRYRUN=true, go tests will print the command line it would run and exit without running tests.

    Improves reliability of running the the monolithic tests/integration package by partitioning it into 5 tests, one for each SDK and one for the rest. This is done by generating a -Run ... command with regular expressions matching tests for each SDK. You can observe in this in the CLI by running:

    PULUMI_TEST_DRYRUN=true make test_integration
    

    Removes special cases to skip certain tests on Windows.

    Halves the time to run the pkg tests by separating out the pkg/codegen/nodejs test into its own job. This package's tests take approximately 15 minutes on their own.

    Fixes the sdk/nodejs sxs test by updating the test to work correctly on Linux & Windows, it was testing an obsolete version of Pulumi (=1.6.0) and it was updated and simplified to enable testing multiple versions of TypeScript, presently it tests ~3.7.3, ^3, and ^4.

    Fixes Python linting to 100% success.

    Improves GitHub Actions caching in all of our jobs by updating setup steps for Python, Go, and Node to enable caching when available.

    Adds a heartbeat that logs to the GitHub Actions every 10 seconds - on Windows "heartbeat" and on *nix a nice ๐Ÿ’“ emoji.

    Lastly, parallelizes almost all of our tests and adds a lint rule to ensure future tests are parallelized. This helps keep Windows jobs in particular within a reasonable time to complete.

    impact/no-changelog-required 
    opened by AaronFriel 99
  • [sdk/go] pulumi.IDOutput needs ToInt*Output methods

    [sdk/go] pulumi.IDOutput needs ToInt*Output methods

    Hello!

    • Vote on this issue by adding a ๐Ÿ‘ reaction
    • If you want to implement this feature, comment to let us know (we'll work with you on design, scheduling, etc.)

    Issue details

    This reflects the issue raised on: pulumi/pulumi-hcloud#52.

    In a number of providers, including Hetzner and Digital Ocean, the ID of a resource returned by their API is a number and is expected to be passed in as an int in many parts of the API, not a string or stringified int. This results in having to write really awkward code in Go like:

    hcloud.NewServer(ctx, name, &hcloud.ServerArgs{
    ...
    		PublicNets: hcloud.ServerPublicNetArray{
    			&hcloud.ServerPublicNetArgs{
    				Ipv4Enabled: pulumi.Bool(true),
    				Ipv6Enabled: pulumi.Bool(true),
    				Ipv4:        server.ipv4.ID().ToStringOutput().ApplyT(IDtoIntPtr).(pulumi.IntPtrOutput),
    				Ipv6:        server.ipv6.ID().ToStringOutput().ApplyT(IDtoIntPtr).(pulumi.IntPtrOutput),
    			},
    		},
    	},
    

    With IDtoIntPtr being:

    func IDtoIntPtr(val string) (*int, error) {
    	i, err := strconv.Atoi(val)
    	return &i, err
    }
    

    The fact that we don't have a ToInt(Ptr)Output on the IDOutput makes this code really verbose. When you initially run into this issue it's also really hard to figure out how to get around it as you need to realise you need to chain ToStringOutput with ApplyT.

    There might be other ways to solve this, but so far the ToStringOutput().ApplyT() chain seems the only solution people have come up with.

    kind/enhancement needs-triage 
    opened by daenney 1
  • [sdk/go] RegisterResourceOutputs does not result in any outputs

    [sdk/go] RegisterResourceOutputs does not result in any outputs

    What happened?

    I created a component resource based on the docs on https://www.pulumi.com/docs/intro/concepts/resources/components/. I call ctx.RegisterResourceOutputs at the end to register some outputs. When running pulumi up no outputs are displayed and no outputs are available according to pulumi stack output.

    Steps to reproduce

    • Create a component resource
    • Call ctx.RegisterResourceOutputs with pulumi.Map{} that contains key-value pairs
    • Run pulumi up

    Expected Behavior

    I expected the outputs I register to be shown at the end of pulumi up.

    Actual Behavior

    No outputs seem to exist and are not displayed on the console.

    Output of pulumi about

    CLI
    Version 3.46.1 Go Version go1.19.3 Go Compiler gc

    Plugins NAME VERSION go unknown hcloud 1.10.1

    Host
    OS arch Version
    Arch x86_64

    This project is written in go: executable='/usr/bin/go' version='go version go1.19.4 linux/amd64'

    Current Stack: prod

    TYPE URN pulumi:pulumi:Stack urn:pulumi:prod::infra::pulumi:pulumi:Stack::infra-prod pulumi:providers:hcloud urn:pulumi:prod::infra::pulumi:providers:hcloud::provider hcloud:index/placementGroup:PlacementGroup urn:pulumi:prod::infra::hcloud:index/placementGroup:PlacementGroup::spread hcloud:index/sshKey:SshKey urn:pulumi:prod::infra::hcloud:index/sshKey:SshKey::laptop hcloud:index/sshKey:SshKey urn:pulumi:prod::infra::hcloud:index/sshKey:SshKey::desktop hcloud:index/firewall:Firewall urn:pulumi:prod::infra::hcloud:index/firewall:Firewall::firewall

    Found no pending operations associated with prod

    Backend
    Name pulumi.com URL https://app.pulumi.com/daenney User daenney Organizations daenney

    Dependencies: NAME VERSION github.com/pulumi/pulumi-hcloud/sdk 1.10.1 github.com/pulumi/pulumi/sdk/v3 3.44.2

    Pulumi locates its logs in /tmp by default

    Additional context

    type Server struct {
    	pulumi.ResourceState
    
    	ipv4     *hcloud.PrimaryIp
    	ipv6     *hcloud.PrimaryIp
    	instance *hcloud.Server
    }
    
    func NewServer(ctx *pulumi.Context, name string, args *ServerArgs, opts ...pulumi.ResourceOption) (*Server, error) {
    
    	server := &Server{}
    	if err := ctx.RegisterComponentResource("internal:Server", name, server, opts...); err != nil {
    		return nil, err
    	}
    	... create some resources ...
    
    	if err := ctx.RegisterResourceOutputs(server, pulumi.Map{
    		"ipv4": pulumi.Map{
    			"address": server.ipv4.IpAddress,
    			"network": server.ipv4.IpNetwork,
    			"id":      server.ipv4.ID(),
    		},
    		"ipv6": pulumi.Map{
    			"address": server.ipv6.IpAddress,
    			"network": server.ipv6.IpNetwork,
    			"id":      server.ipv6.ID(),
    		},
    		"id": server.instance.ID(),
    	}); err != nil {
    		return server, err
    	}
    
    	return server, nil
    }
    
    $ pulumi up
    Previewing update (prod)
    
    View Live: https://app.pulumi.com/daenney/infra/prod/previews/<redacted>
    
         Type                          Name        Plan       
         pulumi:pulumi:Stack           infra-prod             
     +   โ””โ”€ internal:Server            eu2         create     
     +      โ”œโ”€ hcloud:index:PrimaryIp  eu2-ipv6    create     
     +      โ”œโ”€ hcloud:index:PrimaryIp  eu2-ipv4    create     
     +      โ””โ”€ hcloud:index:Server     eu2         create     
    
    
    Resources:
        + 4 to create
        6 unchanged
    
    Do you want to perform this update? yes
    Updating (prod)
    
    View Live: https://app.pulumi.com/daenney/infra/prod/updates/20
    
         Type                          Name        Status            
         pulumi:pulumi:Stack           infra-prod   (0.00s)          
     +   โ””โ”€ internal:Server            eu2         created (21s)     
     +      โ”œโ”€ hcloud:index:PrimaryIp  eu2-ipv6    created (1s)      
     +      โ”œโ”€ hcloud:index:PrimaryIp  eu2-ipv4    created (1s)      
     +      โ””โ”€ hcloud:index:Server     eu2         created (18s)     
    
    
    Resources:
        + 4 created
        6 unchanged
    
    Duration: 24s
    

    Contributing

    Vote on this issue by adding a ๐Ÿ‘ reaction. To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already).

    kind/bug needs-triage 
    opened by daenney 1
  • testing/integration: Fix failure without GOPATH

    testing/integration: Fix failure without GOPATH

    TestGoModEdits requires that one of the following conditions be true for the test to pass:

    • pulumi/pulumi is checked out at $GOPATH/src/github.com/pulumi/pulumi
    • PULUMI_GO_DEP_ROOT is set to the directory where it's checked out

    With wide usage of Go modules, we're less likely to have folks working under GOPATH.

    As for PULUMI_GO_DEP_ROOT, it makes sense for the generic utility: Being able to specify where the dependency is checked out is useful on a per-project basis, but it makes less sense for this test. This test is specifically checking the values inside the sdk/go.mod and the path for that is always fixed.

    This change modifies TestGoModEdits to pass no matter where the repository is checked out -- as long as it's called "pulumi". It does so by hard-coding the position of the repository root relative to the test directory.

    This feels slightly icky because depRoot refers to the directory that contains the "pulumi" directory, but I think that this is less likely to break and easier to fix, versus looking for a go.mod file as the project structure evolves over time.

    impact/no-changelog-required 
    opened by abhinav 1
  • Renamed resource URN is impossible to rename back because it is invalid

    Renamed resource URN is impossible to rename back because it is invalid

    What happened?

    I changed a child-parent relationship for an existing Kubernetes resource. That caused a problem where pulumi thought that's a whole new resource.

    I wanted to rename the resource in the state manually, because as I understand it, the parent-child relation is defined by the resource name:

    pulumi state rename \
        'urn:pulumi:dev::xxx-dev::kubernetes:core/v1:Namespace::amazon_cloudwatchNamespace' \
        'urn:pulumi:dev::xxx-dev::eks:index:Cluster$kubernetes:core/v1:Namespace::amazon_cloudwatchNamespace'
    

    This command succeeded, but (I'll blame the documentation here) the new name was not just the second argument. In fact, the second argument got appended to a "hardcoded prefix" urn:pulumi:dev::xxx-dev::kubernetes:core/v1:Namespace (which, when looking at it now, makes sense, it's just the docs do not mention that).

    So, the new URN of the resource is:

    urn:pulumi:dev::xxx-dev::kubernetes:core/v1:Namespace::urn:pulumi:dev::xxx-dev::eks:index:Cluster$kubernetes:core/v1:Namespace::amazon_cloudwatchNamespace
    

    This is also reported by pulumi stack --show-urns.

    When I realized my mistake, I wanted to fix this mistake it by renaming the resource back to the original, so I ran

    pulumi state rename \
        'urn:pulumi:dev::xxx-dev::kubernetes:core/v1:Namespace::urn:pulumi:dev::xxx-dev::eks:index:Cluster$kubernetes:core/v1:Namespace::amazon_cloudwatchNamespace' \
        'amazon_cloudwatchNamespace'
    

    But now I am getting error from the pulumi CLI:

    error: The provided input URN is not valid
    

    ... which is probably true, fair enough, but then I shouldn't have been allowed to do the rename in the first place. And the state clearly internally has this URN because it's printed out to me.

    Luckily this is just a stack in development so I can just nuke it, but if there is a way to force-rename a resource with an invalid URN, that would be great.

    Edit: pulumi destroy seems to not have any problems with the invalid URN (although it renders then resource name as urn:pulumi:dev).

    Steps to reproduce

    pulumi state rename <URN> <other-URN>
    pulumi stack --show-urns
    
    # This will fail
    pulumi state rename <long-long-URN> <valid name>
    

    Expected Behavior

    Pulumi should not allow me to rename a resource to an invalid URN

    Actual Behavior

    Pulumi let me rename a resource to an invalid URN and now I cannot get it back

    Output of pulumi about

    CLI
    Version      3.50.2
    Go Version   go1.19.4
    Go Compiler  gc
    
    Plugins
    NAME        VERSION
    aws         5.24.0
    awsx        1.0.1
    docker      3.6.1
    eks         1.0.1
    kubernetes  3.23.1
    python      unknown
    
    Host
    OS       darwin
    Version  12.5.1
    Arch     x86_64
    
    Backend
    Name           pulumi.com
    URL            https://app.pulumi.com/melkamar
    User           melkamar
    Organizations  melkamar
    
    Dependencies:
    NAME         VERSION
    pip          22.3.1
    pulumi-awsx  1.0.1
    pulumi-eks   1.0.1
    setuptools   65.6.3
    wheel        0.38.4
    

    Additional context

    No response

    Contributing

    Vote on this issue by adding a ๐Ÿ‘ reaction. To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already).

    kind/bug needs-triage 
    opened by melkamar 0
  • Add JSONUnmarshal to go sdk

    Add JSONUnmarshal to go sdk

    Description

    Partner method to JSONMarshal.

    Checklist

    • [x] I have added tests that prove my fix is effective or that my feature works
    • [x] I have run make changelog and committed the changelog/pending/<file> documenting my change
    • [ ] Yes, there are changes in this PR that warrants bumping the Pulumi Service API version
    opened by Frassle 1
  • Distribute Pulumi CLI as npm package

    Distribute Pulumi CLI as npm package

    Hello!

    • Vote on this issue by adding a ๐Ÿ‘ reaction
    • If you want to implement this feature, comment to let us know (we'll work with you on design, scheduling, etc.)

    Issue details

    It would be nice to install Pulumi directly from npm, since typescript is arguably the main target. In this way, the pulumi cli could be run with just npx [email protected]

    Moreover, we would be able to track the exact cli version inside our package.json file, and integrate the installation process with other tools relying on npm scripts.

    If you wish, I could help with the actual implementation.

    kind/enhancement 
    opened by lucafabbian 1
Releases(v3.50.2)
Flexible and scalable monitoring framework

Presentation of the Shinken project Welcome to the Shinken project. Shinken is a modern, Nagios compatible monitoring framework, written in Python. It

Gabรจs Jean 1.1k Dec 18, 2022
A collection of beginner-friendly DevOps content

mansion Mansion is just a testing repo for learners to commit into open source project. These are the steps you need to learn: Please do not edit thes

Bryan Lim 62 Nov 30, 2022
Repository tracking all OpenStack repositories as submodules. Mirror of code maintained at opendev.org.

OpenStack OpenStack is a collection of interoperable components that can be deployed to provide computing, networking and storage resources. Those inf

Mirrors of opendev.org/openstack 4.6k Dec 28, 2022
A Kubernetes operator that creates UptimeRobot monitors for your ingresses

This operator automatically creates uptime monitors at UptimeRobot for your Kubernetes Ingress resources. This allows you to easily integrate uptime monitoring of your services into your Kubernetes d

Max 49 Dec 14, 2022
Let's learn how to build, release and operate your containerized applications to Amazon ECS and AWS Fargate using AWS Copilot.

๐Ÿš€ Welcome to AWS Copilot Workshop In this workshop, you'll learn how to build, release and operate your containerised applications to Amazon ECS and

Donnie Prakoso 15 Jul 14, 2022
This repository contains code examples and documentation for learning how applications can be developed with Kubernetes

BigBitBus KAT Components Click on the diagram to enlarge, or follow this link for detailed documentation Introduction Welcome to the BigBitBus Kuberne

51 Oct 16, 2022
A tool to clone efficiently all the repos in an organization

cloner A tool to clone efficiently all the repos in an organization Installation MacOS (not yet tested) python3 -m venv .venv pip3 install virtualenv

Ramon 6 Apr 15, 2022
This is a tool to develop, build and test PHP extensions in Docker containers.

Develop, Build and Test PHP Extensions This is a tool to develop, build and test PHP extensions in Docker containers. Installation Clone this reposito

Suora GmbH 10 Oct 22, 2022
Emissary - open source Kubernetes-native API gateway for microservices built on the Envoy Proxy

Emissary-ingress Emissary-Ingress is an open-source Kubernetes-native API Gateway + Layer 7 load balancer + Kubernetes Ingress built on Envoy Proxy. E

Emissary Ingress 4k Dec 31, 2022
MLops tools review for execution on multiple cluster types: slurm, kubernetes, dask...

MLops tools review focused on execution using multiple cluster types: slurm, kubernetes, dask...

4 Nov 30, 2022
Simple ssh overlay for easy, remote server management written in Python GTK with paramiko

Simple "ssh" overlay for easy, remote server management written in Python GTK with paramiko

kล‚apouch 3 May 01, 2022
A cron monitoring tool written in Python & Django

Healthchecks Healthchecks is a cron job monitoring service. It listens for HTTP requests and email messages ("pings") from your cron jobs and schedule

Healthchecks 5.8k Jan 02, 2023
Coding For Entrepreneurs 100 Jan 01, 2023
Linux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP, DNS, Elastic, Network, Virtualization. DevOps Interview Questions

Linux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP, DNS, Elastic, Network, Virtualization. DevOps Interview Questions

Arie Bregman 35.1k Jan 02, 2023
This project shows how to serve an TF based image classification model as a web service with TFServing, Docker, and Kubernetes(GKE).

Deploying ML models with CPU based TFServing, Docker, and Kubernetes By: Chansung Park and Sayak Paul This project shows how to serve a TensorFlow ima

Chansung Park 104 Dec 28, 2022
Checkmk kube agent - Checkmk Kubernetes Cluster and Node Collectors

Checkmk Kubernetes Cluster and Node Collectors Checkmk cluster and node collecto

tribe29 GmbH 15 Dec 26, 2022
Iris is a highly configurable and flexible service for paging and messaging.

Iris Iris core, API, UI and sender service. For third-party integration support, see iris-relay, a stateless proxy designed to sit at the edge of a pr

LinkedIn 715 Dec 28, 2022
Inferoxy is a service for quick deploying and using dockerized Computer Vision models.

Inferoxy is a service for quick deploying and using dockerized Computer Vision models. It's a core of EORA's Computer Vision platform Vision Hub that runs on top of AWS EKS.

94 Oct 10, 2022
Python job scheduling for humans.

schedule Python job scheduling for humans. Run Python functions (or any other callable) periodically using a friendly syntax. A simple to use API for

Dan Bader 10.4k Jan 02, 2023
Pulumi - Developer-First Infrastructure as Code. Your Cloud, Your Language, Your Way ๐Ÿš€

Pulumi's Infrastructure as Code SDK is the easiest way to create and deploy cloud software that use containers, serverless functions, hosted services,

Pulumi 14.7k Jan 08, 2023