# VMware: Explore Ways To Deploy & Manage Virtual Machines

<details data-node-type="hn-details-summary">
<summary>VMware: Fundamentals of STORAGE NETWORKING</summary>
<p><a target="_blank" rel="noopener noreferrer nofollow" class="text-primary underline underline-offset-2 hover:text-primary/80 cursor-pointer" href="https://infrabytes.hashnode.dev/vmware-fundamentals-of-storage-networking" style="pointer-events: none;">VMware: Fundamentals of STORAGE NETWORKING</a></p><p>In my last blog, I shared the importance of understanding the Storage Networking Fundamentals &amp; its concepts with comp before moving ahead to VMware Infrastructure at advanced level.</p><ul><li><p>Concept of File &amp; Block Storage.</p></li><li><p>Understanding SCSI.</p></li><li><p>SCSI Protocols using</p><ul><li><p>Fibre Channel (FC)</p></li><li><p>iSCSI.</p></li></ul></li><li><p>Core Components of Fibre Channel (FC) -</p><ul><li><p>HBA (Host Bus Adapter) / ESXi Initiator</p></li><li><p>FC Switch</p></li><li><p>Fibre Optics Cables.</p></li></ul></li><li><p>Fibre Channel (FC) Concepts -</p><ul><li><p>World Wide Name (WWN)</p></li><li><p>LUN Masking</p></li><li><p>Multipathing</p></li></ul></li><li><p>All about Transceivers also known as Small Factor Form Pluggable (SFP) its types - Short Wave &amp; Long Wave.</p></li><li><p>Shared Area Network (SAN)</p></li></ul>
</details>

In this blog, we will dive more towards VMware VM Creation & its Management.

# Ways to Create & Configure Virtual Machine

## 1\. Traditional Method

A Virtual Machine creation is pretty straightforward within vCenter.

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/3bc25aa9-ec0c-4e0d-aebc-7603b71a7d19.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/8400cf6f-9f7b-4fdf-9dbe-a1ce11e6b209.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/ed2b23b7-3d6e-477a-bf2d-72f6a372adce.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/5df07a3a-d933-45d7-bb0c-cd540c4aeebf.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/749b150f-b1fa-41d8-948d-d5f068ca359c.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/080bd66c-a72c-4f0d-a82f-b7ea0ac051f7.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/32f00b77-dfee-451d-97dc-69edc2e5e34c.png align="center")

***For HOT PLUGS***

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/0f695cb9-0f58-4499-bf89-cc8bb68154d4.png align="center")

*Memory Hot Plug*

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/37100948-33ce-4437-89ad-770d3c0283fc.png align="center")

*CPU Hot Plug*

***For Hard Disks***

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/48961201-1aed-4d31-af4a-f7bc25af4384.png align="center")

***For Network Adapter Type***

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/18c66ba5-ee35-404b-9d0a-88f01fb95f6d.png align="center")

**<mark class="bg-yellow-200 dark:bg-yellow-500/30">NOTE:</mark>** **The same way of creating a VM is applicable within ESXi/Host Client level as well.**

Also, there are features like HOT PLUGS (at Memory & CPU Level), DataStores, Network Adapters Features (containing vStandardSwitch & vDistributedSwitch), which some are explored and some will be discussed later on in details.

## 2\. Using OVA & OVF

### All about OVA & OVF

**OVF (Open Virtualization Format)** is a standardized package format used to distribute and deploy virtual machines across virtualization platforms. An OVF package typically contains multiple files, such as the VM configuration, virtual disk files, and a descriptor file.

**OVA (Open Virtual Appliance)** is a single-file archive (`.ova`) that packages the OVF components into one portable file, making it easier to transfer, share, and deploy a VM.

In VMware vSphere, OVA/OVF templates are commonly used for **VM migration, software appliance deployment, lab environments, and standardized VM distribution**.

**Key Difference:**

*   **OVF** → Multiple files forming a virtual appliance package.
    
*   **OVA** → Single archive containing the OVF package.
    

**Typical Workflow:**

***<mark class="bg-yellow-200 dark:bg-yellow-500/30">Export VM → OVA/OVF Package → Transfer/Share → Deploy OVF Template → Configure VM → Power On</mark>***

To understand it better, I first created a OVF file by taking an Existing Empty VM (can create a new one using Traditional Method) & installed it with necessary apps/software and modified wallpapers along with some data!

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/da096b63-a192-449a-af88-7bf7fc8df080.png align="center")

VM is then orderly shutdown.

Right click on a **Datacenter**, **Cluster**, or **ESXi Host**; or click on one of the objects, then from the **Actions** menu select **Deploy OVF Template**

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/bb0571aa-d880-4576-9235-929b296014bb.png align="center")

You can then use an URL, or browse for `.ova` or `.ovf`/`.vmdk` files. Once chosen, just follow through the deploy wizard and provide the requested information – VM name, licensing (if needed), storage, network, etc.

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/d22d7cdf-3d4d-4425-8c27-0e95f2cc9280.png align="center")

Download PATH changed for my BROWSER.

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/153ca56a-9873-4bdf-9550-4fa882dcb017.png align="center")

IMPORTING VM from an OVF File:

1.  Create/Register VM  Select “Deploy a virtual machine from an OVF or OVA file”.
    
    ![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/0e8837bf-5bc7-4d73-b826-f9037e0b5238.png align="center")
    
2.  Select OVF & VMDK Files from Local/Fileshare (wherever its stored).
    
    ![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/a6b5f969-490e-47df-9636-86b24e594654.png align="center")
    
3.  OVA Files containing OVF/BIOS/vDisk are selected and re-created with new VM Name.
    
    ![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/b0bb1a61-0ee6-4c05-b7f5-134053f628ed.png align="center")
    

### <mark class="bg-yellow-200 dark:bg-yellow-500/30">ERROR: </mark> Need to ATTACH VMDisk for IMPORTING VM

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/5feedbcb-9868-4889-8aeb-c2fc85bcde3c.png align="center")

*Choosing Exported vDISK File is MANDATORY (. vmdk). Therefore, stopped the LAB here with idea to perform this!*

### <mark class="bg-yellow-200 dark:bg-yellow-500/30">Followup ERROR:</mark> DISKS are not visible in Windows Server 2016 VM when configured within ESXi with default settings-

**DISK TYPE:** Thin Provisioning SCSI Controller: VMware Paravirtual

### Sol.

This is a very common issue in VMware ESXi when installing Windows Server 2016 — and the screenshot already tells us the exact root cause:

“We couldn’t find any drives. To get a storage driver, click Load driver.” 🔍

**🔍*Why this happens***

Inside ESXi, your VM’s virtual disk is attached via a SCSI controller, but:

*   Windows setup doesn’t have the driver for that controller. **OR**
    
*   the controller type is incompatible with the installer.
    

***✅ Most likely causes (based on your past setup)***

Since earlier you mentioned using **VMware Paravirtual (PVSCSI)**, that’s the #1 reason.

**👉 PVSCSI driver is NOT included in Windows Server 2016 ISO by default**

***FIX1: Change SCSI Controller***

This is the simplest and most reliable fix.

1.  Power OFF VM
    
2.  Go to VM Settings
    
3.  Change SCSI Controller to: 👉 LSI Logic SAS (Best for compatibility)
    
4.  Save → Start installation again
    
5.  ✅ Disk will appear instantly
    
    ![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/c930b324-1759-4d46-814f-2e8f8fb90e3b.png align="center")
    

### RESULT

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/b7ba52bb-b7b4-44fc-b843-17e323641e55.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/b022c7c5-cdd0-4aec-b6bd-a6ac6a85e153.png align="center")

**<mark class="bg-yellow-200 dark:bg-yellow-500/30">IT WORKED!</mark>**

Whether a Template or OVF files are in your vSphere environment, or vSphere Content Library, deploying is virtually the same, except where you deploy it from. You simply rt-click on the **Template** and choose **New VM From This Template**. As with any new VM, just provide the necessary information, and configure resources (vCPUs, memory, disk, network, etc) as needed

## 2\. Using Standard Template

A **VMware Standard VM Template** is a master copy of a virtual machine that has been prepared with a standardized operating system, configurations, applications, security settings, and required updates.

Instead of creating and configuring every VM from scratch, administrators can use the template to **quickly deploy consistent VMs** across the vSphere environment.

