> For the complete documentation index, see [llms.txt](https://docs.expel.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.expel.io/connect-your-technology/expel-assembler/deploy-the-virtual-machine/deploy-the-assembler-in-nutanix.md).

# Deploy the Assembler in Nutanix

{% hint style="warning" %}
These instructions assume you are using Prism Central.
{% endhint %}

Each assembler you created must be deployed via a virtual machine, and then you can add your technology as a security device in Workbench to complete the full integration. For more information about the Expel Assembler or how it works, see the [About the Expel Assembler](/connect-your-technology/expel-assembler/about-the-expel-assembler.md) guide.

## Prerequisites

* You must have completed all of the steps in [Add a New Assembler](/connect-your-technology/expel-assembler/add-a-new-assembler.md) for each assembler you wish to deploy.

## Step 1: Download the CoreOS Ignition File from Workbench

The ignition file enables the virtual machine to read a configuration file, and to provision the Fedora CoreOS system based on the contents of that file. You will use this file when you configure the virtual machine in AWS.

1. [Log in to Workbench](https://workbench.expel.io/auth/login?orig=%2F).
2. In the side menu, navigate to **Organization Settings > Assemblers**.
3. Find the assembler you created, leave the file format as JSON, and select **Download the CoreOS Ignition File**. This action will download a JSON file that you will need in the next section.&#x20;

{% hint style="info" %}
You may choose a different file format if you like, but the JSON format is recommended for this type of assembler.
{% endhint %}

<figure><img src="/files/Eafkj0BJOEqa4x4PfyJF" alt="Select the JSON format in the right menu, and then select the download link."><figcaption></figcaption></figure>

4. Repeat this process for any additional assemblers.

{% hint style="warning" %}
You must keep track of which files came from which assembler, because each assembler has its own unique ignition file.
{% endhint %}

## Step 2: Locate the CoreOS URL and Checksum

Nutanix requires a URL and checksum for the CoreOS image before you can spin up the virtual machine. You may obtain these values via a web browser or via the command line.

{% tabs %}
{% tab title="Use a Web Browser" %}

1. Navigate to <https://builds.coreos.fedoraproject.org/streams/stable.json>.
2. In the web browser, find "nutanix" in the JSON.
3. Copy the values from the following two keys for use in the next section:
   * `location` - this is the URL.
   * `sha256` - this is the checksum.
     {% endtab %}

{% tab title="Use the Command Line" %}

1. Get the URL:

```
curl -s https://builds.coreos.fedoraproject.org/streams/stable.json | jq -r .architectures.x86_64.artifacts.nutanix.formats.qcow2.disk.location
```

2. Get the checksum:

```
curl -s https://builds.coreos.fedoraproject.org/streams/stable.json | jq -r .architectures.x86_64.artifacts.nutanix.formats.qcow2.disk.sha256
```

{% endtab %}
{% endtabs %}

## Step 3: Create the CoreOS Image in Nutanix

Now that you have the URL and checksum, you can create the required CoreOS image within Nutanix.

1. [Log in to Nutanix Prism Central](https://portal.nutanix.com/page/documents/details?targetId=Prism-Central-Guide-vpc_2023_4:mul-login-pc-t.html).
2. From the Dashboard, open the menu on the top left and select **Compute & Storage > Images**.

![Use the icon with three lines in the top left to access the menu, then select Images.](/files/89sYBHQra7Ff2NDDGmpG)

3. On the Images page, select **Add Image**.
4. For the Image Source:
   * Select **URL**.
   * Enter the CoreOS URL you saved in [Step 2](#step-2-locate-the-coreos-url-and-checksum).
   * Select **Upload file**.
5. Now you will be asked for more details:
   * **Name** - leave as is or change it if you wish.
   * **Description** - optional; you may leave blank.
   * **Checksum** - enter the CoreOS checksum you saved in [Step 2](#step-2-locate-the-coreos-url-and-checksum) and use the dropdown menu to change the type to "SHA-256".
   * Select **Next**.

![Image showing the name, type, description, and checksum fields.](/files/OZQd0NjJ8AqFCUaKV1lS)

6. Select a location for the CoreOS image.&#x20;

{% hint style="info" %}
You may choose to place the image directly on **clusters** (you must select the clusters) or use an **Image Placement Policy** (you must select a category and associated placement policy).
{% endhint %}

7. Select **Save**.
8. Go to **Activity > Tasks** to check the status of your image. It must be created before you can move to the next section.

{% hint style="warning" %}
The creation process may take 5-10 minutes.
{% endhint %}

## Step 4: Configure and Spin Up the Virtual Machine

{% hint style="info" %}

* Before you begin, have your **ignition file(s)** ([Step 1](#step-1-download-the-coreos-ignition-file-from-workbench)) ready and be sure that your CoreOS image was successfully created in Nutanix Prism Central. You can check the status of your image by going to Activity > Tasks.&#x20;
* Remember that your VM must have, at minimum, 2 virtual CPUs, 8 GB RAM, and 20 GB disk space.
  {% endhint %}

1. Still in Nutanix Prism Central, navigate to **Compute & Storage > VMs**.
2. On the VMs page, select **Create VM**.
3. On the Configuration page:
   * **Name** - enter a name for your assembler, such as "expel-assembler".
   * **Description** - optional; you may leave blank.
   * **Cluster** - select the cluster for your assembler, if applicable.
   * **Number of VMs** - enter "1". *If you are deploying more than one assembler, you will need to repeat this entire section for each assembler; always enter "1" here.*
   * **CPU** - enter "2" to meet Expel's minimum requirements.
   * **Cores Per CPU** - leave as "1".
   * **Memory** - enter "8" to meet Expel's minimum requirements.
   * **Enable Memory Overcommit** - leave **unchecked**.
   * Select **Next**.
4. On the Resources page, select **Attach Disk**.
   * **Type** - leave as **Disk**.
   * **Operation** - select **Clone from Image**.
   * **Image** - select the CoreOS image you created in [Step 3](#step-3-create-the-coreos-image-in-nutanix).
   * **Capacity** - enter "20" to meet Expel's minimum requirements.
   * **Bus type** - leave as **SCSI**.
   * Select **Save**.
5. Still on the Resources page, select Attach to Subnet.
   * **Subnet** - select the subnet for your VM.
   * **Network Connection State** - leave as **Connected**.
   * **Assignment Type** - select **Assign with DHCP** unless you are using a static IP address (in that case, select **Assign Static IP**).
   * **IP Address** - if using DHCP, leave blank; if using a static IP, enter the IP address.
   * Select **Save**.
6. Still on the Resources page:
   * **Boot Configuration** - you may use either the Legacy BIOS Mode or the UEFI BIOS Mode.
   * **Shield VM Security Settings** - leave as is.
   * Select **Next**.
7. On the Management page:
   * **Categories** - leave as is.&#x20;
   * **Timezone** - leave as **UTC**.
   * **Use this VM as an Agent VM** - leave unchecked.
   * **Guest Customization** - select **Cloud-init (Linux**) as the Script Type and leave **Custom Script** as the Configuration Method.
   * Select the **Upload Script** link just above the text box and upload your ignition file from [Step 1](#step-1-download-the-coreos-ignition-file-from-workbench); alternatively, you can paste the contents into the text box.
   * Select **Next**.
8. Review your configuration and select **Create VM** to create your virtual machine. You can check the status on the VMs page.&#x20;
9. When creation has completed, make sure to power your VM on:
   * Select the virtual machine by clicking on its name.
   * On the Summary page, go to **More > Power On**.&#x20;
10. Repeat this process for any additional assemblers.&#x20;

{% hint style="info" %}
You do not have to create another CoreOS image if you are using more than one assembler, but you do need to use a different ignition file for each assembler.
{% endhint %}

## Step 5: Verify a “Connected” Status in Workbench

{% hint style="info" %}
It can take 10 to 15 minutes for the assembler’s status to update in Workbench.
{% endhint %}

1. [Log in to Workbench](https://workbench.expel.io/auth/login?orig=%2F).
2. In the side menu, navigate to **Organization Settings > Assemblers** (or, refresh the page if you never logged out).
3. Find your newly created assembler(s) and verify that the status has changed from “Not Yet Connected” to “Connected.”&#x20;
   * If your assembler(s) still do not show as connected after waiting at least 15 minutes and refreshing the page, see the [Troubleshooting](#troubleshooting) section for help.

## Step 6: Connect Your Technology

You can now set up your vendor technology in Workbench.

<button type="button" class="button primary" data-action="search" data-icon="magnifying-glass">Search for your setup guide…</button>

## Troubleshooting

If your assembler is still not showing as “Connected” after 15 minutes:

* Make sure your VM's size meets the required minimums (2 virtual CPUs, 8 GB RAM, and 20 GB disk space).&#x20;
* Make sure your firewall allows the VM to make the [connections](/connect-your-technology/expel-assembler/add-a-new-assembler.md#step-2-update-your-firewall-configuration) that we require.

If all firewall and machine size settings are correct and you are still unable to connect the assembler, [contact Support](/support/how-to-reach-us.md) for help.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.expel.io/connect-your-technology/expel-assembler/deploy-the-virtual-machine/deploy-the-assembler-in-nutanix.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
