condensation
Version:
Package, reuse and share particles for CloudFormation projects
218 lines (157 loc) • 6.39 kB
Markdown
# condensation
Package, reuse and share particles for CloudFormation projects
![condensation][condensation-image]
[![NPM][npm-image]][npm-url]
[![Gitter][gitter-image]][gitter-url]
[![Build Status][travis-image]][travis-url]
[![Code Climate][codeclimate-image]][codeclimate-url]
[![Coverage Status][coveralls-image]][coveralls-url]
[![Dependency Status][daviddm-image]][daviddm-url]
## Summary
Condensation provides a framework for building and sharing `particles`
that when packaged together create [AWS CloudFormation](http://aws.amazon.com/cloudformation/)
projects.
Projects are uploaded to S3 and include templates, static assets and/or lambda functions.
Check out all of Condensation's [features](docs/features.md) and see it
in action on [YouTube](https://youtu.be/Vj0dRI9qiMM?list=PLYGffQg665R7PtM0XdPEQuJ0ez5j2G0LW).
## Quick Start
Get started fast with [condensation-docker][condensation-docker-url]
```
$ alias condensation="docker run -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_SESSION_TOKEN -v \"$HOME\"/.aws/credentials:/home/condensation/.aws/credentials -v \`pwd\`:/particles --rm -it sungardas/condensation"
$ condensation create project particles-MYPROJECT
$ cd particles-MYPROJECT
$ condensation run build
# Upload to S3
$ condensation run deploy
```
You can also get started with [nodejs](docs/getting-started.md#nodejs)
Next become familiar with all of Condensation's [tasks](docs/tasks.md)
## Use
[Particles](docs/particle-helpers.md)
[Template Helpers](docs/template-helpers.md)
[Handlebars Helpers](docs/handlebars-helpers.md)
[AWS Intrinsic Functions](docs/intrinsic-functions.md)
### Project Structure
particles-my-project
|
-- guplfile.js
|
-- README.md
|
-- CHANGELOG.md
|
--particles
|
-- assets
|
-- conditions
|
-- cftemplates
|
-- helpers
|
-- mappings
|
-- metadata
|
-- outputs
|
-- parameters
|
-- resources
|
-- sets
|
-- partials
Condensation builds templates with Handlebars helpers that
are able to load [particles](docs/particle-helpers.md) from the local project
or from any condensation compatible module added as a npm
dependency.
### Processing Templates
Condensation will process any template that ends with `.hbs`
```
- particles
|- cftemplates
|- network.template.json.hbs
```
This allows static templates to be deployed alongside compiled templates
### layout support
Instead of including particles within a traditional CloudFormation
template use a [layout](docs/template-helpers.md#TemplateHelpers.layout)
to include particles in any order you wish. They will be added to correct
template section during the condensation build process.
### Lazy Loading
Particles will only be included in the final distribution if they are
referenced in a `hbs` file.
## Config Options
var config = {
// Array of S3 buckets to deploy to
s3: [
{
// AWS specific options
aws: {
region: 'us-east-1',
bucket: 'my.bucket.in.us-east-1',
},
// Run CloudFormation validation during the build task for this bucket
validate: true,
// Create this bucket if it does not already exist
create: true
// Prefix all objects (allows for multiple deployments to the same bucket
prefix: '',
labels: ['east']
},
],
// The prefix to add to all generated gulp tasks (default: 'condensation')
// An empty string will remove the prefix
// - condensation:deploy will become deploy
taskPrefix: '',
// Directory that contains the `particles` directory.
// Used for test scripts, should not be changed if sharing templates
root: './',
// Where the build task will put the distribution
dist: 'dist'
};
##Front Matter
All particles are first processed with
[gray-matter](https://github.com/jonschlinkert/gray-matter) to load any
default data definitions.
## Errors
Errors due to badly formed JSON or failed CF validations will stop the
process and the offending files will be dumped to `condensation_errors`
## Experimental
### condensation.js
If a project contains `condensation.js` the file will be loaded as a
module and will attement to run the `initialize` function. If
`initialize` accepts a single argument then only a callback will be
provided. If `initialize` accepts two arguments the project
configuration will be passed as the first argument and the callback as
the second.
This can be used by a condensation project to bootstrap assets and configuration
before template compiling begins.
Example:
[particles-cloudsploit-scans](https://github.com/SungardAS/particles-cloudsploit-scans)
## License
Apache-2.0 ©
## Maintained By
[![Sungard Availability Services | Labs][labs-logo]][labs-github-url]
This project is maintained by the Labs team at [Sungard Availability
Services](http://sungardas.com)
GitHub: [https://sungardas.github.io](https://sungardas.github.io)
Blog: [http://blog.sungardas.com/CTOLabs/](http://blog.sungardas.com/CTOLabs/)
[codeclimate-image]: https://codeclimate.com/github/SungardAS/condensation/badges/gpa.svg
[codeclimate-url]: https://codeclimate.com/github/SungardAS/condensation
[condensation-image]: ./docs/images/condensation_logo.png?raw=true
[coveralls-image]: https://coveralls.io/repos/SungardAS/condensation/badge.svg
[coveralls-url]: https://coveralls.io/r/SungardAS/condensation
[condensation-docker-url]: https://github.com/SungardAS/condensation-docker
[daviddm-image]: https://david-dm.org/SungardAS/condensation.svg?theme=shields.io
[daviddm-url]: https://david-dm.org/SungardAS/condensation
[gitter-image]: https://badges.gitter.im/Join%20Chat.svg
[gitter-url]: https://gitter.im/SungardAS/condensation?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge
[labs-github-url]: https://sungardas.github.io
[labs-logo]: https://raw.githubusercontent.com/SungardAS/repo-assets/master/images/logos/sungardas-labs-logo-small.png
[npm-image]: https://badge.fury.io/js/condensation.svg
[npm-url]: https://npmjs.org/package/condensation
[travis-image]: https://travis-ci.org/SungardAS/condensation.svg?branch=master
[travis-url]: https://travis-ci.org/SungardAS/condensation