A typical template may include:

*   Standard OS installation and patches
    
*   VMware Tools
    
*   Network and security configurations
    
*   Required applications or agents
    
*   Organizational hardening and baseline settings
    

Once created, the template is kept as a **golden image**. When a new VM is required, administrators can clone or deploy a VM from this standardized template.

Therefore, I created a Template acting as a Gold Image with OS Level Customization.

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/e049e70a-324f-455d-bcc1-2293007c912a.png align="center")

*A VM configured with OS: Windows Server 2016. It is with <mark class="bg-yellow-200 dark:bg-yellow-500/30">‘sysprep’ – OOBE</mark>!*

### Converting into TEMPLATE

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/cabe63c1-e123-484a-9955-0372d06215bc.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/303c3381-8d65-42a3-b9ab-8054903ac205.png align="center")

Before, jumping ahead to create a VM out of it. It is vital that we understand the level of customization that can be performed involved within the template.

This is where **Policies & Profiles** comes into the picture!

## 3\. All about Policies & Profiles

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/bfec0cfc-28e7-4015-af7f-282200e53f0b.png align="center")

### VM Storage Policies

Define how a VM's virtual disks should be placed and managed on storage. They can specify requirements such as **performance, availability, encryption, and storage capabilities**, helping ensure VMs are deployed according to organizational storage requirements.

### VM Customization Specifications

Predefined settings used when deploying or cloning VMs to automatically customize the guest OS. They can configure **hostname, IP/network settings, domain membership, SID, timezone, and other OS-specific parameters**.

### Host Profiles

Capture the configuration of an ESXi host as a **baseline/template** and allow administrators to apply or validate that configuration across multiple hosts. Useful for **standardization, compliance, and reducing configuration drift**.

### Compute Policies

Define rules that control **VM placement and compute behavior** within the vSphere environment. They can be used to influence where VMs run based on requirements such as **host groups, clusters, or specific infrastructure characteristics**.

### Storage Policy Components

Reusable building blocks containing individual **storage requirements/capabilities** that can be incorporated into VM Storage Policies. They help administrators create **modular and consistent storage policies** instead of defining every requirement repeatedly.

For my activity, Relying on **VM Customization Specifications** for my TEMPLATE was a vital option to experience the OS customization within my VM!

**<mark class="bg-yellow-200 dark:bg-yellow-500/30">MY Initial PLAN</mark>**

*To create a Policy/Profile with OS customization set with my preferred credentials, Domain Join (which later backfired), Timezone (set with IST), Custom System Names with Series of Numbers appended with every NEW VMs & additonal Networks (if required).*

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/6baa9ce4-90ad-49b9-ac4d-97f310a57f27.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/610fe7f0-40a7-42af-b742-89182640a827.png align="center")

**Use custom** `sysprep`:

**<mark class="bg-yellow-200 dark:bg-yellow-500/30">NOTE:</mark>**

When choosing “Use custom SysPrep answer file”. We get these different set of specifications.

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/f48b4ea7-ca6a-4438-8e43-f9e4abd151d4.png align="center")

**Registration Information:**

For now, I **UNTICKED** the `sysprep` option

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/c3143466-ee89-42e2-9225-ef17a786c255.png align="center")

**VM Name Customization:**

Trying with NAMING SCHEME as below

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/6ca750cf-79fd-4032-b606-70ce5aa4963a.png align="center")

**Windows Licence:**

Went with DEFAULT option for Windows Licence:

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/35dfeb84-d4e1-4f0c-a6a1-656a40a2e2ef.png align="center")

**Administrator Password:**

Went with these custom Administrator Password

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/04982c33-c0be-4673-a8e8-7f7c5a26e609.png align="center")

**Time Zone:**

Specified IST

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/a708791e-033a-4fe2-b087-08e1ada1cdbf.png align="center")

**Commands to run once:**

For TESTING purpose, specified a command – “`ipconfig /all`”

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/641af827-789b-4571-8757-5c0c2c697007.png align="center")

**Network:**

Went with defaults

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/309d9e5f-0e8e-4c39-93d5-259501dcc314.png align="center")

**Workgroup or Domain:**

