Socket
Socket
Sign inDemoInstall

arm-template-merge

Package Overview
Dependencies
18
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

arm-template-merge

Azure Resource Manager (ARM) Template Merge


Version published
Maintainers
1
Weekly downloads
197
decreased by-11.26%
Install size
503 kB

Weekly downloads

Readme

Source

arm-template-merge

npm package Node.js version

Azure Resource Manager (ARM) Template Merge

This tool merges multiple Azure Resource Manager (ARM) template files into a single template file.

Although linked templates may be used for combining multiple resources into a single deployment, they have some drawbacks:

  • All linked templates must be accessible via a public URL so Azure Resource Manager can reach them during deployment, which may not be possible or cumbersome on some scenarios.
  • Each linked template is resolved as a separate deployment, which may not be desired.
  • Only the incremental deployment mode is allowed for linked templates.

Prerequisites

How to use

Install the CLI globally:

npm install -g arm-template-merge

Then run arm-template-merge without any arguments for details on its utilization.

Alternatively, you can execute the CLI without installing it by running:

npx arm-template-merge

Adding it as a dependency

You may add it to your project as a dependency:

npm install arm-template-merge

And use the merge functionality from your code:

const fs = require('fs');
const mergeARMTemplates = require('arm-template-merge');

let template1 = JSON.parse(fs.readFileSync('template1.json', 'utf8'));
let template2 = JSON.parse(fs.readFileSync('template2.json', 'utf8'));

let merged = {};
merged = mergeARMTemplates(merged, template1);
merged = mergeARMTemplates(merged, template2);

fs.writeFileSync('merged-template.json', JSON.stringify(merged), 'utf8');

Rules

The following rules are used for merging ARM template files:

  • All files MUST share the same exact values for the following fields:

    • $schema
    • contentVersion
    • apiProfile (if present)
  • All files' functions and resources collections will each be combined into a single collection. Objects within a collection that are exact copies will yield a single object in the merged collection:

    [                    |    [                    |    [
      { <object-A> },  --|-------------------------|-->   { <object-A> },
                         |      { <object-B> },  --|-->   { <object-B> },
      { <object-C> },    |      { <object-C> },    |      { <object-C> }
    ]                    |    ]                    |    ]
    
  • All files' parameters, variables and outputs objects will each be combined into a single object. Files declaring the same key within an object MUST have the same exact value, or an error will be thrown:

    {                    |    {                    |    {
      "A": <value-A>,  --|-------------------------|-->   "A": <value-A>,
                         |      "B": <value-B>,  --|-->   "B": <value-B>,
      "C": <value-C>,    |      "C": <value-C>,    |      "C": <value-C>
      "D": <value-D1>    |      "D": <value-D2>    |      <<< ERROR >>>
    }                    |    }                    |    }
    
  • Value and object equality follows Node.js' assert.deepStrictEqual() rules.

Keywords

FAQs

Last updated on 06 Apr 2020

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc