New-CmAzPaasWeb

Create an Frontdoor with backing webapps

Completes following:

  • Creates Frontdoor
  • Creates Webapp and attaches to frontdoor
  • Optional API routing available

This command forms part of the PaaS Building Block.

Parameters

-SettingsFile

Required. (String) File path for the settings file to be converted into a settings object.

-SettingsObject

Required. (Object) Object containing the configuration values required to run this cmdlet.

-TagSettingsFile

Required. (String) File path for the tag settings file to be converted into a tag settings object.

-WhatIf

(Switch) Run the command without executing any actions, so that no changes are made. The command will output a description of actions to be performed against the affected resources in the console window. Use this option if you are unsure of the overall impact of your command and wish to review it before committing to making changes.

-Confirm

(Switch) Run the command without executing any actions, so that no changes are made. The command will output a description of actions to be performed against the affected resources in the console window. Use this option if you are unsure of the overall impact of your command and wish to review it before committing to making changes.

Usage

Example 1

1
New-CmAzPaasWeb -SettingsFile ./web.yml

Example 2

1
New-CmAzPaasWeb -SettingsObject $settings

Example 3

1
New-CmAzPaasWeb -SettingsObject $settings -TagSettingFile ./tag.yml

Settings

Beta documentation
The following schema documentation is automatically generated as part of a recent roadmap task. There may be inaccuracies or incomplete information while we flush out bugs; please refer to the packed project settings examples where necessary.

Settings Root.

Component

component [string | null]

Value to determine what cmdlet should be dynamically loaded for these settings.

Service

service [object | null]

Contains dependency and publish details for service location.

Publish

publish [object | null]

Contains publish details for service location.

ResourceGroup

resourceGroup [string | null]

Global default value to publish on deployed resource type.

AppServicePlan

appServicePlan [string | null]

Global default value to publish on deployed resource type.

Webapp

webapp [string | null]

Global default value to publish on deployed resource type.

APIManagement

apiManagement [string | null]

Global default value to publish on deployed resource type.

FrontDoor

frontdoor [string | null]

Dependency value to fetch existing resource type.

FrontdoorResourceGroup

frontdoorResourceGroup [string | null]

Dependency value to fetch existing resource type.

CDN

cdn [string | null]

Global default value to publish on deployed resource type.

Endpoint

endpoint [string | null]

Global default value to publish on deployed resource type.

Slot

slot [string | null]

Global default value to publish on deployed resource type.

Function

function [string | null]

Global default value to publish on deployed resource type.

PrivateEndpoint

privateEndpoint [string | null]

Global default value to publish on deployed resource type.

Dependencies

dependencies [object | null]

Contains dependency details for service location.

AppInsights

appInsights [string | null]

Global default dependency value to fetch existing resource type.

Keyvault

keyvault [string | null]

Global default dependency value to fetch existing resource type.

WebApplicationFirewallPolicy

webApplicationFirewallPolicy [string | null]

Global default dependency value to fetch existing resource type.

Storage

storage [string | null]

Global default dependency value to fetch existing resource type.

Vnet

vnet [string | null]

Global default dependency value to fetch existing resource type.

Private Zones

privateZones [array | null]

Global default dependency value to fetch existing resource type.

WebSolutions

webSolutions [array | null] Mandatory

List of details required to deploy all resource groups, app service plans, webapps, cdns, Azure front door and api management instances.

Name

name [string]

Becomes part of the generated resource group's name.

Service

service [object | null]

Contains dependency and publish details for service location.

Publish

publish [object | null]

Contains publish details for service location.

ResourceGroup

resourceGroup [string | null]

Local overriding value to publish on deployed existing resource type.

AppServicePlans

appServicePlans [array | null]

List of details required to deploy all app service plans, webapps, cdns and api management instances.

Name

name [string]

Becomes part of the generated app service plan's name.

Service

service [object | null]

Contains dependency and publish details for service location.

Publish

publish [object | null]

Contains publish details for service location.

AppServicePlan

appServicePlan [string | null]

Local overriding value to publish on deployed existing resource type.

Sku

sku [string]

Sku of the app service plan. This defines the capacity of the resources.

location

location [string]

Location for app service plan, default location for webapps that share the plan.

functions

functions [array]

Contains details used to deploy functions which share the same app service plan.

Name

name [string]

Becomes part of the generated function app's name.

EnableAppInsight

enableAppInsight [boolean | null]

Enables application insights for the web app.

PrivateEndpoints

privateEndpoints [array | null]

Container for private endpoint details.

SubnetName

subnetName [string]

Names of underlying sub-resources to create private connection with.

Name

name [string | null]

Becomes part of private endpoint name.

Service

service [object]

Contains dependency and publish details for service location.

Dependencies

dependencies [object]

Contains dependency details for service location.

Vnet

vnet [string]