For TEST purpose, I gave my org AD with OU path

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/496df82d-bb69-4f9f-aaf6-d735fb8680df.png align="center")

**OVERVIEW**

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/0dc49a21-2271-44e8-8432-d0e2e3ecbfc1.png align="center")

Created VM Customization Specifications with Name - *"myOSTemplate-WinServ".*

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/b97a571a-0b30-4817-9692-830c399e2cb5.png align="center")

To test out, I performed the creation of a VM from this very TEMPLATE (having OS Customizations) within it using,

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/c7e0a36b-e5f6-46d1-8da4-09eb171075d3.png align="center")

**OR**

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/af256d0f-d422-4e88-b347-d14f13be1b30.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/3b46bdd1-ade5-440c-8e92-6a6389114757.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/fdd51729-9200-4793-9161-b12ce8c456b6.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/5e732870-3cd1-41ad-a305-e65f94c89a70.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/24f09562-b55a-43ce-a78f-0245768f661d.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/95f94fdb-d27b-4b53-8ed2-2c6a9c851959.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/3242f7aa-bec1-4aa0-9ee6-065cde177832.png align="center")

***This is where we APPLY our customized OS, which were configured in “Policies & Profiles” in first place.***

**<mark class="bg-yellow-200 dark:bg-yellow-500/30">Note:</mark>** We can also OVERRIDE it!

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/e898e9c6-3252-40a9-9577-3ebbd82ed441.png align="center")

But for now, going with DEFAULT option.

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/0ce1bbe3-5006-44ec-bd5b-226dccd92a69.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/bd92a092-d99b-4d83-ab7a-7e63ae524d4c.png align="center")

VM creation in progress:

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/aed01559-2638-40d6-b14f-f61c6a4264b4.png align="center")

### **<mark class="bg-yellow-200 dark:bg-yellow-500/30">ERROR:</mark>** my osTemplate NOT GETTING applied!

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/94cc9733-e8f4-43a0-8e3f-a82084d0bccd.png align="center")

Due to this ERROR, my osTemplate didn’t get applied!

**<mark class="bg-yellow-200 dark:bg-yellow-500/30">Sol.</mark>**

I re-tried again with my <mark class="bg-yellow-200 dark:bg-yellow-500/30">osTemplate without using AD Join customization by using OVERRIDE option.</mark>

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/64d1bb96-4b96-4db0-8d6d-35cb6c2d61e7.png align="center")

This time it WORKS!

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/383b19d5-e422-48e6-9d28-94f53b082f53.png align="center")

Also the VM took the CREDENTIALS as defined in osTemplate:

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/04206eeb-29dc-4e28-9aa7-4a8042336eee.png align="center")

I got below VM Displays:

*   **<mark class="bg-yellow-200 dark:bg-yellow-500/30">OS Name:</mark>** VM-No—0
    
*   **<mark class="bg-yellow-200 dark:bg-yellow-500/30">VM Name:</mark>** Prat-VM
    

Also the <mark class="bg-yellow-200 dark:bg-yellow-500/30">VM took the CREDENTIALS as defined in "</mark>*<mark class="bg-yellow-200 dark:bg-yellow-500/30">osTemplate"</mark>.*

### <mark class="bg-yellow-200 dark:bg-yellow-500/30">RESULT</mark>

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/7100967b-1d47-4adc-9201-5fad38c3e609.png align="center")

## 4\. Using Content Libraries

vSphere Content Library was introduced into the VMware suite back in version 6.0. Since then, VMware has made some significant changes and enhancements to this feature. With the latest vSphere version, the Content Library has matured and offers some new ways of working with your VMs, templates, and external files, such as OVF or ISO files.

All these files can be shared within your organization or outside of your organization. The access to content libraries can be password protected. The transfer service on the vCenter Server manages the import and export of content between the subscriber and the publisher libraries. It uses HTTP NFC protocol.

When you enable authentication for the Content Library, you basically set a password on the static username, which you cannot change. This user account, is not associated with vCenter Single Sign-On or Active Directory.

The idea is to have an efficient, centralized method to manage important data required in a vSphere environment.

**<mark class="bg-yellow-200 dark:bg-yellow-500/30">NOTE:</mark>** It is possible to edit items only in a local library, no matter whether it is published or not. Library items in subscribed libraries cannot be modified.

