pulumi-local


Namepulumi-local JSON
Version 1.3.0 PyPI version JSON
download
home_pagehttps://github.com/localstack/pulumi-local
SummaryThin wrapper script to use Pulumi with LocalStack
upload_time2024-09-30 09:25:58
maintainerNone
docs_urlNone
authorLocalStack Team
requires_pythonNone
licenseApache License 2.0
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Pulumi CLI for LocalStack

**<u>DISCLAIMER</u>: pulumi-local currently does not support the _aws-native_ package. ([pulumi/pulumi-aws-native #108](https://github.com/pulumi/pulumi-aws-native/issues/108))**  

This package provides the `pulumilocal` command, which is a thin wrapper around the `pulumi`
command line interface to use [`Pulumi`](https://github.com/pulumi/pulumi) with [LocalStack](https://github.com/localstack/localstack).

## Installation

You can install the `pulumilocal` command via `pip`:

```
pip install pulumi-local
```

## Prerequisites

Please make sure you have a LocalStack instance running on your local machine.

## Usage

The `pulumilocal` command has the same usage as the `pulumi` command. For detailed usage,
please refer to the man pages of `pulumi -h`.

### Add environment variables to store state on local backend (optional)
```shell
export PULUMI_CONFIG_PASSPHRASE=lsdevtest
export PULUMI_BACKEND_URL=file://`pwd`/myproj
```
_Note: For further options please consult the official documentation on available [environment variables][env_vars] and [local backend][local_backend]._

[env_vars]: https://www.pulumi.com/docs/cli/environment-variables/
[local_backend]: https://www.pulumi.com/docs/concepts/state/#local-filesystem

### Create a new Pulumi project with stack name lsdev
```shell
mkdir myproj
pulumilocal new typescript -y -s lsdev --cwd myproj
```
_Note: `--cwd` switch is unnecessary if commands are being run in project directory._

### Select and create the lsdev Pulumi stack
This is unnecessary if you just did the `new typescript` command above as it will already be selected.
```shell
pulumilocal stack select -c lsdev --cwd myproj
```

### Deploy the stack to LocalStack
```shell
pulumilocal up --cwd myproj
```

## How it works

When running any pulumi deployment command like `pulumilocal ["up", "destroy", "preview", "cancel"]`,
the wrapper script runs the `pulumi config` command to augment the pulumi config with LocalStack AWS configuration,
and then runs the original pulumi command. 

## Configurations

You can configure the following environment variables:

* `AWS_ENDPOINT_URL`: hostname and port of the target LocalStack instance
* `LOCALSTACK_HOSTNAME`: __(Deprecated)__ Target host to use for connecting to LocalStack (default: `localhost`)
* `EDGE_PORT`: __(Deprecated)__ Target port to use for connecting to LocalStack (default: `4566`)
* `PULUMI_CMD`: Name of the executable Pulumi command on the system PATH (default: `pulumi`)
* `CONFIG_STRATEGY`: the strategy to handle config merging. If stack config already exists `pulumi-local` will prompt for user input. Possible values are:
  * `overwrite` (default): pulumi-local will overwrite the stack's config and replaces it with values necessary to communicate with LocalStack. This strategy is equivalent of the legacy behaviour.
  * `override`: generates a temporary config file from the current stack config and overrides it's values, after run this file will be deleted. The name of the file is generated from the `LS_STACK_NAME` variable.
  * `separate`: creates a separate stack with the stack name set in the `LS_STACK_NAME` env variable.
> [!NOTE]
> The fall through to the default strategy with a misconfigured or missing `CONFIG_STRATEGY` environment variable will be deprecated by the next `pulumi-local` version.
* `LS_STACK_NAME`: the stack name to use when the config file generated either with the `override` and `separate` strategy.
* `DRY_RUN`: only usable with `CONFIG_STRATEGY=override`, as a result the created temporary stack config is not deleted.
* `NON_INTERACTIVE`: starts a non-interactive session where all user prompts are automatically accepted

> [!WARNING]
> Using the `DRY_RUN` and `NON_INTERACTIVE` flags together changes the stack configuration without confirmation prompt. Use with caution!

## Deploying to AWS
Use your preferred Pulumi backend. https://www.pulumi.com/docs/concepts/state/#deciding-on-a-state-backend
Change the `pulumilocal` command in the instructions above to `pulumi`.

## Change Log

* v1.3.0: Add config merging strategies, dry-run and non-interactive runs.
* v1.2.2: Fix project URL in package metadata
* v1.2.1: Add support for AWS_ENDPOINT_URL env variable
* v1.2.0: Added dynamic endpoint generation and tests
* v1.1: Added README to long description and update twine publish.
* v1.0: Using `pulumi config set-all` to set all the AWS provider configurating instead of modifying
  the Stack file directly. Removed defaulting the stack name to `localstack`. Added argparse. 
  Removed pyyaml dependency. Removed python2 package classifiers. 
* v0.6: Replace deprecated `s3ForcePathStyle` with `s3UsePathStyle` in default config
* v0.5: Remove deprecated `mobileanalytics` service config to fix invalid key error
* v0.4: Point pulumilocal.bat to the correct script
* v0.3: Add apigatewayv2 service endpoint
* v0.2: Add init command and add aws:region key by default
* v0.1: Initial release

## License

This software library is released under the Apache License, Version 2.0 (see `LICENSE`).

[pypi-version]: https://img.shields.io/pypi/v/pulumi-local.svg
[pypi]: https://pypi.org/project/pulumi-local/

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/localstack/pulumi-local",
    "name": "pulumi-local",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": null,
    "author": "LocalStack Team",
    "author_email": "info@localstack.cloud",
    "download_url": "https://files.pythonhosted.org/packages/ca/66/c435c31828c6b8c18aaff187e6ebbd0c2cf3bfdfd3f4e0be1cd82ee51905/pulumi_local-1.3.0.tar.gz",
    "platform": null,
    "description": "# Pulumi CLI for LocalStack\n\n**<u>DISCLAIMER</u>: pulumi-local currently does not support the _aws-native_ package. ([pulumi/pulumi-aws-native #108](https://github.com/pulumi/pulumi-aws-native/issues/108))**  \n\nThis package provides the `pulumilocal` command, which is a thin wrapper around the `pulumi`\ncommand line interface to use [`Pulumi`](https://github.com/pulumi/pulumi) with [LocalStack](https://github.com/localstack/localstack).\n\n## Installation\n\nYou can install the `pulumilocal` command via `pip`:\n\n```\npip install pulumi-local\n```\n\n## Prerequisites\n\nPlease make sure you have a LocalStack instance running on your local machine.\n\n## Usage\n\nThe `pulumilocal` command has the same usage as the `pulumi` command. For detailed usage,\nplease refer to the man pages of `pulumi -h`.\n\n### Add environment variables to store state on local backend (optional)\n```shell\nexport PULUMI_CONFIG_PASSPHRASE=lsdevtest\nexport PULUMI_BACKEND_URL=file://`pwd`/myproj\n```\n_Note: For further options please consult the official documentation on available [environment variables][env_vars] and [local backend][local_backend]._\n\n[env_vars]: https://www.pulumi.com/docs/cli/environment-variables/\n[local_backend]: https://www.pulumi.com/docs/concepts/state/#local-filesystem\n\n### Create a new Pulumi project with stack name lsdev\n```shell\nmkdir myproj\npulumilocal new typescript -y -s lsdev --cwd myproj\n```\n_Note: `--cwd` switch is unnecessary if commands are being run in project directory._\n\n### Select and create the lsdev Pulumi stack\nThis is unnecessary if you just did the `new typescript` command above as it will already be selected.\n```shell\npulumilocal stack select -c lsdev --cwd myproj\n```\n\n### Deploy the stack to LocalStack\n```shell\npulumilocal up --cwd myproj\n```\n\n## How it works\n\nWhen running any pulumi deployment command like `pulumilocal [\"up\", \"destroy\", \"preview\", \"cancel\"]`,\nthe wrapper script runs the `pulumi config` command to augment the pulumi config with LocalStack AWS configuration,\nand then runs the original pulumi command. \n\n## Configurations\n\nYou can configure the following environment variables:\n\n* `AWS_ENDPOINT_URL`: hostname and port of the target LocalStack instance\n* `LOCALSTACK_HOSTNAME`: __(Deprecated)__ Target host to use for connecting to LocalStack (default: `localhost`)\n* `EDGE_PORT`: __(Deprecated)__ Target port to use for connecting to LocalStack (default: `4566`)\n* `PULUMI_CMD`: Name of the executable Pulumi command on the system PATH (default: `pulumi`)\n* `CONFIG_STRATEGY`: the strategy to handle config merging. If stack config already exists `pulumi-local` will prompt for user input. Possible values are:\n  * `overwrite` (default): pulumi-local will overwrite the stack's config and replaces it with values necessary to communicate with LocalStack. This strategy is equivalent of the legacy behaviour.\n  * `override`: generates a temporary config file from the current stack config and overrides it's values, after run this file will be deleted. The name of the file is generated from the `LS_STACK_NAME` variable.\n  * `separate`: creates a separate stack with the stack name set in the `LS_STACK_NAME` env variable.\n> [!NOTE]\n> The fall through to the default strategy with a misconfigured or missing `CONFIG_STRATEGY` environment variable will be deprecated by the next `pulumi-local` version.\n* `LS_STACK_NAME`: the stack name to use when the config file generated either with the `override` and `separate` strategy.\n* `DRY_RUN`: only usable with `CONFIG_STRATEGY=override`, as a result the created temporary stack config is not deleted.\n* `NON_INTERACTIVE`: starts a non-interactive session where all user prompts are automatically accepted\n\n> [!WARNING]\n> Using the `DRY_RUN` and `NON_INTERACTIVE` flags together changes the stack configuration without confirmation prompt. Use with caution!\n\n## Deploying to AWS\nUse your preferred Pulumi backend. https://www.pulumi.com/docs/concepts/state/#deciding-on-a-state-backend\nChange the `pulumilocal` command in the instructions above to `pulumi`.\n\n## Change Log\n\n* v1.3.0: Add config merging strategies, dry-run and non-interactive runs.\n* v1.2.2: Fix project URL in package metadata\n* v1.2.1: Add support for AWS_ENDPOINT_URL env variable\n* v1.2.0: Added dynamic endpoint generation and tests\n* v1.1: Added README to long description and update twine publish.\n* v1.0: Using `pulumi config set-all` to set all the AWS provider configurating instead of modifying\n  the Stack file directly. Removed defaulting the stack name to `localstack`. Added argparse. \n  Removed pyyaml dependency. Removed python2 package classifiers. \n* v0.6: Replace deprecated `s3ForcePathStyle` with `s3UsePathStyle` in default config\n* v0.5: Remove deprecated `mobileanalytics` service config to fix invalid key error\n* v0.4: Point pulumilocal.bat to the correct script\n* v0.3: Add apigatewayv2 service endpoint\n* v0.2: Add init command and add aws:region key by default\n* v0.1: Initial release\n\n## License\n\nThis software library is released under the Apache License, Version 2.0 (see `LICENSE`).\n\n[pypi-version]: https://img.shields.io/pypi/v/pulumi-local.svg\n[pypi]: https://pypi.org/project/pulumi-local/\n",
    "bugtrack_url": null,
    "license": "Apache License 2.0",
    "summary": "Thin wrapper script to use Pulumi with LocalStack",
    "version": "1.3.0",
    "project_urls": {
        "Homepage": "https://github.com/localstack/pulumi-local"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ca66c435c31828c6b8c18aaff187e6ebbd0c2cf3bfdfd3f4e0be1cd82ee51905",
                "md5": "776b7572d3613d8b5b39ddc46de5b56f",
                "sha256": "440ae5151b037f78540f325251e760a93bd47406338b62f03efb2128833da8af"
            },
            "downloads": -1,
            "filename": "pulumi_local-1.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "776b7572d3613d8b5b39ddc46de5b56f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 13214,
            "upload_time": "2024-09-30T09:25:58",
            "upload_time_iso_8601": "2024-09-30T09:25:58.160604Z",
            "url": "https://files.pythonhosted.org/packages/ca/66/c435c31828c6b8c18aaff187e6ebbd0c2cf3bfdfd3f4e0be1cd82ee51905/pulumi_local-1.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-30 09:25:58",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "localstack",
    "github_project": "pulumi-local",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pulumi-local"
}
        
Elapsed time: 1.90377s