A Primer on vSphere Content Libraries

Hello all,

Update: this article has been updated for vSphere 6.7U1.

I would like to write a small series on Content Libraries as I think they are handy and useful.  I will start by saying that I sat in a few meetings about Content Libraries while at VMware R&D and it was something that was important to me as I know it was important to customers.  This is in fact the second try that you might know about.  VMware talked about it, and even had an alpha / beta of it, but it was not quite right and was not released.  What was released with vSphere 6 is much more useful then what was envisioned in the far past and that is a darn good thing.  But is it ready for common use yet – you may be surprised? Lets get started with it.

BTW, this article will be updated as we get more vSphere updates.  As we get those updates I hope we get some goodness for Content Libraries (we have).

What is a Content Library?

A Content Library is a place to store templates, vApps, OVA / OVF, as well as other files.  A Content Library (CL) can be local to one vC or subscribed across multiple vCenters.  Even in a single vC environment it will provide value as a single place to store files, but in a multi – vCenter environment you will really be able to take advantage of a CL – think about it.  One place to find a template, or a VA that you use often.  This promotes consistency as well as better space management.

What does it look like?

In some ways it looks quite like you would expect.  Meaning it is out of sight, until you need it – for the most part and then you only see a little for what you need.  At least that is mostly true.

Working with a template that is stored in a Library?

You can create a VM from a template that is stored in the CL in a number of ways.  You could go right into the CL and right click on the item and use it.  But a more common or familiar way is to use the Action menu and select New Virtual Machine \ New VM from Library.


Which starts a wizard ….

And on the second screen of the wizard you see the ability to customize the OS.

So this works pretty good.

Since my Content Library is on inexpensive NAS it is slower then deploying from a template hosted on my nice storage, but it still works and is mostly the same as you are used too. So these two things are the main complaints I have had in the past on Content Libraries.  Glad they are fixed!

How do I get a template into a Library?

You would start in the VMs and Templates view.


Now you right – click on the template and you will see some new options.


Use the Clone to Library option.


This is an interesting screen.  Fill in the typical info, and pick your library.  But note the two options at the bottom?  There is not much info I can find on them in the docs.  But they make more sense when you realize that inside the library the template is stored in .OVF format and those two options are about OVF.  I think in a single vC environment there is not need for those options.

This will take longer then importing the ISO, but you can watch the status in the Recent Tasks – as seen above.

Working with an ISO from a Library

Lets start in the vSphere Web Client and assign a Win2K16 ISO to a VM.


We Edit Settings on this VM.

We select the Content Library ISO File option from the CD/DVD Option drop down list.

Next, select the appropriate ISO file.

One you select the right ISO and OK, you see ….

Make sure you have the Connected box checked.

If we look in the VM we will see the ISO.


So this works pretty easy and good!

How do I get an ISO into the Library?

We start at the Home page and access Content Libraries.

Once we see the list of Libraries – in our case only one so far called ISO.


We click on the Library (ISO) and we will be inside of it and see something like below.

We want to add an ISO that our users can use.  So lets change to the Other Types area which makes more sense to add ISO to as compared to the Templates area where we are now.

Now that we are on the Other Types area we can use the Import button as seen above with the red arrow point at it. If using the HTML5 6.7 U1 client, you will find the import option under Actions.


I have selected in the screenshot above my Win2K16 ISO.  I put some notes to help identify this ISO and we continue.

Before you know it we have an ISO in the library.

If you are curious what this ISO looks like in the storage location you can see below in the screenshot.

If you click on the Library item – in this almost empty library it is the Win2K16 ISO, you will see additional options. Or, if you clock on the Template tab there will be options like changing memory or CPU on the template.

BTW, there has been some industry chatter about only having templates and ISO type stuff in your library.  Here is an example of that not being true.


I am uploading a cert to the library.

Install and configure of your first Content Library

You will need a vSphere 6, or later,  environment to start with.  It is nice how in vSphere 6 everything is installed, which means we do not need to install the CL but rather create one and configure it.  If you need help upgrading to vSphere 6 check out this article I wrote as it will help, or this one for 6.7.  You can find more info in the vSphere 6 docs in this section But,if you need 6.7 docs you can find them here.

Creating a Content Library

We start at the Home page as seen below.

