Deploy using the Azure CLI

The Azure CLI has an extension to be used for management of F5 NGINX as a Service for Azure (NGINXaaS) deployments whether that be locally or in continuous integration pipelines. This document links you to information around basic NGINXaaS extension usage.

To create an NGINXaaS for Azure resource use the az nginx deployment create command:

bash
az nginx deployment create --deployment-name
                           --resource-group
                           [--auto-upgrade-profile]
                           [--enable-diagnostics {0, 1, f, false, n, no, t, true, y, yes}]
                           [--identity]
                           [--location]
                           [--logging]
                           [--network-profile]
                           [--no-wait {0, 1, f, false, n, no, t, true, y, yes}]
                           [--scaling-properties]
                           [--sku]
                           [--tags]
                           [--user-profile]

  • Create a deployment with public IP:

    bash
    az nginx deployment create --name myDeployment --resource-group \
       myResourceGroup --location eastus2 --sku name="standardv2_Monthly" \
       --network-profile front-end-ip-configuration="{public-ip-addresses:[{id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIP}]}" \
       network-interface-configuration="{subnet-id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet}"
  • Create a deployment with private IP:

    bash
    az nginx deployment create --name myDeployment --resource-group \
       myResourceGroup --location eastus2 --sku \
       name="standardv2_Monthly" --network-profile \
       front-end-ip-configuration="{private-ip-addresses:[{private-ip-allocation-method:Static,subnet-id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet,private-ip-address:10.0.0.2}]}" \
       network-interface-configuration="{subnet-id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet}"
    bash
    az nginx deployment create --name myDeployment --resource-group \
       myResourceGroup --location eastus2 --sku \
       name="standardv2_Monthly" --network-profile \
       front-end-ip-configuration="{private-ip-addresses:[{private-ip-allocation-method:Dynamic,subnet-id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet,private-ip-address:10.0.0.2}]}" \
       network-interface-configuration="{subnet-id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet}"
  • Create a dual-stack (IPv4 + IPv6) NGINXaaS deployment with public IPs:

    bash
    az nginx deployment create --name myDeployment --resource-group \
       myResourceGroup --location eastus2 --sku name="standardv2_Monthly" \
       --network-profile front-end-ip-configuration="{public-ip-addresses:[{id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/pubIPv4},{id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/pubIPv6}]}" \
       network-interface-configuration="{subnet-id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet}"
  • Create a dual-stack (IPv4 + IPv6) NGINXaaS deployment with private IPs:

    bash
    az nginx deployment create --name myDeployment --resource-group \
       myResourceGroup --location eastus2 --sku \
       name="standardv2_Monthly" --network-profile \
       front-end-ip-configuration="{private-ip-addresses:[{private-ip-allocation-method:Static,subnet-id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet,private-ip-address:10.0.0.2},{private-ip-allocation-method:Static,subnet-id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet,private-ip-address:2001:0db8:85a3:0000:0000:8a2e:0370:7334}]}" \
       network-interface-configuration="{subnet-id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet}"
  • Create a deployment with managed identity, storage account and scaling:

    bash
    az nginx deployment create --deployment-name myDeployment --resource-group \
       myResourceGroup --location eastus2 --sku name=standardv2_Monthly \
       --network-profile \
       network-interface-configuration='{subnet-id:/subscriptions/subscriptionId/resourcegroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/vnet-azclitest/subnets/mySubnet}' \
       front-end-ip-configuration='{public-ip-addresses:[{id:/subscriptions/subscriptionId/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIP}]}' \
       --identity '{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/subscriptionId/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myManagedIdentity":{}}}' \
       --logging storage-account='{"account-name":"myStorageAccount","container-name":"myContainer"}' \
       --scaling-properties capacity=10

See the Azure CLI Deployment Create Documentation for more details on the required and optional parameters.

To update an NGINXaaS for Azure resource use the az nginx deployment update command:

bash
az nginx deployment update [--add]
                           [--auto-upgrade-profile]
                           [--deployment-name]
                           [--enable-diagnostics {0, 1, f, false, n, no, t, true, y, yes}]
                           [--force-string {0, 1, f, false, n, no, t, true, y, yes}]
                           [--identity]
                           [--ids]
                           [--location]
                           [--logging]
                           [--network-profile]
                           [--no-wait {0, 1, f, false, n, no, t, true, y, yes}]
                           [--remove]
                           [--resource-group]
                           [--scaling-properties]
                           [--set]
                           [--sku]
                           [--subscription]
                           [--tags]
                           [--user-profile]

  • Update tags and enable diagnostics support for a deployment:

    bash
    az nginx deployment update --name myDeployment --resource-group \
    myResourceGroup --location eastus2 --tags tag1="value1" \
    tag2="value2" --enable-diagnostics

Update an NGINXaaS deployment to a dual-stack (IPv4 + IPv6) network configuration with public IPs:

bash
az nginx deployment update --name myDeployment --resource-group myResourceGroup \
   --network-profile front-end-ip-configuration="{public-ip-addresses:[{id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/pubIPv4},{id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/pubIPv6}]}" \
   network-interface-configuration="{subnet-id:/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet}"

See the Azure CLI Deployment Update Documentation for more details on the required and optional parameters.

Use the az nginx deployment delete command to delete an NGINXaaS for Azure resource:

bash
az nginx deployment delete [--deployment-name]
                           [--ids]
                           [--no-wait {0, 1, f, false, n, no, t, true, y, yes}]
                           [--resource-group]
                           [--subscription]
                           [--yes]

  • Delete a deployment:

    bash
    az nginx deployment delete --name myDeployment \
       --resource-group myResourceGroup

See the Azure CLI Deployment Delete Documentation for more details on the required and optional parameters.