carica-cfn-tools - Tools to manage CloudFormation stack configuration
==================================================================================
Simple command line tools to create and update CloudFormation stacks that
make it easy to version-control both your templates and stack configurations
in one place. Supports a few proprietary transforms useful for dynamically
merging a manually maintained template with a generated template (for example,
sam.json from "chalice package") that contains resources you'd like to include
in your main template.
Development
-----------
The ``vinstall`` script uses the `venv` module to prepare a Python environment useful
for development, so you don't have to build and install carica-cfn-tools to be
able to run and test it.
#. Run ``./vinstall``
#. Activate the virtual environment by running ``. ./venv/bin/activate``
#. The ``console_scripts`` listed in ``setup.py`` are now in your path, so you
can simply run them like:
``carica-cfn ...``
Sample Stack Config
-------------------
::
Region: us-east-1
Bucket: mycorp-cfn-us-east-1
Name: WarehouseApp
Template: ../templates/warehouse-app.yml
Jinja: true
Tags:
env: dev
scale: large
cost: small
Parameters:
# Normal parameter values can include strings, numbers, booleans, etc.
Stage: dev
TableReadCapacityUnits: 10
TableWriteCapacityUnits: 5
AdminPassword:
# A parameter with a "ParameterStore" sub-key will be resolved to the
# SSM Parameter Store parameter with that name.
ParameterStore: dev.warehouseapp.admin-password
PostgreSQLPassword:
# A parameter with a "SecretsManager" sub-key will be resolved to the
# Secrets Manager secret with that ID.
SecretsManager: dev.warehouseapp.postgresql-password
Extras:
- ../cfn/static/logo.png
- ../cfn/static/index.html
JinjaExtras:
- ../cfn/includes/*.yml
JinjaExtrasContext:
FOO: bar
`Region` sets where the CloudFormation template and related resources will be
uploaded and where the CloudFormation stack will be created. This must match
the region the `Bucket` was created in. This is required.
`Bucket` sets where the CloudFormation template and related resources will be
uploaded. This is required.
`Name` sets the name of the CloudFormation stack. This is required.
`Template` is a relative path to the CloudFormation YAML or JSON template
file to create the stack from. This is required.
`Jinja` is an optional setting that controls whether `Template` will be
processed with Jinja2 before being uploaded. This setting does not enable
Jinja2 for extras; use `JinjaExtras` for that.
`Tags` may be used to set tags on the CloudFormation stack. CloudFormation
propogates stack tags to the resources inside the stack, so this can be
a convenient way to set tags on resources in your template.
`Extras` and `JinjaExtras` can be absolute paths or glob patterns relative to
the stack config file.
`Extras` or `JinjaExtras` that are directories, whether specified by absolute
path or expanded from a glob pattern, are copied recursively into the deployment
at a top-level directory named after the *last* directory component of the source.
An extra directory path like `/foo/bar/baz` ends up as `/baz` in the deployment.
`Extras` or `JinjaExtras` that are files, whether by absolute path or expanded
from a glob pattern, are copied into the root of the deployment.
`JinjaExtras` are processed with the Jinja2 template engine after all extras
are copied to a temporary directory.
`JinjaExtrasContext` is a dictionary passed as the context when Jinja is run.
Raw data
{
"_id": null,
"home_page": "https://github.com/caricalabs/carica-cfn-tools",
"name": "carica-cfn-tools",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "cloudformation cfn stack template config configuration",
"author": "Carica Labs, LLC",
"author_email": "info@caricalabs.com",
"download_url": "https://files.pythonhosted.org/packages/a5/4c/6160f8ffa50cc03c8b202fa24f533ee771f73bee431cf7cd1631bc938636/carica_cfn_tools-1.28.tar.gz",
"platform": null,
"description": "carica-cfn-tools - Tools to manage CloudFormation stack configuration\n==================================================================================\n\nSimple command line tools to create and update CloudFormation stacks that\nmake it easy to version-control both your templates and stack configurations\nin one place. Supports a few proprietary transforms useful for dynamically\nmerging a manually maintained template with a generated template (for example,\nsam.json from \"chalice package\") that contains resources you'd like to include\nin your main template.\n\nDevelopment\n-----------\n\nThe ``vinstall`` script uses the `venv` module to prepare a Python environment useful\nfor development, so you don't have to build and install carica-cfn-tools to be\nable to run and test it.\n\n#. Run ``./vinstall``\n#. Activate the virtual environment by running ``. ./venv/bin/activate``\n#. The ``console_scripts`` listed in ``setup.py`` are now in your path, so you\n can simply run them like:\n\n ``carica-cfn ...``\n\nSample Stack Config\n-------------------\n::\n\n Region: us-east-1\n Bucket: mycorp-cfn-us-east-1\n Name: WarehouseApp\n Template: ../templates/warehouse-app.yml\n Jinja: true\n Tags:\n env: dev\n scale: large\n cost: small\n Parameters:\n # Normal parameter values can include strings, numbers, booleans, etc.\n Stage: dev\n TableReadCapacityUnits: 10\n TableWriteCapacityUnits: 5\n AdminPassword:\n # A parameter with a \"ParameterStore\" sub-key will be resolved to the\n # SSM Parameter Store parameter with that name.\n ParameterStore: dev.warehouseapp.admin-password\n PostgreSQLPassword:\n # A parameter with a \"SecretsManager\" sub-key will be resolved to the\n # Secrets Manager secret with that ID.\n SecretsManager: dev.warehouseapp.postgresql-password\n Extras:\n - ../cfn/static/logo.png\n - ../cfn/static/index.html\n JinjaExtras:\n - ../cfn/includes/*.yml\n JinjaExtrasContext:\n FOO: bar\n\n\n`Region` sets where the CloudFormation template and related resources will be\nuploaded and where the CloudFormation stack will be created. This must match\nthe region the `Bucket` was created in. This is required.\n\n`Bucket` sets where the CloudFormation template and related resources will be\nuploaded. This is required.\n\n`Name` sets the name of the CloudFormation stack. This is required.\n\n`Template` is a relative path to the CloudFormation YAML or JSON template\nfile to create the stack from. This is required.\n\n`Jinja` is an optional setting that controls whether `Template` will be\nprocessed with Jinja2 before being uploaded. This setting does not enable\nJinja2 for extras; use `JinjaExtras` for that.\n\n`Tags` may be used to set tags on the CloudFormation stack. CloudFormation\npropogates stack tags to the resources inside the stack, so this can be\na convenient way to set tags on resources in your template.\n\n`Extras` and `JinjaExtras` can be absolute paths or glob patterns relative to\nthe stack config file.\n\n`Extras` or `JinjaExtras` that are directories, whether specified by absolute\npath or expanded from a glob pattern, are copied recursively into the deployment\nat a top-level directory named after the *last* directory component of the source.\nAn extra directory path like `/foo/bar/baz` ends up as `/baz` in the deployment.\n\n`Extras` or `JinjaExtras` that are files, whether by absolute path or expanded\nfrom a glob pattern, are copied into the root of the deployment.\n\n`JinjaExtras` are processed with the Jinja2 template engine after all extras\nare copied to a temporary directory.\n\n`JinjaExtrasContext` is a dictionary passed as the context when Jinja is run.\n\n\n",
"bugtrack_url": null,
"license": "APL 2.0",
"summary": "Tools to manage CloudFormation stack configuration",
"version": "1.28",
"project_urls": {
"Homepage": "https://github.com/caricalabs/carica-cfn-tools"
},
"split_keywords": [
"cloudformation",
"cfn",
"stack",
"template",
"config",
"configuration"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "0262a8d9fe26c41b1ecad9d60d923bd055ff735884f0ce6195d9d442a67beaf9",
"md5": "d095730be957345ae223087ffa85fc21",
"sha256": "c1701dbeddb2e8da03ce171cd62bda5bc6adb800e5f85d30a1cad45f8cc9496e"
},
"downloads": -1,
"filename": "carica_cfn_tools-1.28-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "d095730be957345ae223087ffa85fc21",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 19411,
"upload_time": "2024-12-10T19:15:19",
"upload_time_iso_8601": "2024-12-10T19:15:19.220697Z",
"url": "https://files.pythonhosted.org/packages/02/62/a8d9fe26c41b1ecad9d60d923bd055ff735884f0ce6195d9d442a67beaf9/carica_cfn_tools-1.28-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a54c6160f8ffa50cc03c8b202fa24f533ee771f73bee431cf7cd1631bc938636",
"md5": "d62b24be06b3f50dddd9ac6df3b4f2ab",
"sha256": "83b0ddcea836f80ab021636d76687f01131870e7554afaa80dd707afdd7c2553"
},
"downloads": -1,
"filename": "carica_cfn_tools-1.28.tar.gz",
"has_sig": false,
"md5_digest": "d62b24be06b3f50dddd9ac6df3b4f2ab",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 19266,
"upload_time": "2024-12-10T19:15:20",
"upload_time_iso_8601": "2024-12-10T19:15:20.346230Z",
"url": "https://files.pythonhosted.org/packages/a5/4c/6160f8ffa50cc03c8b202fa24f533ee771f73bee431cf7cd1631bc938636/carica_cfn_tools-1.28.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-10 19:15:20",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "caricalabs",
"github_project": "carica-cfn-tools",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "carica-cfn-tools"
}