As seen above there is a Content Libraries option – lets select it. If using the HTML5 client you will see something a little different.

Once selected we see the CL area but with no Libraries.

We can create our first CL by using the Create icon as indicated with the red arrow above. However, if we are in the HTML5 client it will look a little different, and will be a + sign as seen below.

First step in wizard to create a CL
First step in wizard to create a CL

We add a name, and a description, and continue.

We are now at an important screen.


We are creating a Local content library, and could decide to let other people use it  now by selecting the Publish content library externally option.  We can require a password if necessary.  This is almost a 1.0 product so a single password is your choice, but I expect that to change in future versions.  We are going to save the Subscribed content option for another article as it is a bit bigger subject!  As I mentioned above we are doing the one vCenter option that I think many customers will start with.

Note: you can use the Publish content library externally option to connect to another content library inside your environment.  Meaning if you have two (or more) vCenters in your environment you could have one CL you maintain, and it sync’s with the others.  When you select Publish, you copy the URL it provides and when you create a new CL in a different vCenter environment you paste that URL in and you are good.  You can download it all immediately or not and just have metadata.  Works really good.  Only gets complex when firewalls are in-between the environments.

So I have made the choices I need, and we continue.

What you can see here is that you can use a local file system or a datastore.  The text on this screen is interesting.  It sounds like to me if you wish to replicate the data you have in the CL you need to use a datastore.  It also sounds like the use of datastore is optimized somehow (for cloning?) if you select a datastore.  So I am using a datastore as you can see in the screen.

We see our summary and the Finish button. Once it is finished we can see something like below.

Now we have an empty library, we can start using it now, or we can advertise it with out users.  I believe you will normally want to have one person or maybe one team, publishing to the library and have others consume.


You now know a lot more about Content Libraries – you can create them and move things up to them and consume as needed the content.  You learned that there has been serious changes to Content Libraries and you can easily use them now for several things – not possible in the past – like deploy from template and using ISO.