Local overriding dependency value to fetch existing resource type.

PrivateZones

privateZones [array]

Dependency value to fetch existing resource type. Enables private zone integration.

Publish

publish [object]

Contains publish details for service location.

privateEndpoint

privateEndpoint [string]

Local overriding value to publish on deployed existing resource type.

RunTime

runtime [string]

Defines the technology stack used to run the app.

Service

service [object | null]

Contains dependency and publish details for service location.

Publish

publish [object | null]

Contains publish details for service location.

function

function [string | null]

Local overriding value to publish on deployed existing resource type.

Dependencies

dependencies [object | null]

Contains dependency details for service location.

storage

storage [string | null]

Local overriding value to fetch existing resource type.

Webapps

webapps [array]

Contains details used to deploy webapps which share the same app service plan.

Name

name [string]

Becomes part of the generated web app's name.

EnableAppInsight

enableAppInsight [boolean | null]

Enables application insights for the web app.

Backendpool

backendpool [string | null]

Name of front door backendpool which will route requests to this web app.

BackendHostHeader

backendHostHeader [boolean | null]

Enable or disable backend host header on backend pool for the webapp.

Weight

weight [integer | null]

Weight is an integer from 1 to 1000. Allows you to distribute traffic evenly or to use a pre-defined settings.

Default:100

Priority

priority [integer | null]

Allows implementation of failover patterns.

Default:1

RunTime

runTime [string]

Defines the technology stack used to run the app.

Service

service [object | null]

Contains dependency and publish details for service location.

Publish

publish [object | null]

Contains publish details for service location.

Webapp

webapp [string | null]

Local overriding value to publish on deployed existing resource type.

PrivateEndpoints

privateEndpoints [array | null]

Container for private endpoint details.

SubnetName

subnetName [string]

Names of underlying sub-resources to create private connection with.

Name

name [string | null]

Becomes part of private endpoint name.

Service

service [object]

Contains dependency and publish details for service location.

Dependencies

dependencies [object]

Contains dependency details for service location.

Vnet

vnet [string]

Local overriding dependency value to fetch existing resource type.

PrivateZones

privateZones [array]

Dependency value to fetch existing resource type. Enables private zone integration.

Publish

publish [object]

Contains publish details for service location.

privateEndpoint

privateEndpoint [string]

Local overriding value to publish on deployed existing resource type.

Slots

slots [array | null]

Defines the names and service location details of the staging slots for the web app.

ContentDeliveryNetwork

contentDeliveryNetwork [object | null]

Contains details required to deploy a Azure cdn service

Name

name [string]

Becomes part of the generated cdn's name.

Sku

sku [string]

Defines SKU which is loosely mapped to the cdn vendor.

location

location [string]

Location to deploy the Azure cdn. Cdns use a different location schema than other resources E.g. Instead of EU West its westeurope.

Service

service [object | null]

Contains dependency and publish details for service location.

Publish

publish [object | null]

Contains publish details for service location.

CDN

cdn [string | null]

Local overriding value to publish on deployed existing resource type.

Endpoint

endpoint [string | null]

Local overriding value to publish on deployed existing resource type.

ApiManagementServices

apiManagementServices [array | null]

Deployes Api Gateway on Azure in provided resource group

Name

name [string]

Becomes part of the generated api management service's name.

location

location [string]

Deployment location

PublisherName

publisherName [string]

Organization name.

PublisherEmail

publisherEmail [string]

Admin email Id. Must follow email format.

Sku

sku [string]

Defines capacity and pricing tier of resource.

SkuCount

skuCount [integer | null]

The instance size of this API Management instance.

Default:1

Backendpool

backendpool [string | null]

Name of front door backendpool which will route requests to this webapp.

BackendHostHeader

backendHostHeader [boolean | null]

Enable or disable backend host header on backend pool for the webapp.

Weight

weight [integer | null]

Weight is an integer from 1 to 1000. Allows you to distribute traffic evenly or use pre-defined settings.

Default:100

Priority

priority [integer | null]

Allows implementation of failover patterns.

Default:1

Service

service [object | null]

Contains dependency and publish details for service location.

Publish

publish [object | null]

Contains publish details for service location.

APIManagement

apiManagement [string | null]

Local overriding value to publish on deployed existing resource type.

Frontdoor

frontdoor [object | null]

Contains details required to deploy Azure front door.

Name

name [string]

Becomes part of the generated Azure front door's name.

SessionAffinity

sessionAffinity [string]

Enable to send subsequent traffic from the same user session to the same backend.

location

location [string]

Deployment location of front door.

CustomDomains

customDomains [array | null]

List of details required to configure custom domains on front door.

DomainName

domainName [string]

Name of the custom domain.

EnableHttps

enableHttps [boolean | null]

Enable Https protocol. Creates and assigns Azure managed certificate on custom domain of front door.

