https://github.com/cloudtools/stacker_cookiecutter
A cookiecutter scaffold for creating new stacker projects.
https://github.com/cloudtools/stacker_cookiecutter
Last synced: 7 months ago
JSON representation
A cookiecutter scaffold for creating new stacker projects.
- Host: GitHub
- URL: https://github.com/cloudtools/stacker_cookiecutter
- Owner: cloudtools
- License: bsd-2-clause
- Created: 2017-09-20T19:15:16.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2020-07-28T21:26:55.000Z (over 5 years ago)
- Last Synced: 2025-04-11T04:51:58.396Z (10 months ago)
- Language: Python
- Size: 48.8 KB
- Stars: 26
- Watchers: 9
- Forks: 9
- Open Issues: 0
-
Metadata Files:
- Readme: readme.rst
- License: LICENSE
Awesome Lists containing this project
README
stacker_cookiecutter
####################
A `Cookiecutter `_ (project template)
for creating a barebone
`stacker `_ project
Note:
You do not have to setup your project this way, this is just meant as a
suggestion and some simple guidance to help folks who are new to stacker.
Requirements
============
* Python 2.7 or 3.4+
* `cookiecutter `_
* `poetry `_
Usage
=====
1. Generate a ``stacker`` project, following the prompts from the command.
.. code-block:: bash
$ cookiecutter gh:cloudtools/stacker_cookiecutter
project_name [myproject]:
stacker_bucket [stacker-myproject]:
repo_name [myproject]:
description [stacker project for myproject]:
This command will create a new stacker project in your present working
directory.
Note: You should try to make your ``stacker_bucket`` variable unique
since S3 bucket names share a global namespace. It will default to
``stacker-{{ cookiecutter.project_name }}`` but you may choose any unique value.
Project tree
=================
In this example we have a product called ``myproduct`` and two environments
called ``dev`` and ``prod``.
Some notes about the files in this tree:
**conf/.env**:
This is an "environment" file which holds variables that change in the config
based on the environment. This allows you to have a single config for all
your environments, while changing small things per environment.
See: http://stacker.readthedocs.io/en/latest/environments.html
**stacker.yaml**:
This is a "stacker config" file.
See: http://stacker.readthedocs.io/en/latest/config.html
**blueprints/touch.py**:
This is a tiny ``stacker blueprint`` that doesn't do much of anything.
A blueprint is used to programatically generate CloudFormation JSON.
See: http://stacker.readthedocs.io/en/latest/blueprints.html
**tests/blueprints/test_touch.py**:
This is a tiny ``stacker blueprint`` test which only creates a simple
resource in CloudFormation (a WaitCondition, which does nothing on it's own).
See: http://stacker.readthedocs.io/en/latest/blueprints.html#testing-blueprints
Running a release
====================
In this example we use a ``Makefile`` to save commands. The commands will be
ran using **poetry** which will handle creating a virtualenv for you, as well
as insuring that the correct packages are installed.
To execute stacker using your dev environment, using the *--interactive* flag
run::
make dev ARGS=--interactive
To execute stacker using the prod environment, run::
make prod ARGS=--interactive