### **About Local Library**

Local Library is used to store items in a single vCenter Server. You can publish them so other vCenter Server users can subscribe to them, as well as configure a password for authentication to the Library. A caveat is if you have a VM template in the Local Library, you cannot publish it.

**🔄 Real-world use case:**

*   You build a **Golden VM Template (e.g., Ubuntu/Windows)**
    
*   Store it in the Local Library
    
*   Use it repeatedly to deploy VMs quickly
    

**🌍 Advanced usage:**

If you enable:

*   **Publishing** → other vCenters can subscribe to your library
    
*   **Authentication** → secure access control
    

**👉 Think of it like:**

*   “Your private Git repository for VM templates”
    

### **About** Subscribed Library

**Subscribed Library** is a library you create when you subscribe to a published library. The Subscribed Library can be created in the same or remote vCenter than the published library. When creating a Subscribed Library, you can choose to immediately download the full contents of the library upon creation, or download only the published library metadata and later download the full content of the library. Keep in mind, when using a Subscribed Library, you can only *use* the library content, not add items to it.

The use of subscriptions allows content distribution between a publisher and a subscriber in some scenarios. We can consider the following:

*   The publisher and subscriber are in the same vCenter Server instance.
    
*   The publisher and subscriber are in vCenter Server instances that are in Enhanced Linked mode.
    
*   The publisher and subscriber are in vCenter Server instances that are in Hybrid Linked mode.
    

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/091efa97-2e98-4c2f-aa2e-6d4ad509e17a.png align="center")

**⚙️ Key Features:**

*   Requires a **Subscription URL**
    
*   You **cannot upload directly** to it
    
*   Content comes from a **publisher (Local Library)**
    
*   Supports automatic synchronization
    

To make it use most out of it, I created

1.  a Local Content Library
    
2.  a Subscribed Content Library
    

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/14f91753-693c-445a-b951-d674e6b30885.png align="center")

**Enabling Publishing**

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/72ac89b5-f7d7-4a27-b66e-04975d96a994.png align="center")

**<mark class="bg-yellow-200 dark:bg-yellow-500/30">NOTE:</mark>** The `Enable Authentication` feature enables the password authentication thing!

**Add Storage went with ISOs-Pool which is linked to BASE-ESXi Host!**

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/1a0ca8ae-1f53-40b6-b759-ecaa63b7a432.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/7016ddf4-891b-452f-a7d1-31a9cd5149d4.png align="center")

**<mark class="bg-yellow-200 dark:bg-yellow-500/30">NOTE:</mark>** Even though my **DataStore: ISOs-Pool** contained ISOs already! It didn’t reflect in my Content Library as configured

**Security Policy Went with DEFAULT settings**

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/2639fb05-03f2-4971-918c-60b6d4f060b0.png align="center")

I successfully created a Content Library. Now to test out by importing a Template into it and apply versioning into it, which will make more sense once we proceed with hands-on!

### Moving an EXISTING TEMPLATE to CONTENT LIBRARY

Choose **\-->** “Clone to Library” option

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/2d67e85e-3acb-4ae5-ad79-125a5721cb0d.png align="center")

Mentioning the NOTES here:

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/0ce909cf-61f9-4e96-9391-de94489dd756.png align="center")

A total of 4 processes starts which takes several minutes to completes!

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/e502ffa2-f7e0-44e7-9380-2639e884bb39.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/5d99eba9-9b35-4d77-a9e7-7c86590d5973.png align="center")

Similarly, created \*\*a secondary Content Library (\*\*myNEST-LinuxISOs **)** - containing LINUX Images within same datastore!

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/efde628a-14c8-4ec0-9981-2e95cd760e83.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/b24fc3cd-7221-4153-bc12-6f8db8ab2908.png align="center")

**UBUNTU ISO Added:**

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/0d53d3b3-7385-4a8c-91d7-6146e8be4dee.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/da0e09ef-d69b-4478-9b68-cc25494716f5.png align="center")

**🔄 Sync Options:**

*   **Immediately** → downloads all content at once
    
*   **When needed** → downloads only when used (saves storage).
    

**🌍 Real-world use case:**

