# Deploy Cycloid worker on Microsoft Azure with Resource Manager Template

Azure

The Azure Resource Manager template is located under our stack-external-worker (opens new window) git repository.

The template will create an Azure Virtual Machine Scale Set of Cycloid workers. The default values are already pre-filled to deploy and connect workers on our public SaaS, then you will be able to modify them according to your needs.

azure-resource-manager-template

Follow these steps to deploy the Azure Resource Manager template:

  1. Connect on http://console.cycloid.io (opens new window).
  2. Click on your top right profile picture, and select Organization settings

Manage org

  1. Go into the Workers tab and select Microsoft Azure.
  2. Follow the different steps and hit the Deploy to Azure button.
  3. Configure the Custom deployment to match your needs
  4. Click on the Purchase button to create the stack.

After the Custom template deployment, go to the Workers tab in the Cycloid dashboard. It will display all your connected workers and their status:

worker-status

# Troubleshooting

# Common template errors

If your deployment from a Microsoft Template failed, please check the Status message from Operation details

InvalidTemplate

Example:

{
    "status": "Failed",
    "error": {
        "code": "InvalidTemplate",
        "message": "Unable to process template language expressions for resource '/subscriptions/abcde1234-1234-1a23-2b3b-1a21234567ab/resourceGroups/cycloid-demo/providers/Microsoft.Compute/virtualMachineScaleSets/cycloid-demo-cycloid-ci-workers-prod' at line '496' and column '9'. 'Unable to evaluate template language function 'resourceId': function requires exactly one multi-segmented argument which must be resource type including resource provider namespace. Current function arguments 'Microsoft.Network/virtualNetworks/subnets,/subscriptions/abcde1234-1234-1a23-2b3b-1a21234567ab/resourceGroups/cycloid-demo/providers/Microsoft.Network/virtualNetworks/cycloid-virtual-network,/subscriptions/abcde1234-1234-1a23-2b3b-1a21234567ab/resourceGroups/cycloid-demo/providers/Microsoft.Network/virtualNetworks/cycloid-virtual-network/subnets/cycloid-subnet'. Please see https://aka.ms/arm-template-expressions/#resourceid for usage details.'",
        "additionalInfo": [
            {
                "type": "TemplateViolation",
                "info": {
                    "lineNumber": 496,
                    "linePosition": 9,
                    "path": ""
                }
            }
        ]
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Reason: The given virtualNetworkName or subnetName use an invalid format. The expected format is the name of the resources. The most common mistake from user is to specify the ID URL instead of only the name.

Solution: Provide only the resource name as a simple string.

Wrong : /subscriptions/.../resourceGroups/.../providers/Microsoft.Network/virtualNetworks/.../subnets/cycloid-subnet Good: cycloid-subnet

InvalidResourceReference

Example:

{
    "status": "Failed",
    "error": {
        "code": "InvalidResourceReference",
        "message": "Resource /subscriptions/abcde1234-1234-1a23-2b3b-1a21234567ab/resourceGroups/.../providers/Microsoft.Network/virtualNetworks/MY-WRONG-NETWORK referenced by resource /subscriptions/abcde1234-1234-1a23-2b3b-1a21234567ab/resourceGroups/.../providers/Microsoft.Compute/virtualMachineScaleSets/cycloid-demo-cycloid-ci-workers-prod was not found. Please make sure that the referenced resource exists, and that both resources are in the same region.",
        "details": [
            {
                "code": "NotFound",
                "message": "Resource /subscriptions/abcde1234-1234-1a23-2b3b-1a21234567ab/resourceGroups/.../providers/Microsoft.Network/virtualNetworks/MY-WRONG-NETWORK not found."
            }
        ]
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

Reason: A Resource mentioned is not found on Azure. In this example, the virtualNetworks name provided "MY-WRONG-NETWORK" doesn't exist on Azure cloud.

Solution: make sure the resource name provided is correctly spelled.

If your worker still not running correctly, you can follow the Troubleshooting section.