--- title: "Oracle OCI: Installing on Oracle OCI" slug: "installing-on-oracle-oci" updated: 2026-05-13T20:40:02Z published: 2026-05-13T20:40:02Z canonical: "docs.nasuni.com/installing-on-oracle-oci" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.nasuni.com/llms.txt > Use this file to discover all available pages before exploring further. # Oracle OCI: Installing on Oracle OCI ## ## Overview Oracle Cloud Infrastructure Compute Service is Oracle Cloud Infrastructure's (OCI) virtual machine (VM) and compute offering. It provides flexible, scalable, and high-performance computing resources for running applications, databases, and workloads in the cloud. Key features of OCI Compute include the following: - Virtual machines (VMs) and “bare metal”: Choose between virtualized environments or dedicated physical servers. - Scalability and auto-scaling: Automatically adjust resources based on demand. - Multiple OS options: Supports Oracle Linux, Windows, Ubuntu, CentOS, and more. - High availability and fault domains: Ensures uptime with redundancy. - Security and networking: Integrates with OCI Virtual Cloud Networks (VCNs) for secure and isolated environments. Use cases of OCI Compute include the following: - Cloud file storage: Store and access files across global teams. - Data archiving and backup: Use OCI Object Storage for scalable, cost-effective data retention. - Hybrid and multi-cloud environments: Extend on-premises storage into OCI without re-architecting applications. Considerations include the following: - Most modern OCI compute shapes support UEFI 64-bit operating systems. This includes: - Flexible VM shapes, such as `VM.Standard.E5.Flex` and `VM.Standard.E6.Flex`. These shapes (known as Instance Type) automatically use UEFI firmware when instances are launched. You can specify the firmware type using the --extended-metadata flags during instance launch. However, by default, UEFI is used for most newer shapes. Older shapes, such as VM.Standard1, or certain custom shapes might default to BIOS instead. ### Nasuni OCI Deployment Sizing Guidelines Nasuni provides flexible deployment sizing to meet performance and scalability requirements while optimizing for cost and efficiency. For more information, see [Installing Edge Appliance on KVM](/v1/docs/installing-edge-appliance-on-kvm). We recommend using the `VM.Standard.E5.Flex` and `VM.Standard.E6.Flex` shapes as a starting point, adjusting resources as needed based on your workload. Nasuni requires a minimum of 8 CPUs and 16 GiB of RAM for the NEA. > [!TIP] > ***Tip:*** *For OCI Compute Shapes recommendation, see* [*Compute Shapes*](https://docs.oracle.com/en-us/iaas/Content/Compute/References/computeshapes.htm)*.* ## **OCI IAM Policies and Permissions** In OCI, access control is managed through Identity and Access Management (IAM) policies. These policies define *who* can perform *what actions* on *which resources* and *where* (tenancy or compartment). There are two primary levels at which permissions can be applied: - **Tenancy-Level Policies** These policies apply across the entire tenancy, granting access to all compartments and resources within it. While this approach simplifies management, it also broadens access, potentially exposing more resources than necessary. - **Compartment-Level Policies** These policies restrict access to specific compartments and the resources they contain. This approach aligns with the principle of **least privilege**, limiting user permissions to only what is needed for their role or workload. It also provides better isolation and reduces the risk of unintended access. **Nasuni Recommendation** Nasuni strongly recommends applying IAM policies at the compartment level wherever possible. This ensures minimal exposure, tighter security boundaries, and greater control over resource access. Tenancy-level policies should only be used when absolutely required for global administrative or operational needs. ## **Important Prerequisites** These prerequisites are necessary before deploying a Nasuni Instance within the OCI Compute service: - General knowledge of the following OCI components is helpful: Compartments, VCNs, security rules, compute, block storage, and object storage. For more information, see ["Tutorial: Launching Your First Instance"](https://docs.public.content.oci.oraclecloud.com/en-us/iaas/private-cloud-appliance/cmn/compute/tutorial-launching-your-first-instance.htm). - OCI CLI installed and configured. This is required if you plan to deploy Nasuni via the OCI CLI. For more information, see [Installing the CLI](https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/cliinstall.htm). - Before you begin, ensure that the required infrastructure components are set up and that you have all the necessary information readily available. - Ensure you understand the OCI S3 Compatibility API. For more information, see [Object Storage Amazon S3 Compatibility API](https://docs.oracle.com/en-us/iaas/Content/Object/Tasks/s3compatibleapi.htm) - A Virtual Cloud Network (VCN) is configured. For more information, see [Create and Configure a Virtual Cloud Network](https://docs.oracle.com/en/learn/lab_virtual_network/index.html#acknowledgments.). - A Subnet in the VCN to use with the Nasuni instances. For more information, see [Creating a Subnet](https://docs.oracle.com/en-us/iaas/compute-cloud-at-customer/topics/network/creating-a-subnet.htm). - Ensure the following ports are open in the Subnet or VCN (ports 443 and 8443 are required). For more information, see [Security Lists](https://docs.oracle.com/en-us/iaas/Content/Network/Concepts/securitylists.htm). - Other ports that might need to be opened, depending on the protocols used with Nasuni. For more information, see [Firewall and Port Requirements](https://docs.nasuni.com/docs/firewall-and-port-requirements). - Subnet OCID (Oracle Cloud Identifier). For more information, see [Getting a Subnet's Details](https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/get-subnet.htm). - Generating SSH Keys. For more information, see [Managing Key Pairs on Linux Instances](https://docs.public.content.oci.oraclecloud.com/en-us/iaas/Content/Compute/Tasks/managingkeypairs.htm). - Compartment OCID (Oracle Cloud Identifier). For more information, see [Finding the OCID of a Compartment](https://docs.oracle.com/en-us/iaas/Content/GSG/Tasks/contactingsupport_topic-Locating_Oracle_Cloud_Infrastructure_IDs.htm#Finding_the_OCID_of_a_Compartment). > [!TIP] > ***Tip:*** *If you do not have the required permissions to configure the necessary network infrastructure (such as VCNs, subnets, or security rules), ensure that someone with the appropriate access sets them up for you and provides the corresponding OCIDs.* ## Deployment Prerequisites You are expected to complete a list of prerequisite tasks to successfully deploy a Nasuni Instance within the OCI Compute service. Nasuni supports deployment using both [Web UI](https://docs.oracle.com/en/engineered-systems/private-cloud-appliance/3.0-latest/user/user-usr-ce-ui.html) and [OCI CLI](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/cliconcepts.htm). ### Downloading the compatible KVM image Download the latest supported KVM GA release image for OCI compute deployment. For more information, see [**Using Nasuni Portal to download software**](/v1/docs/installing-on-oracle-oci#appendix-a-using-nasuni-portal-to-download-software-for-oracle-oci-installation). ### Creating Nasuni bucket This procedure uses the Web UI. To use the OCI CLI, see [**"Nasuni image import and instance creation using OCI CLI"**](/v1/docs/installing-on-oracle-oci#appendix-d-nasuni-image-import-and-instance-creation-using-oci-cli). Create a bucket for the custom image by following these steps: 1. Navigate to **OCI Object Storage and Archive**. Ensure that you are in the right **Compartment**. ![](https://cdn.document360.io/2adf6ce2-c120-4520-b135-0fc4463ddde3/Images/Documentation/image-H6QMZR3I.png) 2. To create a new bucket for the image, click **Create bucket**. 3. On the **Create bucket** page, provide a **Bucket Name**. ![](https://cdn.document360.io/2adf6ce2-c120-4520-b135-0fc4463ddde3/Images/Documentation/image-4MIENVZ1.png) 4. Click **Create bucket**. 5. Click the newly created bucket and, on the **Objects** page, click ‘**Upload objects**’. ![](https://cdn.document360.io/2adf6ce2-c120-4520-b135-0fc4463ddde3/Images/Documentation/image-6Q6C1W4L.png) For more information, see [Creating an Object Storage Bucket](https://docs.oracle.com/en-us/iaas/Content/Object/Tasks/managingbuckets_topic-To_create_a_bucket.htm). 6. On the **Upload objects** page, enter the **Object name prefix**, use the default **Standard** as the **Storage tier**, and select the image to upload. ![](https://cdn.document360.io/2adf6ce2-c120-4520-b135-0fc4463ddde3/Images/Documentation/image-MDSPKTJJ.png) 7. Click **Next**, then click ‘**Upload objects**’. > [!NOTE] > ***Note****: System administrators typically set a 5-minute console timeout. To avoid timeout issues, import the image using the OCI CLI instead.* ### Importing the Nasuni image to the target bucket Import the Nasuni custom image by following these steps: 1. Navigate to **Compute** and click **Custom Image**. 2. Click the import image and specify the following: ![](https://cdn.document360.io/2adf6ce2-c120-4520-b135-0fc4463ddde3/Images/Documentation/image-A8TKIHH5.png) 1. **Name** of the image to import. 2. **Operating System**: leave as the default. 3. **Bucket** where the custom image is to be stored. 4. From the **Object name** drop-down list, select the image to import. 5. For **Image type**, select **QCOW2**. 6. For **Launch mode**, select **Paravirtualized**. 3. Click **Import image**. ### Checking the Nasuni custom image Check custom image attributes by following these steps: 1. Navigate to **Compute**. 2. Click **Custom images**. 3. Click the target custom image. 4. In **Custom images**, navigate to the **“Actions”** drop-down menu and click “**Edit image capabilities**”. > [!TIP] > ***Tip:*** *Default firmware is set to* `BIOS` *when an image is imported. Failure to set the correct firmware attribute would result in the Nasuni instance to fail to instantiate.* > [!TIP] > ***Tip:*** *Make sure that* **Firmware** *is set to:* - Firmware: UEFI_64 > [!TIP] > ***Tip:*** You can also check under **Image capabilities** to confirm that **Firmware** is set correctly. ### Creating block volumes This procedure uses the Web UI. To use the OCI CLI, see [Creating block volumes](/v1/docs/installing-on-oracle-oci#appendix-l-create-your-block-volumes). Create block volumes by following these steps: 1. Navigate to **Storage**. 2. Click **Block Volumes**. 3. For both COW and Cache disks, click **Create block volume**. For sizing more information, see [Installing Edge Appliance on KVM](/v1/docs/installing-edge-appliance-on-kvm). > [!TIP] > ***Tip:*** *The Nasuni Management Console only requires the OS block volume.* ## **Deploying Nasuni using Web UI** Ensure that the customer prerequisites are complete before deploying Nasuni. To deploy Nasuni using Web UI, follow these steps: 1. Navigate to **Compute** service. 2. Click **Create instance**. 3. In “**Image and shape**”, select the Nasuni custom image and select a supported **Shape**. 4. In **Security**, the **Shielded** instance option is supported and recommended. 5. In **Networking**, select the target virtual cloud network and public subnet. > [!TIP] > ***Tip:*** *To create a new Virtual Cloud Network, see* [Creating a VCN](https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/create_vcn.htm) *for more information.* *To create a new Public Subnet, see* [Creating a Subnet](https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/create_subnet.htm) *for more information.* 1. For “**Primary VNIC IP addresses**”, you can leave “**Automatically assign private IPv4 address**“ as the default. Alternatively, you can manually assign a new private IPv4 address. > [!TIP] > ***Tip****: When manually assigning private IPv4 address, refer to your existing subnet ranges to avoid conflict and overlapping IP Addresses.* 1. For “**Add SSH keys**”, you can either generate a new key pair, or use an existing key pair and click **Next**. 2. When you click **Create**, the Instance starts automatically. Therefore, ensure that you have completed the [block volume prerequisite](/v1/docs/installing-on-oracle-oci#creating-block-volumes) above. Otherwise, the Nasuni Edge Appliance fails to instantiate because it cannot provision the Cache. Then click **Create**. 3. Immediately after creating the instance, click the instance that you have created and then, under **Resources**, click “**Attached block volumes”**. 4. In “**Attached block volumes**”, click “**Attach block volume**”. 5. In **Volume**, select the Cache block volume. 6. Repeat Step 11 for the COW block volume. > [!TIP] > ***Tip:*** *Only the OS block volume is required for the Nasuni Management Console instance.* ## **Deploying Nasuni using the OCI CLI** ### **OCI CLI Schema** The following provides a high-level OCI CLI Schema for OCI CLI deployment. > [!TIP] > ***Tip****: For a comprehensive OCI CLI deployment, follow the detailed instructions from* [***"Appendix C: Creating Customer secret keys via OCI CLI"***](/v1/docs/installing-on-oracle-oci#appendix-c-creating-customer-secret-keys-via-oci-cli) *onwards.* #### **Create Block Volume Script** oci bv volume create \ --compartment-id \ --availability-domain "Availability_Domain" \ --size-in-gbs \ --display-name "Cache_Disk_Name" oci bv volume create \ --compartment-id \ --availability-domain "Availability_Domain" \ --size-in-gbs \ --display-name "Cow_Disk_Name" #### **Compute Instance Launch Script** oci compute instance launch \ --compartment-id \ --availability-domain "" \ --shape "" \ --subnet-id \ --image-id \ --display-name "Instance_Name" \ --assign-public-ip true \ --metadata '{"ssh_authorized_keys": "ssh-rsa_key” \ --shape-config '{ "memory-in-gbs": 16, "ocpus": 8.0 }' \ --extended-metadata '{"firmware": "UEFI_64"}' > [!WARNING] > ***Important****: The following is the most important attribute when deploying Nasuni in OCI via CLI. Without this metadata, the VM fails to instantiate:* > > --extended-metadata '{"firmware": "UEFI_64"}' #### **Attach Block Volume Script** oci compute volume-attachment attach \ --instance-id \ --volume-id \ --type paravirtualized oci compute volume-attachment attach \ --instance-id \ --volume-id \ ### **Deployment workflow** To deploy Nasuni using the CLI scripts, perform the following steps: 1. Run the [**Create Block Volume Script**](/v1/docs/installing-on-oracle-oci#create-block-volume-script). After the block volume is created, note the block volume instance ID, because you need it in step 3. 2. Run the [**Compute Instance Launch Script**](/v1/docs/installing-on-oracle-oci#compute-instance-launch-script). Immediately after running the Compute Instance Launch Script, run the Attach Block Volume Script to attach both Cache and COW block volumes, because this is required to deploy the Nasuni Edge Appliance successfully. 3. Run the [**Attach Block Volume Script**](/v1/docs/installing-on-oracle-oci#attach-block-volume-script). > [!TIP] > ***Tip:*** *The Nasuni Management Console only requires the OS block volume.* ### **Post-deployment checks and troubleshooting** > [!NOTE] > If you experience any issues accessing the Nasuni Edge Appliance or the Nasuni Management Console, verify your Virtual Cloud Network (VCN) configuration to ensure that the appropriate firewall rules are in place. The screenshot shown below is provided as an example. Customers should review their own firewall rule configurations carefully to ensure that only trusted sources are safelisted to maintain a secure environment. ![](https://cdn.document360.io/2adf6ce2-c120-4520-b135-0fc4463ddde3/Images/Documentation/image-X96WGE2F.png) ## **Appendices** ### Appendix A: Using the Nasuni Portal to download software for Oracle OCI installation 1. Log in to the [Nasuni Portal](http://portal.nasuni.com). ![](https://cdn.document360.io/2adf6ce2-c120-4520-b135-0fc4463ddde3/Images/Documentation/image-BT2J74HO.png) 2. Click **Setup**, then click **Installs**. ![](https://cdn.document360.io/2adf6ce2-c120-4520-b135-0fc4463ddde3/Images/Documentation/image-UVZV99L4.png) 1. On the **Installs** page, follow these steps: 1. In the **Nasuni Edge** area, click **Universal**. ![](https://cdn.document360.io/2adf6ce2-c120-4520-b135-0fc4463ddde3/Images/Documentation/image-PKLN1OCT.png) 2. On the side panel that appears, click **QCOW2**. ![](https://cdn.document360.io/2adf6ce2-c120-4520-b135-0fc4463ddde3/Images/Documentation/image-XNHBVWAD.png) > [!TIP] > ***Tip:*** *For Oracle Cloud Infrastructure, Nasuni recommends using the latest GA release KVM image build ‘QCOW2‘.* 2. To install the Nasuni Management Console (NMC), on the **Installs** page, follow these steps: 1. In the **Nasuni Management Console (NMC)** area, click **Universal**. 2. On the side panel that appears, click **QCOW2**. > [!TIP] > ***Tip:*** *For Oracle Cloud Infrastructure, Nasuni recommends using the latest GA release KVM image build ‘QCOW2‘.* > [!TIP] > ***Tip:*** *To import the image to an OCI Object Storage bucket, see Importing Nasuni image to target bucket section.* ### Appendix B: Creating Customer secret keys required for configuring the target object storage in Nasuni > [!NOTE] > ***Note****: Customer secret keys are located in* **Identity→ Domains → → User Management → ‘Profile’** *under* ‘**Tokens and keys**‘. 1. In “**Identity & Security**”, navigate to the ‘**Tokens and keys**’ tab. ![](https://cdn.document360.io/2adf6ce2-c120-4520-b135-0fc4463ddde3/Images/Documentation/image-SNN7BCGP.png) 1. Navigate to **Customer secret keys** and click ‘**Generate secret key**’. 2. Provide a **Name** for the customer secret key and click ‘**Generate secret key**’. > [!TIP] > ***Tip:*** *Save the secret in a secure location where you can access it later, because it is required for configuring* ***Cloud Credentials*** *in the Nasuni Management Console and/or on the Nasuni Edge Appliance.* ![](https://cdn.document360.io/2adf6ce2-c120-4520-b135-0fc4463ddde3/Images/Documentation/image-79OWCSX8.png) ### Appendix C: Creating Customer secret keys via OCI CLI > [!NOTE] > In the following examples provided, variables are used to make commands easier to reuse and maintain throughout the deployment of Nasuni instances in OCI Compute service. To obtain the Nasuni user OCID: ```properties $ oci iam user list --query "data[?\"name\" == ''].[id]" Example: $ oci iam user list --query "data[?\"name\" == 'nasuni-user'].[id]" [ "ocid1.user.oc1..aaaaaaaa1aaaaaaaaaaa1aa11hhhg1zxqlcoaepthdwzwpjqfgtc111aaaaa <--- USE THIS OCID FOR CREATING SECRET KEY ". ] [ ] ``` To create the secret key for the Nasuni user ```properties $ oci iam customer-secret-key create --user-id --display-name Example: oci iam customer-secret-key create --user-id ocid1.user.oc1..aaaaaaaa1aaaaaaaaaaa1aa11hhhg1zxqlcoaepthdwzwpjqfgtc111aaaaa --display-name nasuni-key "data": { "access-key": "aa11a1aa1a1a1111aa1e1111111111d11a111a11", <--- COPY THIS ACCESS KEY, YOU WILL NEED IT FOR THE NASUNI "CLOUD CREDENTIALS" "display-name": "nasuni-key", "id": "ocid1.customersecretkey.oc1...aaaaaaaa1aaaaaaaaaaa1aa11hhhg1zxqlcoaepthdwzwp jqfgtc111aaaaa", "inactive-state": null, "key": "AaAAAAaaaaaA1A1AaAjbsZAN1AAAAaaaL+1aaAaaaAA=", <--- COPY THIS SECRET KEY, YOU WILL NEED IT FOR THE NASUNI"CLOUD CREDENTIALS" "lifecycle-state": "ACTIVE", "time-created": "2025-10-20T14:56:00.000000+00:00", "time-expires": null, "user-id": "ocid1.user.oc1..aaaaaaaa1aaaaaaaaaaa1aa11hhhg1zxqlcoaepthdwzwpjqfgtc111aaaaa " }, "etag": "1a1a111a1aa3541bc58a33f0b423c3080ae6c21e96e27c6d2dc111c1aa111111" } ``` ###### ChatGPT said: > [!TIP] > ***Tip:*** If you do not have permissions to create secret keys for the Nasuni ‘user’ ensure that someone with the necessary access can securely provide you with the access key and secret key needed to configure Nasuni Cloud Credentials. The IAM policy required to manage credentials for other users is as follows: `Allow group <User Group Name> to manage users in tenancy` ### Appendix D: Nasuni image import and instance creation using OCI CLI #### **Setting an environment variable** You can export the compartment OCID to keep this as a variable when deploying via CLI. See example below. ```properties Set an environment variable for the compartment OCID: $ export COMP_ID="" Example: $ export 1ktwea1aaaaaaa" COMP_ID="ocid1.compartment.oc1..aaaaaaaaaaaaa1msmfa1c11moicw1p1rryuurm1cwezl ``` #### **Creating a bucket** ```properties $ oci os bucket create --name --compartment-id Example: $ oci os bucket create --name MyBucketName --compartment-id $COMP_ID ``` #### **Uploading Nasuni images into a bucket** ```properties $ oci os object put --bucket-name --file ``` > [!TIP] > ***Tip:*** *Run this command for each Nasuni image.* ### ### Appendix E: Importing Nasuni images from the object storage bucket to create custom images Run the following for each Nasuni image to import Nasuni images from the object storage bucket to create custom images: ```properties Import the Nasuni image from the bucket: $ oci compute image import from-object \ --compartment-id \ --namespace \ --bucket-name \ --name \ --display-name \ --source-image-type QCOW2 \ --launch-mode PARAVIRTUALIZED ``` ### Appendix F: Retrieving the image OCID and setting the image OCID as an environmental variable ```properties $ oci compute image list --display-name --compartment-id --query "data[*]".{"id:\"id\""} Export a separate variable for each Nasuni image created: $ export NMC_IMAGE_ID="" $ export EDGE_IMAGE_ID="" Example: $ oci compute image list --display-name nasuni-mgmt-console --compartment-id $COMP_ID --query "data[*]".{"id:\"id\""} [ { "id": "ocid1.image.oc1.iad.aaaaaaa1aa1aaaaa1aaaaaaaaaaaaaaaaaaaaaaaa11a1aaaaaaa11a" <--THIS IS THE ID STRING TO EXPORT } ] $ export NMC_IMAGE_ID="ocid1.image.oc1.iad.aaaaaaa1aa1aaaaa1aaaaaaaaaaaaaaaaaaaaaaaa11 a1aaaaaaa11a" $ oci compute image list --display-name nasuni-edge --compartment-id $COMP_ID --query "data[*]".{"id:\"id\""} [ { "id": "ocid1.image.oc1.iad.aaaaaaa2aa2aaaaa2aaaaaaaaaaaaaaaaaaaaaaaa22a2aaaaaaa22a" <--THIS IS THE ID STRING TO EXPORT } ] $ export EDGE_IMAGE_ID="ocid1.image.oc1.iad.aaaaaaa2aa2aaaaa2aaaaaaaaaaaaaaaaaaaaaaaa2 2a2aaaaaaa22a" ``` ### Appendix G: Getting the image schema and setting the OCID and version as a variable ```properties $ oci compute global-image-capability-schema list --all oci compute global-image-capability-schema-version get \ --global-image-capability-schema-id \ --global-image-capability-schema-version-name Example: { $ oci compute global-image-capability-schema list --all "data": [ { "compartment-id": null, "current-version-name": "515412e5-695c-4d22-866f-a1123b1023c4", <--USE THIS VERSION NAME "defined-tags": {}, "display-name": "OCI.ComputeGlobalImageCapabilitySchema", "freeform-tags": {}, "id": "ocid1.computeglobalimgcapschema.oc1.iad.aaaaaaaa123aaaa45uhrg11h1gcn1xs11aaa aaaaaaaa11aaaaaa1a1a11a", <---USE THIS OCID "time-created": "2020-03-25T21:06:47.185000+00:00" } ] } $ export SCHEMA_ID="ocid1.computeglobalimgcapschema.oc1.iad.aaaaaaaa123aaaa45uhrg11h1g cn1xs11aaaaaaaaaaa11aaaaaa1a1a11a" $ export SCHEMA_VERS="515412e5-695c-4d22-866f-a1123b1023c4" ``` ### Appendix H: Creating a json file so UEFI_64 is the default firmware Below is an example of what this looks like. ```properties { "Compute.Firmware": { "default-value": "UEFI_64", "descriptor-type": "enumstring", "source": "GLOBAL", "values": [ "UEFI_64"] } } ``` ### Appendix I: Creating an image-capability-schema for the custom image ```properties $ oci compute image-capability-schema create \ --compartment-id \ --image-id \ --global-image-capability-schema-version-name \ --schema-data=file:// .json Example: $ oci compute image-capability-schema create \ --compartment-id $COMP_ID \ --image-id $EDGE_IMAGE_ID \ --global-image-capability-schema-version-name $SCHEMA_VERS \ --schema-data=file://schema.json { "data": { "compartment-id": "ocid1.tenancy.oc1..aaaa...", "compute-global-image-capability-schema-id": "ocid1.computeglobalimgcapschema.oc1.iad.aaaa...", "compute-global-image-capability-schema-version-name": "515412e1-691c- 4d22-866f-a1123b1023c4", "defined-tags": {}, "display-name": "computeimgcapschema20251017173046", "freeform-tags": {}, "id": "ocid1.computeimgcapschema.oc1.iad.aaaa...", "image-id": "ocid1.image.oc1.iad.aaaa...", "schema-data": { "Compute.Firmware": { "default-value": "UEFI_64", "descriptor-type": "enumstring", "source": "IMAGE", "values": [ "UEFI_64" ] } }, "time-created": "2025-10-17T17:30:46.988000+00:00" }, "etag": "4e5e995f4bf3541bc58a33f0b423c3080ae6c21e96e27c6d2dc627c8cb549698" } ``` > [!TIP] > ***Tip:*** *Repeat this process for the $NMC_IMAGE_ID.* ### Appendix J: Verifying the schema ```properties $ oci compute image-capability-schema list --image-id $EDGE_IMAGE_ID Example output { "data": [ { "compartment-id": "ocid1.compartment.oc1..aaaaaaaaaaaaa1msmfa1c11moicw1p1rryuurm1cwezlw1ktwea1a aaaaaa", "compute-global-image-capability-schema-version-name": "515412e5-695c- 4d22-866f-e8823f5049c5", "defined-tags": {}, "display-name": "computeimgcapschema20251017173046", "freeform-tags": {}, "id": "ocid1.computeimgcapschema.oc1.iad.aaaaaaaa1aaih1h1cx1igurwrkzzdv1doydlt1a1aa aaa1aaaaaaaaaaa11a", "image-id": "ocid1.image.oc1.iad.aaaaaaa1aa1aaaaa1aaaaaaaaaaaaaaaaaaaaaaaa11a1aaaaaaa11a" , "schema-data": { "Compute.AMD_SecureEncryptedVirtualization": { "default-value": false, "descriptor-type": "boolean", "source": "GLOBAL" }, "Compute.Firmware": { "default-value": "UEFI_64", <--- Firmware default value is UEFI_64 "descriptor-type": "enumstring", "source": "IMAGE", "values": [ "UEFI_64" <--- Firmware only value UEFI_64 ] }, "Compute.LaunchMode": { "default-value": "PARAVIRTUALIZED", "descriptor-type": "enumstring", "source": "GLOBAL", "values": [ "NATIVE", "EMULATED", "VDPA", "PARAVIRTUALIZED", "CUSTOM" ] }, [...snip...] ``` > [!TIP] > ***Tip:*** *Repeat this process for the $NMC_IMAGE_ID.* > [!TIP] > ***Tip:*** *You can also use the console to verify the setting by navigating to* ***Compute → Custom Images → Image display name*** *and verifying the "Firmware" setting.* ### Appendix K: **Determining an availability zone and setting the environmental variable** ```properties $ ]$ oci iam availability-domain list --compartment-id $COMP_ID Example: { $ oci iam availability-domain list --compartment-id $COMP_ID "data": [ { "compartment-id": "ocid1.compartment.oc1..aaaaaaaaaaaaa1msmfa1c11moicw1p1rryuurm1cwezlw1ktwea1a aaaaaa", "id": "ocid1.availabilitydomain.oc1..aaaaaaaaaaaaaaa1ae1yw1vghp1go1zceaon1wiioe1tnh 1vlaxjjl1n1a", "name": "rGLR:US-ASHBURN-AD-1" <-- Pick one of these to be your availability domain }, { "compartment-id": "ocid1.compartment.oc1..aaaaaaaaaaaaa1msmfa1c11moicw1p1rryuurm1cwezlw1ktwea1a aaaaaa", "id": "ocid1.availabilitydomain.oc1..aaaaaaaatrwxaogr2dl2yschqtrmqrdv6uzis2mgbnomia gqrfhcb2mxsfdq", "name": "rGLR:US-ASHBURN-AD- 2" <-- Pick one of these to be your availability domain }, { "compartment-id": "ocid1.compartment.oc1..aaaaaaaaaaaaa1msmfa1c11moicw1p1rryuurm1cwezlw1ktwea1a aaaaaa", "id": "ocid1.availabilitydomain.oc1..aaaaaaaaaaa3a3aaaaa3aaaaaaaaajcukrijtmcltvfwxa zmitk235wyohta", "name": "rGLR:US-ASHBURN-AD- 3" <-- Pick one of these to be your availability domain } ] } Set the environmental variable: $ export AD="rGLR:US-ASHBURN-AD-1" ``` ### Appendix L: Creating block volumes using the OCI CLI The following volumes are required when deploying Nasuni Edge Appliance. For Nasuni Edge Appliance volume requirements, you need two volumes created and this includes: - `--size-in-gbs <CacheDiskSizeInGB>` - `--display-name <NEA_Cache_Disk>` ```properties $ oci bv volume create --compartment-id $COMP_ID \ --availability-domain $AD \ --size-in-gbs \ --display-name Example: $ oci bv volume create --compartment-id $COMP_ID --availability-domain $AD -- size-in-gbs 250 --display-name nasuni-cache { "data": { "auto-tuned-vpus-per-gb": 10, "autotune-policies": [ { "autotune-type": "DETACHED_VOLUME" } ], "availability-domain": "rGLR:US-ASHBURN-AD-1", "block-volume-replicas": null, "cluster-placement-group-id": null, "compartment-id": "ocid1.compartment.oc1..aaaaaaaaaaaaa1msmfa1c11moicw1p1rryuurm1cwezlw1ktwea1a aaaaaa", "defined-tags": {}, "display-name": "nasuni-cache", "freeform-tags": {}, "id": "ocid1.volume.oc1.iad.aaaaaaaaaaaaaaaaaaa1cnajtue11u1l1ojk1gotukxxcd1rzfevss1 1qub1aa", <---COPY THIS OCID AND SET AS ENVIRONMENTAL VARIABLE "is-auto-tune-enabled": true, "is-hydrated": null, "is-reservations-enabled": false, "kms-key-id": null, "lifecycle-state": "PROVISIONING", "size-in-gbs": 250, "size-in-mbs": 256000, "source-details": null, "system-tags": {}, "time-created": "2025-10-17T21:02:00.686000+00:00", "volume-group-id": null, "vpus-per-gb": 10 }, "etag": "873bfc01ec1ade0f974c38a1ddd44ac1" } Create an environmental variable for each volume OCID: $ export ="" Example: $ export CACHE_VOL="ocid1.compartment.oc1..aaaaaaaaaaaaa1msmfa1c11moicw1p1rryuurm1cwez lw1ktwea1aaaaaaa" ``` > [!TIP] > ***Tip:*** *Repeat this process for all the volumes needed for the Nasuni Edge Appliance, giving each their own variable name: NEA_Cache_Vol, NEA_CoW_Vol. For the Nasuni Management Console, you only need the OS block volume.* > [!TIP] > ***Tip:*** *Take note of the created volume OCID, and set an environmental variable for the volume with the role in the variable name, so you can use it later to attach to the compute instance.* ### Appendix M: Prerequisites for Launching the Nasuni instances #### **Determine the path to your public SSH key file and export it as a variable.** ```properties $ export KEY_PUB="" Example: $ export KEY_PUB="/home/opc/.ssh/id_rsa.pub" ``` #### **Determine or create the Virtual Cloud Network and subnet where the Nasuni instances are to be launched.** ```properties $ oci network subnet list --compartment-id $COMP_ID Example: { $ oci network subnet list --compartment-id $COMP_ID "data": [ { "availability-domain": null, "cidr-block": "10.0.0.0/24", "compartment-id": "ocid1.compartment.oc1..aaaaaaaaaaaaa1msmfa1c11moicw1p1rryuurm1cwezlw1ktwea1a aaaaaa", "defined-tags": {}, "dhcp-options-id": "ocid1.dhcpoptions.oc1.iad.aaaaaaaa11r1fusu11rfxlunymwtx1rj1nhha11m1kptnbp1lf iblaq111aa", "display-name": "subnet-20210420-1050", "dns-label": "subnet04201101", "freeform-tags": {}, "id": "ocid1.subnet.oc1.iad.aaaaaaaapz1i1qmcft1eug11huhsderejmsv1lcfn1h1ak1dzt1tao1 ti1aa", <--- SELECT A SUBNET AND COPY THE OCID FOR AN ENVIRONMENT VARIABLE "ipv6-cidr-block": null, "ipv6-cidr-blocks": null, "ipv6-virtual-router-ip": null, "lifecycle-state": "AVAILABLE", "prohibit-internet-ingress": false, "prohibit-public-ip-on-vnic": false, "route-table-id": "ocid1.routetable.oc1.iad.aaaaaaaamlbba1mnunhtt1j1htmiwg1uzqo1shbqpnszgtu1ddu elm1aaaaa", "security-list-ids": [ "ocid1.securitylist.oc1.iad.aaaaaaaaxvqcfvkwxolglxmgobtt1mhxsb1al1svpidrwxtw1 tb1m1pw1aaa" ], "subnet-domain-name": "subnet04201101.vcn04201101.oraclevcn.com", "time-created": "2021-04-20T18:01:59.099000+00:00", "vcn-id": "ocid1.vcn.oc1.iad.amaaaaaafgg11oaaatcgm1gl1d1x1fwo1w1nfuk1vjsankr1aaaaaaaaaa 1a", "virtual-router-ip": "10.0.0.1", "virtual-router-mac": "00:00:17:F9:C4:E2" }, { "availability-domain": null, "cidr-block": "10.0.0.0/24", "compartment-id": "ocid1.compartment.oc1..aaaaaaaaaaaaa1msmfa1c11moicw1p1rryuurm1cwezlw1ktwea1a aaaaaa", "defined-tags": {}, "dhcp-options-id": "ocid1.dhcpoptions.oc1.iad.aaaaaaaatpzkjed1o1ao1oaor1qiymxgummcs11f1t1pfwo1bz gw1aaaaaaa", "display-name": "subnet-20210322-1510", "dns-label": "subnet03221525", "freeform-tags": {}, "id": aaaaa", "ocid1.subnet.oc1.iad.aaaaaaaamlf1fple1f11rvz1nqvnqkmcoyq1gbdbskta1aaaaaaaaaa <--- SELECT A SUBNET AND COPY THE OCID FOR AN ENVIRONMENT VARIABLE "ipv6-cidr-block": null, "ipv6-cidr-blocks": null, "ipv6-virtual-router-ip": null, "lifecycle-state": "AVAILABLE", "prohibit-internet-ingress": false, "prohibit-public-ip-on-vnic": false, "route-table-id": "ocid1.routetable.oc1.iad.aaaaaaaaeaatkg11s111nzjau1x111gw11aapmshlo1t11tw1h1 fy1sh1aaa", "security-list-ids": [ "ocid1.securitylist.oc1.iad.aaaaaaaa1r1zkx1xlhxxzkobdbyqyjntk1chz1op1xb11w1rq fcr1aaaaaaa" ], "subnet-domain-name": "subnet03221525.vcn03221525.oraclevcn.com", "time-created": "2021-03-22T22:25:29.785000+00:00", "vcn-id": "ocid1.vcn.oc1.iad.amaaaaaafgg11oaalvu4knuilzx1jk1dn1qmwfnwf1ov11vphjxun1aaaa aa", "virtual-router-ip": "10.0.0.1", "virtual-router-mac": "00:00:17:10:A3:DF" }, ``` #### **After you select a subnet, export the subnet ID to an environmental variable.** ```properties $ export SUBNET_ID=" [!TIP] > ***Tip:*** *Launch compute instances for each Nasuni shape using the environmental variables set. The minimum memory should be set to 16GB and the minimum CPUs should be set to 8.* #### **Required commands to launch the Nasuni Edge Appliance instance** ```properties $ oci compute instance launch --compartment-id $COMP_ID \ --display-name $FILER_DISPLAY \ --availability-domain $AD \ --subnet-id $SUBNET_ID \ --image-id $EDGE_IMAGE_ID \ --shape $SHAPE \ --ssh-authorized-keys-file $KEY_PUB \ --assign-public-ip true \ --shape-config '{"ocpus": 8, "memoryInGBs": 16}' \ --extended-metadata '{"firmware": "UEFI_64"}' Example output: { "data": { "agent-config": { "are-all-plugins-disabled": false, "is-management-disabled": false, "is-monitoring-disabled": false, "plugins-config": null }, "availability-config": { "is-live-migration-preferred": null, "recovery-action": "RESTORE_INSTANCE" }, "availability-domain": "rGLR:US-ASHBURN-AD-1", "capacity-reservation-id": null, "cluster-placement-group-id": null, "compartment-id": "ocid1.compartment.oc1..aaaaaaaaaaaaa1msmfa1c11moicw1p1rryuurm1cwezlw1ktwea1a aaaaaa, "defined-tags": {}, "display-name": "nasuni-edge-filer", "extended-metadata": { "firmware": "UEFI_64" }, "fault-domain": "FAULT-DOMAIN-2", "freeform-tags": {}, "id": xy2gqta", "image-id": "ocid1.instance.oc1.iad.anuwcljsfgg62oacngiakkol3mkyhvlaptzb4q6gmdzuiuji7lssy <--- COPY THIS OCID FOR BLOCK ATTACHMENT IN NEXT STEP "ocid1.image.oc1.iad.aaaaaaa2aa2aaaaa2aaaaaaaaaaaaaaaaaaaaaaaa22a2aaaaaaa22a" , "instance-configuration-id": null, "instance-options": { "are-legacy-imds-endpoints-disabled": false }, "ipxe-script": null, "is-ai-enterprise-enabled": null, "is-cross-numa-node": false, "launch-mode": "PARAVIRTUALIZED", "launch-options": { "boot-volume-type": "PARAVIRTUALIZED", "firmware": "UEFI_64", "is-consistent-volume-naming-enabled": true, "is-pv-encryption-in-transit-enabled": false, "network-type": "PARAVIRTUALIZED", "remote-data-volume-type": "PARAVIRTUALIZED" }, "licensing-configs": null, "lifecycle-state": "PROVISIONING", "metadata": { "ssh_authorized_keys": "ssh-rsa BBBBB1NzaC1yc1EAAAADAQABAAACAQDrAHfL foo@racle.com\n" }, "placement-constraint-details": null, "platform-config": null, "preemptible-instance-config": null, "region": "iad", "security-attributes": {}, "security-attributes-state": "STABLE", "shape": "VM.Standard.E4.Flex", "shape-config": { "baseline-ocpu-utilization": null, "gpu-description": null, "gpus": 0, "local-disk-description": null, "local-disks": 0, "local-disks-total-size-in-gbs": null, "max-vnic-attachments": 8, "memory-in-gbs": 16.0, "networking-bandwidth-in-gbps": 8.0, "ocpus": 8.0, "processor-description": "2.55 GHz AMD EPYC™ 7J13 (Milan)", "resource-management": null, "vcpus": 16 }, "source-details": { "boot-volume-size-in-gbs": null, "boot-volume-vpus-per-gb": null, "image-id": "ocid1.image.oc1.iad.aaaaaaa2aa2aaaaa2aaaaaaaaaaaaaaaaaaaaaaaa22a2aaaaaaa22a" , "instance-source-image-filter-details": null, "kms-key-id": null, "source-type": "image" }, "system-tags": {}, "time-created": "2025-10-20T18:35:52.699000+00:00", "time-maintenance-reboot-due": null }, "etag": "342f29706161615689e35ea58200e5dccc5f152673e4c648fa68128d2ecac965", "opc-work-request-id": "ocid1.coreservicesworkrequest.oc1.iad.aaaaaaaa1uomxuaybut1zkghtmpyztphcbgdav zfjcbuvunxsyz1mv1a1aaa" } ``` #### **Attach the block volumes to the Nasuni Edge Appliance instance** ```properties $ oci compute volume-attachment attach \ --instance-id \ --volume-id $NEA_Cache_Vol \ --type paravirtualized $ oci compute volume-attachment attach \ --instance-id \ --volume-id $NEA_CoW_Vol --type paravirtualized Example output: "data": { "attachment-type": "paravirtualized", "availability-domain": "rGLR:US-ASHBURN-AD-1", "compartment-id": "ocid1.compartment.oc1..aaaaaaaaaaaaa1msmfa1c11moicw1p1rryuurm1cwezlw1ktwea1a aaaaaa", "device": null, "display-name": "volumeattachment20251020183741", "id": "ocid1.volumeattachment.oc1.iad.aaaaaaaaaaa11oacguur1o1wvtjzqhzuksxbz1r1sbitd jor1pl1r1aaaaaa", "instance-id": "ocid1.instance.oc1.iad.anuwcljsfgg62oacngiakkol3mkyhvlaptzb4q6gmdzuiuji7lssy xy2gqta", "is-multipath": null, "is-pv-encryption-in-transit-enabled": false, "is-read-only": false, "is-shareable": false, "is-volume-created-during-launch": false, "iscsi-login-state": null, "lifecycle-state": "ATTACHING", "time-created": "2025-10-20T18:37:42.048000+00:00", "volume-id": "ocid1.compartment.oc1..aaaaaaaaaaaaa1msmfa1c11moicw1p1rryuurm1cwezlw1ktwea1a aaaaaa" }, "etag": "789e31a9a49ee8b5abbb2c5ac4ed381d2f2e38e0d6b369effc3dd3445aa7ab39" } ``` #### **Required commands to launch the Nasuni Management Console instance** ```properties $ oci compute instance launch --compartment-id $COMP_ID \ --display-name $NMC_DISPLAY \ --availability-domain $AD \ --subnet-id $SUBNET_ID \ --image-id $NMC_IMAGE_ID \ --shape $SHAPE \ --ssh-authorized-keys-file $KEY_PUB \ --assign-public-ip true \ --shape-config '{"ocpus": 8, "memoryInGBs": 16}' \ --extended-metadata '{"firmware": "UEFI_64"}' ``` > [!TIP] > ***Tip:*** Output should look similar to the previous instance launch. ####