Framework for pre-processing yaml files
npm install yaml-blaster
$ npm install -g yaml-blaster
`
Usage
$3
Assuming your project looks like this
`
project
|
+-- template.yaml
|
+-- data.yaml
`
From the project directory just run
`
$ yaml-blaster \
-i template.yaml \ # The input template
-d data.yaml # A configuration file
`
Or from anywwhere run
`
$ yaml-blaster \
-i /full/path/to/project/template.yaml \
-d /full/path/to/project/data.yaml
`
To save the output to a file
`
$ yaml-blaster \
-i template.yaml \
-d data.yaml \
-o processed.yaml
`Features
$3
Syntax: {{variable}} - Replace variables in the templatetemplate.yaml
`
AWSTemplateFormatVersion: '2010-09-09'
Resources:
MyS3Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: {{name}}
`
data.yaml
`
name: my-bucket-name
`
run
`
$ yaml-blaster \
-i template.yaml \
-d data.yaml
`
output
`
AWSTemplateFormatVersion: '2010-09-09'
Resources:
MyS3Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-bucket-name
`
$3
Syntax: {{file:relative/path}} - load a file and replace it in the template#### Using top-level data scope
By default, any variables in the loaded snippet
will be replaced using the top-level scope of the data file.
project structure
`
project
|
+-- template.yaml
|
+-- data.yaml
|
+-- snippets
|
+-- bucket.yaml
`
template.yaml
`
AWSTemplateFormatVersion: '2010-09-09'
Resources:
{{file:sub-templates/bucket.yaml}}
`
snippets/bucket.yaml
`
{{logicalName}}:
Type: AWS::S3::Bucket
Properties:
BucketName: {{bucketName}}
`
data.yaml
`
logicalName: MyS3Bucket
bucketName: my-s3-bucket
`
output
`
AWSTemplateFormatVersion: '2010-09-09'
Resources:
MyS3Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName:my-s3-bucket
`#### Using specific data scope
Syntax:
{{path.to.value, file:relative/path}} - load a file and replace variables under a specific scopeproject structure
`
project
|
+-- template.yaml
|
+-- data.yaml
|
+-- snippets
|
+-- bucket.yaml
`
template.yaml
`
AWSTemplateFormatVersion: '2010-09-09'
Resources:
{{bucket1, file:sub-templates/bucket.yaml}}
{{bucket2, file:sub-templates/bucket.yaml}}
`
snippets/bucket.yaml
`
{{logicalName}}:
Type: AWS::S3::Bucket
Properties:
BucketName: {{bucketName}}
`
data.yaml
`
bucket1:
logicalName: MyFirstS3Bucket
bucketName: my-s3-bucket-1
bucket2:
logicalName: MySecondS3Bucket
bucketName: my-s3-bucket-2
`
output
`
AWSTemplateFormatVersion: '2010-09-09'
Resources:
MyFirstS3Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-s3-bucket-1
MySecondS3Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-s3-bucket-2
`
$3
Syntax: {{for:path.to.array, file:relative/path}} - add n number of instances of a snippet by referring to an array in the data fileproject structure
`
project
|
+-- template.yaml
|
+-- data.yaml
|
+-- snippets
|
+-- bucket.yaml
`
template.yaml
`
AWSTemplateFormatVersion: '2010-09-09'
Resources:
{{for:buckets, file:sub-templates/bucket.yaml}}
`
snippets/bucket.yaml
`
{{logicalName}}:
Type: AWS::S3::Bucket
Properties:
BucketName: {{bucketName}}
`
data.yaml
`
buckets:
- logicalName: MyFirstS3Bucket
bucketName: my-s3-bucket-1
- logicalName: MySecondS3Bucket
bucketName: my-s3-bucket-2
`
output
`
AWSTemplateFormatVersion: '2010-09-09'
Resources:
MyFirstS3Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-s3-bucket-1
MySecondS3Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-s3-bucket-2
``