*   HQ creates a **standard VM template library**
    
*   Branch offices subscribe to it
    
*   All locations stay **consistent automatically**
    

<table style="min-width: 75px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p><strong>Feature</strong></p></td><td colspan="1" rowspan="1"><p><strong>Local Content Library</strong></p></td><td colspan="1" rowspan="1"><p><strong>Subscribed Content Library</strong></p></td></tr><tr><td colspan="1" rowspan="1"><p>Content creation</p></td><td colspan="1" rowspan="1"><p>✅ Yes</p></td><td colspan="1" rowspan="1"><p>❌ No</p></td></tr><tr><td colspan="1" rowspan="1"><p>Editable</p></td><td colspan="1" rowspan="1"><p>✅ Yes</p></td><td colspan="1" rowspan="1"><p>❌ Read-only</p></td></tr><tr><td colspan="1" rowspan="1"><p>Source of truth</p></td><td colspan="1" rowspan="1"><p>✅ Yes</p></td><td colspan="1" rowspan="1"><p>❌ No</p></td></tr><tr><td colspan="1" rowspan="1"><p>Sync from external</p></td><td colspan="1" rowspan="1"><p>❌ No</p></td><td colspan="1" rowspan="1"><p>✅ Yes</p></td></tr><tr><td colspan="1" rowspan="1"><p>Publishing capability</p></td><td colspan="1" rowspan="1"><p>✅ Yes</p></td><td colspan="1" rowspan="1"><p>❌ No</p></td></tr><tr><td colspan="1" rowspan="1"><p>Use case</p></td><td colspan="1" rowspan="1"><p>Create &amp; manage templates</p></td><td colspan="1" rowspan="1"><p>Consume shared templates</p></td></tr></tbody></table>

**<mark class="bg-yellow-200 dark:bg-yellow-500/30">NOTE:</mark>** Subscription URL is useful when configuring & using the Content Library across multiple vCenters.

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/eb29af33-9891-495a-b273-f0903f7bb0c0.png align="center")

### Creating a NEW VM from TEMPLATE containing in Content Library

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/379bc0b3-d154-496e-8479-7f7f2f8f82f0.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/f2588183-be28-4e56-9b5a-8f731fa9e3dc.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/34a65c18-e447-4abc-99fe-341f9377de9e.png align="center")

*As configured in “Policies & Profiles”*

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/c86a19cd-cfd8-400d-8020-b96938d975be.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/d16e06a6-9942-4e1b-b5e6-e81bde85c68f.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/52102304-0c17-4c03-ab7e-e436841ac7f7.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/0e4ec4cf-2a3c-40ed-be84-4dd7c10ed60f.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/d276218d-9b00-4f98-b9ab-d27c767b930a.png align="center")

*Configured as per the TEMPLATE with no changes applied!*

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/d990e20e-66ce-41cc-94b9-d886c122d4ec.png align="center")

After FINISH, we see the VM Creation starts.

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/a727723f-2cb3-4b25-862d-32d949d70630.png align="center")

**<mark class="bg-yellow-200 dark:bg-yellow-500/30">IT WORKED!</mark>**

And this time I changed my OSTemplate (from Policies & Profiles) from **DOMAIN JOIN** to **WORKGROUP-myNEST.**

### RESULT

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/70c4f0b0-9efc-48a2-9223-23508ce0f6eb.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/53341f12-3258-45e9-8674-934897f86724.png align="center")

### ATTACHING Content Library’s ISO to an EXISTING VM

Since Content Library <mark class="bg-yellow-200 dark:bg-yellow-500/30">also gives the feature of containing all types of ISOs</mark> along with TEMPLATE VERSIONING!

To test it out I relied on a random Ubuntu ISO which I mounted on my existing VM whether its fetching it or not!

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/f86dee4c-1916-4b93-9aaf-366fc10748cd.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/cc965a13-a58a-481e-96fd-091b26468352.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/eab40c3c-31dd-4070-8961-9bd2736ada96.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/da49d654-190f-4ab3-ace3-0f2f8381659d.png align="center")

![](https://cdn.hashnode.com/uploads/covers/66c081e27d4396aac818b1e8/e820bc41-a511-4c01-a50b-141e7e42ca96.png align="center")