SessionAffinity

sessionAffinity [string]

An explanation about the purpose of this instance.

CustomCertificateSecretName

customCertificateSecretName [string | null]

Custom domain is assigned the provided certificate from an existing key vault.

Service

service [object | null]

Contains dependency and publish details for service location.

Dependencies

dependencies [object | null]

Contains dependency details for service location.

Keyvault

keyvault [string | null]

Local overriding dependency value to fetch existing resource type.

WebApplicationFirewallPolicy

webApplicationFirewallPolicy [string | null]

Local overriding dependency value to fetch existing resource type.

backEndPools

backEndPools [array]

Contains list of front door backend pools with web apps and api gateways mappings.

Name

name [string]

Becomes part of the generated Azure front door backendPool's name.

HealthCheckPath

healthCheckPath [string | null]

Path of application url for health checks.

Default:/index.html

Protocol

protocol [string | null]

Web access protocol.

Valid values:"Http" , "Https" , "http" , "https" , ""

Rules

rules [array]

Contains rule details to route traffic to appropriate backend pools.

Name

name [string]

Becomes part of the generated Azure front door rule's name.

Pattern

pattern [array]

Url pattern

BackEndPoolname

backEndPoolname [string]

Name of backend pool to route traffic to for the pattern.

AcceptedProtocols

acceptedProtocols [array | null]

Allowed web access protocols.

Endpoints

endpoints [array | null]

Linked custom domains.

EnableCaching

enableCaching [boolean | null]

Enable static item caching to increase speed of content delivery.

Default:true

Examples

