---
title: "Quickstart: Deploy Geneos using Azure Resource Manager"
description: "Learn how to deploy Geneos in Azure using the Bicep template with this step-by-step guide, ensuring a smooth and efficient setup process."
url: "https://docs.itrsgroup.com/docs/geneos/7.11.0/collection/cloud-native-deployments/quickstart/azure-resource-manager-quickstart/index.html"
---
This page provides step-by-step instructions for deploying a demo environment using Azure Resource Manager and the provided `Azure/environments/demo/main.bicep` template. This is useful if you want to run an initial deployment in your Azure environment with minimal configuration requirements.


**Note**

 The demo environment deployment provisions the necessary Azure resources, including virtual machines for the Gateway and Netprobe. It also creates a virtual network and a security group.

The steps below can also be adapted for the development environment, but they require existing virtual machines on which to deploy Geneos services. 


## File structure

The Azure native deployment package contains the following file structure:

```plaintext
scripts/
└── native/
    └── Azure/
        ├── components/
        │   └── geneos-host.bicep
        │
        ├── environments/
        │   ├── demo/
        │   │   ├── main.bicep
        │   │   └── parameters.bicepparam
        │   │
        │   └── dev/
        │       ├── main.bicep
        │       └── parameters.bicepparam
        │
        ├── modules/
        │   ├── geneos-deployment.bicep
        │   ├── networkinterface.bicep
        │   ├── network-security-group.bicep
        │   ├── public-ip.bicep
        │   ├── run-command.bicep
        │   ├── virtual-machine.bicep
        │   └── virtual-network.bicep
        │
        └── scripts/
```

