Nonlinear Programming Methods

    cfc

    1.0.3 • Public • Published

    CFC - AWS CloudFormation Compiler

    DavidDM Known Vulnerabilities

    NPM

    Please note: currently only YAML is supported

    Description

    CFC - CloudFormation Compiler - A simple tool that helps you "compile" static variables or snippets in your AWS CloudFormation template.

    Motivation

    When you start working frequently with AWS CloudFormation you often come up against limits. One of these limits is the handling of reusable components. For example, if you want to define several EC2 instances with the same user data script, and if you want to maintain this script only on one place and not per EC2 instance. Or if you want to use static variables in a CloudFormation template at several places.

    This project tries to offer a solution for exactly these problems.

    Installation

    $ npm install cfc -g

    Usage

    Execution

    $ cfc --source source.yaml --config config.yaml --target build/target.yaml
    • --source [PATH] path to source template
    • --config [PATH] path to configuration file
    • --target [PATH] path to the target file

    Example

    You can find a detailed example in the samples folder of this repository. CFC Sample

    Configuration

    The configuration is described in yaml. You can define a "Template" or a "Value".

    • Template: path to a snippet
    • Value: value to be inserted

    For Templates: Please make sure that the file paths are accessible from the execution location.

    SnippetA:
      Template: snippet-a.yaml
    ValueA:
      Value: MyStaticValue

    Source template

    Reference defined "Values" or "Templates" using:

    • !CFC [Name-Used-In-Configuration]

    Furthermore you have the possibility to use functions inside your source template.

    • !CFC uuidv4()
      • uuidv4 (random) e.g.: 416ac246-e7ac-49ff-93b4-f7e94d997e6b
    • !CFC randomString(length)
    • generates a random alphanumeric string of a given length
    • !CFC timestamp()
      • current timestamp e.g.: 1530210906
    AWSTemplateFormatVersion: 2010-09-09
    Description: A sample template
     
    Resources:
      SampleEC2Instance:
        Type: AWS::EC2::Instance
        Properties:
          ImageId: ami-c481fad3
          InstanceType: t2.nano
          KeyName: !CFC ValueA
          BlockDeviceMappings:
            -
              DeviceName: /dev/sdm
              Ebs:
                VolumeType: gp2
                VolumeSize: 10
          UserData:
            !CFC SnippetA
        Tags:
          Key: Name
            Value: !CFC uuidv4()
          Key: Timestamp
            Value: !CFC  timestamp()
          Key: RandomString
            Value: !CFC randomString(10)

    Contribute

    Feel free to contribute ;)

    Install

    npm i cfc

    DownloadsWeekly Downloads

    8

    Version

    1.0.3

    License

    MIT

    Unpacked Size

    20.5 kB

    Total Files

    16

    Last publish

    Collaborators

    • lukasmusebrink