The following example files are automatically generated from the settings file schema definition to show how the specification can be used in practise. Cloudmarque can accept both JSON and YAML parameter files.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
{
  "component": "string",
  "service": {
    "publish": {
      "resourceGroup": "string",
      "appServicePlan": "string",
      "webapp": "string",
      "apiManagement": "string",
      "frontdoor": "string",
      "frontdoorResourceGroup": "string",
      "cdn": "string",
      "endpoint": "string",
      "slot": "string",
      "function": "string",
      "privateEndpoint": "string"
    },
    "dependencies": {
      "appInsights": "string",
      "keyvault": "string",
      "webApplicationFirewallPolicy": "string",
      "storage": "string",
      "vnet": "string",
      "privateZones": [

      ]
    }
  },
  "webSolutions": [
    {
      "name": "string",
      "service": {
        "publish": {
          "resourceGroup": "string"
        }
      },
      "appServicePlans": [
        {
          "name": "string",
          "service": {
            "publish": {
              "appServicePlan": "string"
            }
          },
          "sku": "string",
          "location": "string",
          "functions": [
            {
              "name": "string",
              "enableAppInsight": "boolean",
              "privateEndpoints": [
                {
                  "subnetName": "string",
                  "name": "string",
                  "service": {
                    "dependencies": {
                      "vnet": "string",
                      "privateZones": [

                      ]
                    },
                    "publish": {
                      "privateEndpoint": "string"
                    }
                  }
                }
              ],
              "runtime": "string",
              "service": {
                "publish": {
                  "function": "string"
                },
                "dependencies": {
                  "storage": "string"
                }
              }
            }
          ],
          "webapps": [
            {
              "name": "string",
              "enableAppInsight": "boolean",
              "backendpool": "string",
              "backendHostHeader": "boolean",
              "weight": "100",
              "priority": "1",
              "runTime": "string",
              "service": {
                "publish": {
                  "webapp": "string"
                }
              },
              "privateEndpoints": [
                {
                  "subnetName": "string",
                  "name": "string",
                  "service": {
                    "dependencies": {
                      "vnet": "string",
                      "privateZones": [

                      ]
                    },
                    "publish": {
                      "privateEndpoint": "string"
                    }
                  }
                }
              ],
              "slots": [

              ],
              "contentDeliveryNetwork": {
                "name": "string",
                "sku": "string",
                "location": "string",
                "service": {
                  "publish": {
                    "cdn": "string",
                    "endpoint": "string"
                  }
                }
              }
            }
          ]
        }
      ],
      "apiManagementServices": [
        {
          "name": "string",
          "location": "string",
          "publisherName": "string",
          "publisherEmail": "string",
          "sku": "string",
          "skuCount": "1",
          "backendpool": "string",
          "backendHostHeader": "boolean",
          "weight": "100",
          "priority": "1",
          "service": {
            "publish": {
              "apiManagement": "string"
            }
          }
        }
      ]
    }
  ],
  "frontdoor": {
    "name": "string",
    "sessionAffinity": "string",
    "location": "string",
    "customDomains": [
      {
        "domainName": "string",
        "enableHttps": "boolean",
        "sessionAffinity": "string",
        "customCertificateSecretName": "string",
        "service": {
          "dependencies": {
            "keyvault": "string",
            "webApplicationFirewallPolicy": "string"
          }
        }
      }
    ],
    "backEndPools": [
      {
        "name": "string",
        "healthCheckPath": "/index.html",
        "protocol": "Http"
      }
    ],
    "rules": [
      {
        "name": "string",
        "pattern": [
          "string"
        ],
        "backEndPoolname": "string",
        "acceptedProtocols": [
          "string"
        ],
        "endpoints": [
          "string"
        ],
        "enableCaching": "true"
      }
    ]
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
component: "string"    # Optional
service:     # Optional
  publish:     # Mandatory
    resourceGroup: "string"    # Optional
    appServicePlan: "string"    # Optional
    webapp: "string"    # Optional
    apiManagement: "string"    # Optional
    frontdoor: "string"    # Optional
    frontdoorResourceGroup: "string"    # Optional
    cdn: "string"    # Optional
    endpoint: "string"    # Optional
    slot: "string"    # Optional
    function: "string"    # Optional
    privateEndpoint: "string"    # Optional
  dependencies:     # Optional
    appInsights: "string"    # Optional
    keyvault: "string"    # Optional
    webApplicationFirewallPolicy: "string"    # Optional
    storage: "string"    # Optional
    vnet: "string"    # Optional
    privateZones:     # Optional
      - webSolutions:     # Mandatory
  - name: "string"    # Mandatory
    service:     # Optional
      publish:     # Optional
        resourceGroup: "string"    # Optional
    appServicePlans:     # Optional
      - name: "string"    # Mandatory
        service:     # Optional
          publish:     # Optional
            appServicePlan: "string"    # Optional
        sku: "string"    # Mandatory
        location: "string"    # Mandatory
        functions:     # Optional
          - name: "string"    # Mandatory
            enableAppInsight: "boolean"    # Optional
            privateEndpoints:     # Optional
              - subnetName: "string"    # Mandatory
                name: "string"    # Optional
                service:     # Optional
                  dependencies:     # Optional
                    vnet: "string"    # Optional
                    privateZones:     # Optional
                      -                   publish:     # Optional
                    privateEndpoint: "string"    # Optional
            runtime: "string"    # Mandatory
            service:     # Optional
              publish:     # Optional
                function: "string"    # Optional
              dependencies:     # Optional
                storage: "string"    # Optional
        webapps:     # Optional
          - name: "string"    # Mandatory
            enableAppInsight: "boolean"    # Optional
            backendpool: "string"    # Optional
            backendHostHeader: "boolean"    # Optional
            weight: "100"    # Optional
            priority: "1"    # Optional
            runTime: "string"    # Mandatory
            service:     # Optional
              publish:     # Optional
                webapp: "string"    # Optional
            privateEndpoints:     # Optional
              - subnetName: "string"    # Mandatory
                name: "string"    # Optional
                service:     # Mandatory
                  dependencies:     # Optional
                    vnet: "string"    # Optional
                    privateZones:     # Optional
                      -                   publish:     # Optional
                    privateEndpoint: "string"    # Optional
            slots:     # Optional
              -             contentDeliveryNetwork:     # Optional
              name: "string"    # Mandatory
              sku: "string"    # Mandatory
              location: "string"    # Mandatory
              service:     # Optional
                publish:     # Optional
                  cdn: "string"    # Optional
                  endpoint: "string"    # Optional
    apiManagementServices:     # Optional
      - name: "string"    # Mandatory
        location: "string"    # Mandatory
        publisherName: "string"    # Mandatory
        publisherEmail: "string"    # Mandatory
        sku: "string"    # Mandatory
        skuCount: "1"    # Optional
        backendpool: "string"    # Optional
        backendHostHeader: "boolean"    # Optional
        weight: "100"    # Optional
        priority: "1"    # Optional
        service:     # Optional
          publish:     # Optional
            apiManagement: "string"    # Optional
frontdoor:     # Optional
  name: "string"    # Mandatory
  sessionAffinity: "string"    # Mandatory
  location: "string"    # Mandatory
  customDomains:     # Optional
    - domainName: "string"    # Mandatory
      enableHttps: "boolean"    # Optional
      sessionAffinity: "string"    # Mandatory
      customCertificateSecretName: "string"    # Optional
      service:     # Optional
        dependencies:     # Optional
          keyvault: "string"    # Optional
          webApplicationFirewallPolicy: "string"    # Optional
  backEndPools:     # Mandatory
    - name: "string"    # Mandatory
      healthCheckPath: "/index.html"    # Optional
      protocol: "Http"    # Optional
  rules:     # Mandatory
    - name: "string"    # Mandatory
      pattern:     # Mandatory
        - "string"
      backEndPoolname: "string"    # Mandatory
      acceptedProtocols:     # Optional
        - "string"
      endpoints:     # Optional
        - "string"
      enableCaching: "true"    # Optional