Thanks for reading this far!  As always I appreciate any comments or questions.  I will keep this document current and update it as I learn more.


  • 2/23/19 – Updated for the HTML5 client in vSphere 6.7 U1, and some minor readability updates but the article still works good!
  • 10/22/17 – added the bit about external above, but also, wanted to mention that I just connected two C:’s that were different versions and everything worked exactly as expected.  Wow!
  • 7/3/17 – big changes for vSphere 6.5.  Content Libraries are now very useful!
  • 2/24/17 – added two articles (vSphere 6 CL related – one about deploying content, and one about distributing.
  • 4/5/16 – updated for vSphere 6.0 U2, and for readability.
  • 9/7/15 – An interesting article about the impact of configuration on synchronize times.  Another article about efficiently deploying VMs – actually more about performance overall.
  • 5/23/15 – Transfer Server Properties, which talks about some of the properties you can change around transferring files. Using Content Libraries is the parent of some useful information in the docs.  Both of these are in odd locations one is VM and one is API.
  • 3/28/15 1818 – someone heard my comments.  All I can say is no comment.


=== END ===

27 thoughts on “A Primer on vSphere Content Libraries

  1. Great article Michael – thank you – I do have a question about one of our environments though. We have a vCenter (currently 5.5) that manages around 70-80 hosts that are split across 6 datacenters via some reasonable links (resiliant 3-10Gbps). This works great but I’m wondering how Content Libraries will work in this scenario. Currently we have FC-attached SANs and datastores at each site and each has an ‘.ISOs etc.’ DS that we manually copy templates/ISOs/vApps etc. to. As far as I can see Content Libraries are part of a vCenter and therefore I’d need to have vC’s at each site to make use of them. Is this a misunderstanding on my part? Thank you very much again, Phil.

    1. HI Phil,

      You have what I consider a ‘common’ design of your infrastructure. I see a couple of ways that CL might work for you – even in fact using FC type replication. I will need to test and play more before I can really give you a good answer in terms of a potential design. However, yes, you will need a vC in each location. However, again, there is some design that might allow the answer to be no. Sorry but more testing is needed, and for that I need two features to be added that are not in the product yet but I hope will be out soon.


  2. It is basically useless (CL) without template customization specs and ISOs mounted in this way.

  3. Thanks you, I can handle the product just not doing what I need just yet – I’m used to that 🙂 I was more concerned in case I’d misunderstood the product, so thank you.

  4. Hi Michael, is there a way to control the replication schedule with CL? In terms of I have a centralized IT that creates the templates and I want the templates to be in the CL for the virtual center that the EMEA folks use (as well as US CL). Can I limit speed or hours to get this template copied into remote CL, so I don’t kill my WAN?

    1. Hi Glenn,

      I took a quick look and I found nothing to suggest it was possible to have a replication schedule or any sort of rate limiting. There is not really much known yet about Content Library. I think it has a bright future but it is missing key functionality to make it useful currently. I expect to see improvements in it soon that will make it useful. At that point I expect them to make improvements behind the scenes such as what you are asking about. While CL is in vSphere 6, it is more like a .8 product – not even 1.0 yet.

      Sorry not more help but be sure VMware is working on improving CL and I will update my article as I learn things I can share.


    1. Thanks for finding this, I looked without success so very happy you found this info. It is a good start on config but I think it needs work.

      Definitely it looks like there is more functionality to manage communications then I first thought. Curious to see how we might use this.

      Thanks again!


  5. Hi, Michael,

    Thanks for this article. I’m looking for something one step further.

    When we put something in the content library, it creates a new copy, correct? I was curious if it synced deltas, like when we update a template.


    1. Hi there, yes, when you put something in the CL, it is a new copy.However I am not sure about how after that the replication is handled. I think – as a guess – it would sync deltas if it could. I will update this as I learn more.


      1. Appreciate it Michael. I don’t have anything definitive, but it looks like it just throws another copy in there and overwrites it. You update me, I’ll update you 🙂

  6. Thank you for the informative write up. As for the direct deployment of VM’s from the Library, we can apply the Guest OS Customization to the cloned VM from a new menu option in the Web Client…so it’s just a change in process from the traditional customizable deployment method.
    ie. now we Deploy the VM from the Library, then we apply Guest OS Customization via Web Client

    1. Thanks Mike, I still find it an awkward process, but it will get better. I expect to be able to update the article again in the not so distant future.

  7. Hi
    Thanks for the article.
    Just one question:
    – do you know if it’s possible to change the datastore where the content library is located once is installed ? (imagine is full and you cannot enlarge it)


    1. Hi Chris,

      I was not able to find an answer for you. However, I do know that this is partially dependent on the storage and not the Content Library. Meaning if you storage can increase the size of where the library is I believe that the content library will use it. I need to work with content libraries in Update 2 and confirm things, and will update the article as I learn more. I will try to get a better answer for your question too.


      1. Thanks Michael
        Another question if you have time. It seems the content library is not supported in Vrealize orchestrator, so your workflow cannot use templates hosted there.
        This is really weird.
        Let me know if you discover how to use the content library in Orchestrator.


      2. Will do. I seem to have lost some of my contacts when I left my last employer. But will work on this. A very good question you have.


  8. Hi Michael,
    Do you have any idea on the roadmap for the features to be added?
    I am interested in CL to implement it but it still looks a bit light at the moment.

    1. Hi Xavier,

      I am sorry to say I have no idea of the future. But, I do know that VMware is very interested in improving the CL so it can be use most or all of the time. I think we will see improvements in each of the future vSphere releases. But we will see.


  9. Michael,

    Curious if you heard back regarding the .ISO usability, do you know if they are fixing this soon seems like 6.0 U2 still is hard to navigate, would really like to make this easier for techs.

    1. Hi Joe,

      I have not had time to revisit this issue. And I just got my lab up to 6.5 on the weekend. I think that all of my issues are solved in 6.5 but I have not been able to test that yet. It may take a week or two to get a chance to test. Sorry but things very busy right now.


  10. Hi Michael,
    Does the CL datastore need to be masked (presented) to all the ESXi hosts in the respective vCenter for this to work correctly? For instance one vC has over 60 hosts and many clusters. We want the ability (using CLs) to deploy VMs to all of clusters so my thinking is the CL datastore needs to be visible by all the hosts. Is that incorrect thinking?

    Thank you for your time

    1. Wayne, CL would try to find such host that has access to CL datastore and then found host and target host would handle copying. So, you can have pool of hosts which has access to CL datastore to scale beyond network capabilities of one host. Mounting CL datastore to all hosts removes network overhead and should speed up a bit the transfer.

Leave a Reply