See [Template files](https://docs.itrsgroup.com/docs/geneos/7.11.0/collection/cloud-native-deployments/deploying-via-azure-resource-manager/azure-resource-manager/index.html#template-files) for details on the purpose of each file.

## Prerequisites

1. Azure CLI installed. This can be installed from [Azure](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli).
2. Bicep CLI installed. You can run the following command to install Bicep CLI, but this is normally bundled with the Azure CLI installation.

    ```bash
    az bicep install
    ```

3. Logged in from CLI

    ```bash
    az login
    ```

4. Existing Azure resources

    - Resource Group — used for the deployment stack.
    - Storage Account — used to store Geneos artifacts such as binaries and configuration XMLs.

    
**Important**

 The user should have a `Contributor` role on both the Resource Group and Storage Account. 


## Deployment steps


**Tip**


Watch this [step-by-step demo](https://app.storylane.io/share/zcp1yr0tec2t) in full screen to learn how to deploy a demo environment. 


https://app.storylane.io/demo/zcp1yr0tec2t

1. Prepare the required [Azure resources](#prepare-azure-resources).
2. [Upload Geneos artifacts](#upload-geneos-artifacts-to-the-azure-storage-account) to the storage account.
3. [Deploy the Geneos stack](#deploy-the-geneos-stack) using the Bicep template provided.
4. [Clean up](#clean-up-resources) the resources created.

### Prepare Azure resources

Use the Azure CLI to create the following resources:

- Azure resource group

  ```bash
  az group create --name <ResourceGroupName> --location <Location>
  ```

- Azure storage account

  ```bash
  az storage account create --name <StorageAccountName> --resource-group  <ResourceGroupName> --location <Location> --sku Standard_LRS --kind StorageV2
  az storage container create --name <ContainerName> --account-name <StorageAccountName>
  ```

### Upload Geneos artifacts to the Azure storage account

Upload the following Geneos artifacts to the existing Azure storage account container:

- Gateway binary tarball (for example, `geneos-gateway-7.5.0-linux-x64.tar.gz`)
- Gateway setup XML (for example, `gateway.setup_template.xml` located in `/resources`)
- Netprobe binary tarball (for example, `geneos-netprobe-standard-7.5.0-linux-x64.tar.gz`)
- Netprobe setup XML (for example, `netprobe.setup_template.xml` located in `/resources`)

### Deploy the Geneos stack

1. Update `Azure/environments/demo/parameters.bicepparam` to match your requirements and the artifacts uploaded to the storage account. All parameters must be specified, as they reference the uploaded files. Parameters with default values are already set in the provided template file.

    - General deployment parameters

      | Parameter | Description |
      |-----------|-------------|
      | `storageAccountName` | Name of the existing storage account that contains the Geneos artifacts. |

    - Gateway (GW) Geneos deployment parameters

      | Parameter | Description |
      |-----------|-------------|
      | `operationGw` | Set to `install` for Gateway deployment |
      | `binaryUrlGw` | URL to the `Gateway binary tarball` in the Storage Account |
      | `serviceBinaryTarGw` | Gateway Tarball filename (for example, `geneos-gateway-7.5.0-linux-x64.tar.gz`) |
      | `configUrlGw` | URL to the `Gateway setup XML` in the Storage Account |
      | `serviceConfigGw` | Gateway setup XML filename (for example, `gateway.setup_template.xml`) |

    - Netprobe (NP) Geneos deployment parameters

      | Parameter | Description |
      |-----------|-------------|
      | `operationNp` | Set to `install` for Netprobe deployment |
      | `binaryUrlNp` | URL to the `Netprobe binary tarball` in the Storage Account |
      | `serviceBinaryTarNp` | Netprobe Tarball filename (for example, `geneos-netprobe-standard-7.5.0-linux-x64.tar.gz`) |
      | `configUrlNp` | URL to the `Netprobe setup XML` in the Storage Account |
      | `serviceConfigNp` | Netprobe setup XML filename (for example, `netprobe.setup_template.xml`) |

2. Deploy using the [az stack group create](https://learn.microsoft.com/en-us/cli/azure/stack/group?view=azure-cli-latest#az-stack-group-create) command. This may take several minutes as it involves provisioning virtual machines and installing Geneos services.

    
**Note**

 The default demo configuration will deploy three virtual machines of size `Standard_D2s_v3`, following the [ITRS Azure virtual machine image](https://portal.azure.com/#view/Microsoft_Azure_Compute/VmSmartDefaultsBlade/marketplaceId/itrsgroupltd1620310702149.itrs-geneos-azure-monitoringitrs-geneos-azuremon-byol/telemetryId/3ee0a00b-a9c1-4ae2-93f1-8be0cff0fd16) specifications. For complete details on the default virtual machine configuration, refer to [Azure virtual machine defaults](https://docs.itrsgroup.com/docs/geneos/7.11.0/collection/cloud-native-deployments/quickstart/virtual-machine-defaults/index.html). 


      ```bash
      az stack group create \
        --name <StackName> \
        --resource-group <ResourceGroup> \
        --template-file <BicepFile> \
        --parameters <BicepParameters> \
        --action-on-unmanage deleteAll \
        --deny-settings-mode none
      ```

    For example:

      ```bash
      az stack group create \
        --name NetprobeStack \
        --resource-group DeploymentGroup \
        --template-file scripts/native/Azure/environments/demo/main.bicep \
        --parameters scripts/native/Azure/environments/demo/parameters.bicepparam \
        --action-on-unmanage deleteAll \
        --deny-settings-mode none
      ```

3. Once the deployment has completed, verify that the following resources have been created in the specified resource group:
    - One virtual network
    - One network security group
    - Three virtual machines (one for Gateway and two for Netprobes). Each virtual machine will have its own public IP and network interface.

    
**Success**

 The Gateway and Netprobe services should be installed and running on their respective virtual machines. 


4. You can retrieve the summary of deployed virtual machines and Geneos services using the [az stack group show](https://learn.microsoft.com/en-us/cli/azure/stack/group?view=azure-cli-latest#az-stack-group-show) command.

    ```bash
    az stack group show \
      --name <StackName> \
      --resource-group <ResourceGroup> \
      --query "outputs.*.value[]" \
      --output table
    ```

    For example:

    ```bash
    az stack group show --name NetprobeStack --resource-group DeploymentGroup --query "outputs.*.value[]" --output table

    IpAddress      VirtualMachineName    ServiceName    ServiceDirectory    ServiceProvisioningState
    -------------  --------------------  -------------  ------------------  --------------------------
    40.90.160.121  np-vm-1               netprobe       /opt/geneos         Succeeded
    20.195.13.101  np-vm-2               netprobe       /opt/geneos         Succeeded
    172.188.21.69  gw-vm-1               gateway        /opt/geneos         Succeeded
    ```

   To back up service directories or extract files from the virtual machines for analysis, run the following command:
  
    ```bash
    ssh -i <privatekey> <user>@<machineIP> "sudo tar -cvz -C <servicedirectory> <servicename>" > archive.tar.gz
    ```

    For example:

    ```bash
    ssh -i ~/.ssh/id_rsa azureuser@40.90.160.121 "sudo tar -cvz -C /opt/geneos netprobe" > archive.tar.gz
    ```

### Clean up resources

To clean up and remove all resources created by the deployment stack, use the [az stack group delete](https://learn.microsoft.com/en-us/cli/azure/stack/group?view=azure-cli-latest#az-stack-group-delete) command.

  ```bash
  az stack group delete \
    --name <StackName> \
    --resource-group <ResourceGroup> \
    --action-on-unmanage deleteAll
  ```

  For example:

  ```bash
  az stack group delete \
    --name NetprobeStack \
    --resource-group DeploymentGroup \
    --action-on-unmanage deleteAll
  ```

## Next steps

After successfully deploying to the demo environment, you may proceed to the development environment. The demo environment automatically provisions network and security resources for demonstration purposes and must be destroyed afterwards. The development environment, however, requires you to provision your own network and security resources.

For detailed instructions, see [Deploying via Azure Resource Manager](https://docs.itrsgroup.com/docs/geneos/7.11.0/collection/cloud-native-deployments/deploying-via-azure-resource-manager/azure-resource-manager/index.html).

