Detalhes do pacote

arm-template-merge

axa-group1.5kMIT1.1.5

Azure Resource Manager (ARM) Template Merge

azure, arm, azure resource manager, template

readme (leia-me)

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.

changelog (log de mudanças)

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.

1.1.5 — 2020-04-06

Security

1.1.4 — 2019-10-10

Security

Added

  • Improve error message on template parsing failures

1.1.3 — 2019-09-25

Security

Changed

  • Update license's legal entity.

1.1.2 — 2019-08-09

Security

1.1.1 — 2019-06-05

Security

1.1.0 — 2019-03-18

Added

  • Add changelog
  • Add stripping of UTF-8 BOM on input files

Changed

  • Reduce merge code complexity

Security

1.0.0 — 2018-08-20

Initial release.