<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CormacHogan.com</title>
	<atom:link href="https://cormachogan.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://cormachogan.com/</link>
	<description>Storage, Data, Virtualization, Container Orchestration</description>
	<lastBuildDate>Thu, 21 May 2026 09:35:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://i0.wp.com/cormachogan.com/wp-content/uploads/2013/01/CH-Logo-tiny.jpg?fit=32%2C30&#038;ssl=1</url>
	<title>CormacHogan.com</title>
	<link>https://cormachogan.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">39287099</site>	<item>
		<title>Using SQL Server Management Pack in VCF Operations with DSM provisioned SQL Server</title>
		<link>https://cormachogan.com/2026/05/21/using-sql-server-management-pack-in-vcf-operations-with-dsm-provisioned-sql-server/</link>
					<comments>https://cormachogan.com/2026/05/21/using-sql-server-management-pack-in-vcf-operations-with-dsm-provisioned-sql-server/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Cormac]]></dc:creator>
		<pubDate>Thu, 21 May 2026 13:00:47 +0000</pubDate>
				<category><![CDATA[Data Services Manager]]></category>
		<category><![CDATA[VCF Operations]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[VMware Cloud Foundation (VCF)]]></category>
		<category><![CDATA[vSphere]]></category>
		<category><![CDATA[DSM]]></category>
		<category><![CDATA[Microsoft SQL Server]]></category>
		<category><![CDATA[Microsoft SQL Server Management Pack]]></category>
		<category><![CDATA[VCF]]></category>
		<category><![CDATA[VCF 9.1]]></category>
		<guid isPermaLink="false">https://cormachogan.com/?p=32967</guid>

					<description><![CDATA[<p>Many of my recent posts have focused on the new Microsoft SQL Server data service in the 9.1 version of VMware Data Services Manager (DSM). On the back of those posts, I had a query about whether it was possible to use the Microsoft SQL Server Management Pack for VCF Operations that is available on the  VCF Solutions Catalog with DSM provisioned SQL Servers. The short answer is yes, you can install this management pack in your VCF Operations and create a SQL Server account for it. The Management Pack for Microsoft SQL Server now connects to your Microsoft SQL&#8230;</p>
<p>The post <a href="https://cormachogan.com/2026/05/21/using-sql-server-management-pack-in-vcf-operations-with-dsm-provisioned-sql-server/">Using SQL Server Management Pack in VCF Operations with DSM provisioned SQL Server</a> appeared first on <a href="https://cormachogan.com">CormacHogan.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" decoding="async" class="alignleft wp-image-30383 " src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=151%2C122&#038;ssl=1" alt="" width="151" height="122" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=1024%2C831&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=300%2C244&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=768%2C623&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=769%2C624&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?w=1386&amp;ssl=1 1386w" sizes="(max-width: 151px) 100vw, 151px" /></a>Many of <a href="https://cormachogan.com/dsm-data-services-manager/" target="_blank" rel="noopener">my recent posts</a> have focused on the new Microsoft SQL Server data service in the 9.1 version of VMware Data Services Manager (DSM). On the back of those posts, I had a query about whether it was possible to use the Microsoft SQL Server Management Pack for VCF Operations that is available on the  VCF Solutions Catalog with DSM provisioned SQL Servers. The short answer is yes, you can install this management pack in your VCF Operations and create a SQL Server account for it. The Management Pack for Microsoft SQL Server now connects to your Microsoft SQL Server instance (via JDBC using the jTDS driver) and executes SQL queries. SQL queries are executed in order to import health, performance, availability, capacity, and relationships data for your SQL server resources into VCF Operations. This allows your DBAs or IT team to gain critical actionable insight into <strong>database performance, query designs, and queries</strong> with access to <strong>250+ collected metrics, reports, dashboards, notifications, and alerts</strong> in the VCF Operations console. This will allow your DBAs to clearly understand how workloads are performing, where issues may occur, and their source. It will help them to write better queries and optimize query designs for faster information retrieval and reporting. Let&#8217;s see how to install it.</p>
<h2>Download the SQL Server Management Pack</h2>
<p style="text-align: justify;">In VCF Operations, select Administration &gt; Integrations &gt; Solutions Catalog. The database management packs are not available by default. You will need to download them from the VCF Solutions Catalog.  You can navigate to the VCF Solutions Catalog directly from VCF operations, or you can get to it from <a class="external-link" href="https://vcf.broadcom.com/vsc/services">https://vcf.broadcom.com/vsc/services</a>. Browse the Management Packs. Here you will find the Management Pack for SQL Sever. You will need to sign in to download it. You will also have to create a &#8220;Signing Key&#8221; and then provide this when you do the install on the Management Pack into VCF Operations. The latest version of the SQL Server Management Pack at the time of writing is 9.0.0.0100.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/vcf-catalog.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" fetchpriority="high" decoding="async" class="aligncenter wp-image-32969 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/vcf-catalog.png?resize=769%2C350&#038;ssl=1" alt="" width="769" height="350" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/vcf-catalog.png?resize=1024%2C466&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/vcf-catalog.png?resize=300%2C136&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/vcf-catalog.png?resize=768%2C349&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/vcf-catalog.png?resize=1536%2C699&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/vcf-catalog.png?resize=769%2C350&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/vcf-catalog.png?w=1913&amp;ssl=1 1913w" sizes="(max-width: 769px) 100vw, 769px" /></a></p>
<h3 id="VCFOPs9.1SQLServerManagementPackInstallation-Step2:UploadSQLServerMgmtPacktoVCFOps" class="p2">Install SQL Server Management Pack</h3>
<p class="p2" style="text-align: justify;">In VCF Operations, select Operate / Integrations &gt; Solutions Catalog. You can see the downloaded management packs from there, as shown below. Once the management pack is downloaded into the catalog, <strong>install</strong> it. You will be prompted for the &#8220;Signing Key&#8221; created earlier as part of the install.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/VCF-Ops-9.1-Mgmt-Packs.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" decoding="async" class="aligncenter wp-image-32970 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/VCF-Ops-9.1-Mgmt-Packs.png?resize=769%2C260&#038;ssl=1" alt="" width="769" height="260" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/VCF-Ops-9.1-Mgmt-Packs.png?resize=1024%2C346&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/VCF-Ops-9.1-Mgmt-Packs.png?resize=300%2C101&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/VCF-Ops-9.1-Mgmt-Packs.png?resize=768%2C259&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/VCF-Ops-9.1-Mgmt-Packs.png?resize=1536%2C519&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/VCF-Ops-9.1-Mgmt-Packs.png?resize=769%2C260&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/VCF-Ops-9.1-Mgmt-Packs.png?w=1610&amp;ssl=1 1610w" sizes="(max-width: 769px) 100vw, 769px" /></a></p>
<h2 class="p2">Create SQL Server Account</h2>
<p style="text-align: justify;">Microsoft SQL Server now appears as an available account type after the management pack has been successfully installed in your VCF Operations.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Add-Account.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32971 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Add-Account.png?resize=769%2C213&#038;ssl=1" alt="" width="769" height="213" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Add-Account.png?resize=1024%2C283&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Add-Account.png?resize=300%2C83&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Add-Account.png?resize=768%2C212&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Add-Account.png?resize=1536%2C424&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Add-Account.png?resize=769%2C212&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Add-Account.png?w=1912&amp;ssl=1 1912w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Add a SQL Server account. Provide the necessary information to connect to the SQL Server instance in the account. I am using the <strong>mssql-admin</strong> credentials that DSM created for the instance.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Adv-Settings.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32972" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Adv-Settings.png?resize=768%2C913&#038;ssl=1" alt="" width="768" height="913" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Adv-Settings.png?w=844&amp;ssl=1 844w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Adv-Settings.png?resize=252%2C300&amp;ssl=1 252w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Adv-Settings.png?resize=768%2C913&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Adv-Settings.png?resize=769%2C914&amp;ssl=1 769w" sizes="auto, (max-width: 768px) 100vw, 768px" /></a></p>
<p style="text-align: justify;">Validate the Connection as a test:</p>
<p class="p2"><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Test-Connectivity.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32973" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Test-Connectivity.png?resize=768%2C432&#038;ssl=1" alt="" width="768" height="432" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Test-Connectivity.png?w=1005&amp;ssl=1 1005w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Test-Connectivity.png?resize=300%2C169&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Test-Connectivity.png?resize=768%2C432&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Test-Connectivity.png?resize=769%2C432&amp;ssl=1 769w" sizes="auto, (max-width: 768px) 100vw, 768px" /></a></p>
<p class="p2" style="text-align: justify;">Soon after adding the account, you should see data getting collected from the SQL Server.</p>
<p class="p2"><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Collecting.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32974 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Collecting.png?resize=769%2C198&#038;ssl=1" alt="" width="769" height="198" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Collecting.png?resize=1024%2C263&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Collecting.png?resize=300%2C77&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Collecting.png?resize=768%2C197&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Collecting.png?resize=1536%2C394&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Collecting.png?resize=769%2C197&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/MSSQL-Collecting.png?w=1691&amp;ssl=1 1691w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<h2>Examine the SQL Server Dashboards</h2>
<p style="text-align: justify;">The SQL Server Management Pack includes some very useful dashboards &#8216;out of the box&#8217;. Navigate to dashboards in VCF Operations where you should see MS SQL Server metrics now displayed. This first one details the Query metrics.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash1.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32975 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash1.png?resize=769%2C298&#038;ssl=1" alt="" width="769" height="298" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash1.png?resize=1024%2C397&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash1.png?resize=300%2C116&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash1.png?resize=768%2C298&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash1.png?resize=1536%2C596&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash1.png?resize=2048%2C795&amp;ssl=1 2048w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash1.png?resize=769%2C299&amp;ssl=1 769w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p class="p2">You can also drill down into database specific resource consumption:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash2.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32976 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash2.png?resize=769%2C547&#038;ssl=1" alt="" width="769" height="547" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash2.png?resize=1024%2C728&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash2.png?resize=300%2C213&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash2.png?resize=768%2C546&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash2.png?resize=769%2C547&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash2.png?w=1535&amp;ssl=1 1535w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Note that on the initial install of the management pack, and the initial view of the dashboards, the Microsoft SQL Server dashboard was empty. It did not show any SQL Server instances. I therefore edited the dashboard to see what the inputs were. The inventory tree was correctly set to MS SQL Server Environment but there were no Objects. After adding the SQL Server instances to the Input data Objects as shown here, and saving the changes to the dashboard, everything started to work:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/widget-edit.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32977" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/widget-edit.png?resize=768%2C534&#038;ssl=1" alt="" width="768" height="534" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/widget-edit.png?w=872&amp;ssl=1 872w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/widget-edit.png?resize=300%2C208&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/widget-edit.png?resize=768%2C534&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/widget-edit.png?resize=769%2C534&amp;ssl=1 769w" sizes="auto, (max-width: 768px) 100vw, 768px" /></a></p>
<p style="text-align: justify;">Now the SQL Server instances are visible and can be selected to get more details on the deployment.</p>
<p style="text-align: justify;"><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash3.png?ssl=1" target="_blank" rel="noopener"><br />
<img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32978 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash3.png?resize=769%2C430&#038;ssl=1" alt="" width="769" height="430" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash3.png?resize=1024%2C573&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash3.png?resize=300%2C168&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash3.png?resize=768%2C429&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash3.png?resize=1536%2C859&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash3.png?resize=769%2C430&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/mssql-dash3.png?w=1658&amp;ssl=1 1658w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">This is a really nice dashboard to have because once you have selected the instance and database, you can begin to examine metrics like Longest Wait Types, which are essentially the internal indicators that record why a query thread has paused execution and what specific resource it is waiting for.</p>
<p style="text-align: justify;">One final note &#8211; there does appear to be some discrepancy in building relationships between the VMs and the database nodes. If the VM name does not match the SQL Server node name, then the relationships are not built in this version of the management pack 9.0.0.0100.  In the adapter logs, located on the VCF Ops 9.1 appliance in <span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">/storage/log/vcops/log/adapters/MicrosoftSQLServerAdapter</span>, the logs will show the following:</p>
<pre role="code">Failed to add VirtualMachine resource with hostname "msql-vcfa-instance1-2" as parent of SqlAvailabilityGroup 
resource with name "DSMAG": Failed to create relationship with VM names ("msql-vcfa-instance1-2")</pre>
<p style="text-align: justify;">The reason is that the SQL Server hostname <strong>msql-vcfa-instance-2</strong> does not match the name of the virtual machine. <strong>msql-vcfa-instance1-398432-4z2fl-czs9p</strong> in the vCenter inventory. For vanilla SQL Server deployments, you might be able to change the VM name to match. However since Data Services Manager integrated with VCF Automation uses the Supervisor and VKS (vSphere Kubernetes Service) to host the database , this is not possible. This means that you won&#8217;t be able to see the VM &lt;-&gt; SQL Server relationship in the dashboards unfortunately. However, it is a minor nit compared to all the other goodness that the management pack brings to you. If a work-around appears in the near future, I will be sure to update this blog post.</p>
<p style="text-align: justify;">For further information on the SQL Server Management Pack, check out some of the official documentation <a href="https://techdocs.broadcom.com/us/en/vmware-cis/aria/aria-operations-for-integrations/management-packs/copy-of-getting-started-with-management-packs-for-vrealize-operations-management-packs/list-of-integrations.html" target="_blank" rel="noopener">here</a> and <a href="https://techdocs.broadcom.com/us/en/vmware-cis/aria/aria-operations-for-integrations/9-1/management-pack-for-microsoft-sql-server-9-1/management-pack-for-microsoft-sql-server.html" target="_blank" rel="noopener">here</a>.</p>
<p>The post <a href="https://cormachogan.com/2026/05/21/using-sql-server-management-pack-in-vcf-operations-with-dsm-provisioned-sql-server/">Using SQL Server Management Pack in VCF Operations with DSM provisioned SQL Server</a> appeared first on <a href="https://cormachogan.com">CormacHogan.com</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cormachogan.com/2026/05/21/using-sql-server-management-pack-in-vcf-operations-with-dsm-provisioned-sql-server/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">32967</post-id>	</item>
		<item>
		<title>Using VCF Automation 9.1 Blueprints to snapshot and clone DSM provisioned MySQL databases</title>
		<link>https://cormachogan.com/2026/05/19/using-vcf-automation-9-1-blueprints-to-snapshot-and-clone-dsm-provisioned-mysql-databases/</link>
					<comments>https://cormachogan.com/2026/05/19/using-vcf-automation-9-1-blueprints-to-snapshot-and-clone-dsm-provisioned-mysql-databases/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Cormac]]></dc:creator>
		<pubDate>Tue, 19 May 2026 13:00:08 +0000</pubDate>
				<category><![CDATA[Data Services Manager]]></category>
		<category><![CDATA[snapshots]]></category>
		<category><![CDATA[VCF Automation]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[VMware Cloud Foundation (VCF)]]></category>
		<category><![CDATA[VSAN]]></category>
		<category><![CDATA[vSphere]]></category>
		<category><![CDATA[Data Service Manager]]></category>
		<category><![CDATA[DSM]]></category>
		<category><![CDATA[DSM 9.1]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[VCF]]></category>
		<category><![CDATA[VCF 9.1]]></category>
		<category><![CDATA[VCFA]]></category>
		<category><![CDATA[vSAN ESA]]></category>
		<guid isPermaLink="false">https://cormachogan.com/?p=32930</guid>

					<description><![CDATA[<p>In my VMware Data Services Manager 9.1 launch post, I mentioned that this release now has the ability to use vSAN ESA snapshots to create a copy of a MySQL database. I also mentioned that this snapshot could then be used to very quickly spin up additional copies of the database using the &#8220;clone from snapshot&#8221; feature. I also mentioned that this feature is not yet plumbed up into the VCF Automation UI, but that it is available via the API. And since that is the case, it is then possible to go ahead and create VCF Automation blueprint. The&#8230;</p>
<p>The post <a href="https://cormachogan.com/2026/05/19/using-vcf-automation-9-1-blueprints-to-snapshot-and-clone-dsm-provisioned-mysql-databases/">Using VCF Automation 9.1 Blueprints to snapshot and clone DSM provisioned MySQL databases</a> appeared first on <a href="https://cormachogan.com">CormacHogan.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class=" wp-image-30383 alignleft" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=151%2C122&#038;ssl=1" alt="" width="151" height="122" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=1024%2C831&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=300%2C244&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=768%2C623&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=769%2C624&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?w=1386&amp;ssl=1 1386w" sizes="auto, (max-width: 151px) 100vw, 151px" /></a>In my <a href="https://cormachogan.com/2026/05/07/announcing-data-services-manager-version-9-1/" target="_blank" rel="noopener">VMware Data Services Manager 9.1 launch post</a>, I mentioned that this release now has the ability to use vSAN ESA snapshots to create a copy of a MySQL database. I also mentioned that this snapshot could then be used to very quickly spin up additional copies of the database using the &#8220;clone from snapshot&#8221; feature. I also mentioned that this feature is not yet plumbed up into the VCF Automation UI, but that it is available via the API. And since that is the case, it is then possible to go ahead and create VCF Automation blueprint. The blueprint can be made to request information from the user about the MySQL database that is to be snapshot&#8217;ed. And using this information, another blueprint could be created to clone a new MySQL database from this snapshot. In this blog post, I will show you how to do exactly that.</p>
<p style="text-align: justify;">First, you will need some simple scripts to get you started. If you are unfamiliar with blueprints, feel free to download some of my simple examples from <a href="https://github.com/cormachogan/vcfa-blueprints" target="_blank" rel="noopener">my GitHub repo here</a>. The blueprints that I will use in this post are the &#8220;create-mysql-snpshot.blp&#8221; and &#8220;create-mysql-from-snap.blp&#8221;.</p>
<p style="text-align: justify;">Next, we should discuss the personas that can be granted to VCF Automation Organization users. We have Project Admins, Project Advanced Users and Project Users. Only the Project Admins can do Blueprint designs. Project Advanced Users and Project Users do not have access to blueprint designs, but both can consume request blueprints from the catalog. These are the users in my organization:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.org-users-and-personas.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32933 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.org-users-and-personas.png?resize=769%2C258&#038;ssl=1" alt="" width="769" height="258" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.org-users-and-personas.png?resize=1024%2C343&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.org-users-and-personas.png?resize=300%2C100&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.org-users-and-personas.png?resize=768%2C257&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.org-users-and-personas.png?resize=1536%2C514&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.org-users-and-personas.png?resize=769%2C257&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.org-users-and-personas.png?w=1670&amp;ssl=1 1670w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<h2>Create MySQL Snapshot</h2>
<p style="text-align: justify;">Let&#8217;s start by creating the snapshot of an existing MySQL database. I will login to the organization as user &#8216;cormac&#8217; who is a project admin. Under Build &amp; Deploy, select Content Hub &gt; Blueprint Design. From the Blueprints &gt; &#8220;New From&#8221; dropdown, we can begin to import the blueprints downloaded from the GitHub repo mentioned earlier.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-blp-import.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32935 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-blp-import.png?resize=769%2C235&#038;ssl=1" alt="" width="769" height="235" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-blp-import.png?resize=1024%2C313&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-blp-import.png?resize=300%2C92&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-blp-import.png?resize=768%2C234&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-blp-import.png?resize=1536%2C469&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-blp-import.png?resize=769%2C235&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-blp-import.png?w=1671&amp;ssl=1 1671w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Next, provide general information about the blueprint. Select the name, optional description, project, whether to share the blueprint with other projects in the organization, upload the downloaded blueprint, and optionally select an icon for the catalog item.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-general-settings.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32936 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-general-settings.png?resize=769%2C517&#038;ssl=1" alt="" width="769" height="517" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-general-settings.png?resize=1024%2C688&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-general-settings.png?resize=300%2C202&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-general-settings.png?resize=768%2C516&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-general-settings.png?resize=769%2C517&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-general-settings.png?w=1143&amp;ssl=1 1143w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">The blueprint should now be visible.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-blueprint-uploaded.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32937 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-blueprint-uploaded.png?resize=769%2C222&#038;ssl=1" alt="" width="769" height="222" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-blueprint-uploaded.png?resize=1024%2C295&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-blueprint-uploaded.png?resize=300%2C86&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-blueprint-uploaded.png?resize=768%2C221&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-blueprint-uploaded.png?resize=1536%2C442&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-blueprint-uploaded.png?resize=769%2C221&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-blueprint-uploaded.png?w=1672&amp;ssl=1 1672w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">You can now begin to modify the blueprint to match your own environment. Click on the name of the blueprint to enter &#8216;edit&#8217; mode:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-blueprint-edit.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32938 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-blueprint-edit-1024x597.png?resize=769%2C448&#038;ssl=1" alt="" width="769" height="448" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-blueprint-edit.png?resize=1024%2C597&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-blueprint-edit.png?resize=300%2C175&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-blueprint-edit.png?resize=768%2C448&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-blueprint-edit.png?resize=1536%2C896&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-blueprint-edit.png?resize=769%2C449&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-blueprint-edit.png?w=1670&amp;ssl=1 1670w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">There are two sections to the blueprint code. First, you are setting up your inputs which will be used to prompt the user to provide information about the MySQL database to snapshot. The second is actually the piece of YAML code which matches the object your are trying to create. For us, this is a MySQL snapshot as defined in the DSM API. You can now fine-tune the code, correcting namespace names and other default values. When you are happy with the code, click on the &#8216;TEST&#8217; button in the lower left hand corner of the screen. This will launch the blueprint but will only check syntax &#8211; it does not do an actual test.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/7.-blueprint-test.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32939 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/7.-blueprint-test.png?resize=567%2C358&#038;ssl=1" alt="" width="567" height="358" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/7.-blueprint-test.png?w=567&amp;ssl=1 567w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/7.-blueprint-test.png?resize=300%2C189&amp;ssl=1 300w" sizes="auto, (max-width: 567px) 100vw, 567px" /></a></p>
<p style="text-align: justify;">If the test is successful, it will report back something similar to the following:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/8.-successful-blueprint-test.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32940 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/8.-successful-blueprint-test.png?resize=601%2C155&#038;ssl=1" alt="" width="601" height="155" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/8.-successful-blueprint-test.png?w=601&amp;ssl=1 601w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/8.-successful-blueprint-test.png?resize=300%2C77&amp;ssl=1 300w" sizes="auto, (max-width: 601px) 100vw, 601px" /></a></p>
<p style="text-align: justify;">To add the blueprint to the catalog, click on the VERSION button, and add a description, a change log and check the box to publish the blueprint to the catalog. Now, navigate to the Catalog in the left hand navigation menu, and the item should be available.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/9.-catalog-item.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32941 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/9.-catalog-item.png?resize=769%2C322&#038;ssl=1" alt="" width="769" height="322" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/9.-catalog-item.png?resize=1024%2C429&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/9.-catalog-item.png?resize=300%2C126&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/9.-catalog-item.png?resize=768%2C322&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/9.-catalog-item.png?resize=769%2C322&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/9.-catalog-item.png?w=1356&amp;ssl=1 1356w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Now you can request a deployment of the catalog item. A deployment name is needed so the request can be identified in the instances view. The other items relate to the Supervisor namespace where the MySQL database is deployed from, the name of the database and the name of the snapshot that you wish to create:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/10.-request-snapshot.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32943" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/10.-request-snapshot.png?resize=768%2C880&#038;ssl=1" alt="" width="768" height="880" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/10.-request-snapshot.png?w=845&amp;ssl=1 845w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/10.-request-snapshot.png?resize=262%2C300&amp;ssl=1 262w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/10.-request-snapshot.png?resize=768%2C880&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/10.-request-snapshot.png?resize=769%2C881&amp;ssl=1 769w" sizes="auto, (max-width: 768px) 100vw, 768px" /></a></p>
<p style="text-align: justify;">Click Submit, and the name of the deployment will be displayed as in progress. If you then click on the name of the deployment (demo), and then the History view, you should be able to observer various events occurring as the snapshot is getting created. This is also a good place to check if the snapshot creation fails as it should report which part of the job the snapshot failed at.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/11.-snapshot-in-progress.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32945 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/11.-snapshot-in-progress.png?resize=769%2C455&#038;ssl=1" alt="" width="769" height="455" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/11.-snapshot-in-progress.png?resize=1024%2C606&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/11.-snapshot-in-progress.png?resize=300%2C178&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/11.-snapshot-in-progress.png?resize=768%2C455&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/11.-snapshot-in-progress.png?resize=1536%2C910&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/11.-snapshot-in-progress.png?resize=769%2C455&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/11.-snapshot-in-progress.png?w=1670&amp;ssl=1 1670w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Tasks will also be visible in the vSphere client as the snapshot is getting provisioned.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/12.-vsphere-snapshot-tasks.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32946 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/12.-vsphere-snapshot-tasks.png?resize=769%2C141&#038;ssl=1" alt="" width="769" height="141" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/12.-vsphere-snapshot-tasks.png?resize=1024%2C188&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/12.-vsphere-snapshot-tasks.png?resize=300%2C55&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/12.-vsphere-snapshot-tasks.png?resize=768%2C141&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/12.-vsphere-snapshot-tasks.png?resize=769%2C141&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/12.-vsphere-snapshot-tasks.png?w=1341&amp;ssl=1 1341w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Eventually, you should be able to observe that the request completed successfully and that the blueprint has been able to take a snapshot of an existing MySQL database.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/13.-snapshot-completed.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32947" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/13.-snapshot-completed.png?resize=769%2C326&#038;ssl=1" alt="" width="769" height="326" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/13.-snapshot-completed.png?resize=1024%2C434&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/13.-snapshot-completed.png?resize=300%2C127&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/13.-snapshot-completed.png?resize=768%2C326&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/13.-snapshot-completed.png?resize=1536%2C651&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/13.-snapshot-completed.png?resize=769%2C326&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/13.-snapshot-completed.png?w=1649&amp;ssl=1 1649w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">It is also possible to check on the snapshot through the API or by logging into the DSM appliance as the root user and running the following command (kg is an alias for <em>kubectl</em> which points to the gateway KUBECONFIG):</p>
<pre><span style="font-family: 'courier new', courier, monospace; font-size: 12pt;"># <strong>kg get mysqlsnapshots -n b03cde-tenant-02-ns-01-5wtsk</strong> 
NAME                 CLUSTERNAME    STATUS   CREATED 
mysql-db01-snap-01   mysql-db01     Ready    24m</span></pre>
<h2>Clone MySQL Snapshot to new database</h2>
<p style="text-align: justify;">We can now start to look at the second part of the post, which is how to clone a snapshot to create a new MySQL database. Once more, we can begin by importing an existing blueprint to do the clone operation. This can once again be retrieved from <a href="https://github.com/cormachogan/vcfa-blueprints" target="_blank" rel="noopener">my GitHub repo</a>, and the process is identical to before.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/14.-import-new-bp.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32949 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/14.-import-new-bp.png?resize=769%2C518&#038;ssl=1" alt="" width="769" height="518" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/14.-import-new-bp.png?resize=1024%2C690&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/14.-import-new-bp.png?resize=300%2C202&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/14.-import-new-bp.png?resize=768%2C517&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/14.-import-new-bp.png?resize=769%2C518&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/14.-import-new-bp.png?w=1139&amp;ssl=1 1139w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Fine tune any code, and the default values to match your own environment. Again, items such as namespaces will need to be changed to reflect your setup. the only inputs this time are the name of the new database and the name of the snapshot. Many of the other parameters simply relate to the information that one would need to provide when creating a MySQL database. But you can tune the code for all of these entries. Use the TEST button once again to make sure that the fields are populating as expected.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/15.-test-clone.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32950 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/15.-test-clone.png?resize=568%2C615&#038;ssl=1" alt="" width="568" height="615" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/15.-test-clone.png?w=568&amp;ssl=1 568w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/15.-test-clone.png?resize=277%2C300&amp;ssl=1 277w" sizes="auto, (max-width: 568px) 100vw, 568px" /></a></p>
<p style="text-align: justify;">Use the VERSION button to upload a copy of the blueprint to the catalog when you are happy with the code and the tests are successful.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/16.-Version.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32951 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/16.-Version.png?resize=567%2C493&#038;ssl=1" alt="" width="567" height="493" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/16.-Version.png?w=567&amp;ssl=1 567w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/16.-Version.png?resize=300%2C261&amp;ssl=1 300w" sizes="auto, (max-width: 567px) 100vw, 567px" /></a></p>
<p style="text-align: justify;">Verify the item appears in the catalog alongside our snapshot entry:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/17.-updated-catalog.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32952 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/17.-updated-catalog.png?resize=769%2C428&#038;ssl=1" alt="" width="769" height="428" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/17.-updated-catalog.png?resize=1024%2C570&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/17.-updated-catalog.png?resize=300%2C167&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/17.-updated-catalog.png?resize=768%2C427&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/17.-updated-catalog.png?resize=769%2C428&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/17.-updated-catalog.png?w=1321&amp;ssl=1 1321w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Once added to the catalog, you can make a request to clone a new MySQL database from an existing snapshot.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/18.-clone-request.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32953" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/18.-clone-request.png?resize=768%2C819&#038;ssl=1" alt="" width="768" height="819" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/18.-clone-request.png?w=906&amp;ssl=1 906w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/18.-clone-request.png?resize=281%2C300&amp;ssl=1 281w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/18.-clone-request.png?resize=768%2C819&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/18.-clone-request.png?resize=769%2C820&amp;ssl=1 769w" sizes="auto, (max-width: 768px) 100vw, 768px" /></a></p>
<p style="text-align: justify;">Again, you can monitor the clone request in the same way as you monitored the snapshot request. In fact, this can also be monitored from the DSM UI if you wish.</p>
<p style="text-align: justify;"><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/19.-monitor-clone-request.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32954 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/19.-monitor-clone-request.png?resize=769%2C199&#038;ssl=1" alt="" width="769" height="199" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/19.-monitor-clone-request.png?resize=1024%2C265&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/19.-monitor-clone-request.png?resize=300%2C78&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/19.-monitor-clone-request.png?resize=768%2C199&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/19.-monitor-clone-request.png?resize=1536%2C398&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/19.-monitor-clone-request.png?resize=769%2C199&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/19.-monitor-clone-request.png?w=1652&amp;ssl=1 1652w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a>And if everything has gone smoothly, you can click on the deployment (clone-demo) to get further details, similar to what we saw with the snapshot. The new database should also be Ready under the Databases view in the tenant&#8217;s namespace, as shown below. The original database which the snapshot was taken from is also visible in this view.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/20.-mysql-clone-form-snap-success.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32955 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/20.-mysql-clone-form-snap-success.png?resize=769%2C207&#038;ssl=1" alt="" width="769" height="207" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/20.-mysql-clone-form-snap-success.png?resize=1024%2C275&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/20.-mysql-clone-form-snap-success.png?resize=300%2C81&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/20.-mysql-clone-form-snap-success.png?resize=768%2C206&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/20.-mysql-clone-form-snap-success.png?resize=1536%2C412&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/20.-mysql-clone-form-snap-success.png?resize=769%2C206&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/20.-mysql-clone-form-snap-success.png?w=1650&amp;ssl=1 1650w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<h2>Summary</h2>
<p style="text-align: justify;">In Data Services Manager version 9.1, MySQL databases can now leverage the the new snapshot capability in vSAN ESA. Although not available for selection direction in the VCF Automation UI, the blueprint feature allows project admin users to create catalog items which can then be requested by other project users.</p>
<p style="text-align: justify;">Now, you might be thinking that this is all well and good, but it needs vSAN. You would be correct. But have you considered using your existing certified ESX hosts as vSAN ESA nodes by adding NVMe devices? Were you aware that you could do this? If so, and you were planning to do so, we would like to hear from you. Even if you&#8217;re not, we would still like to hear from you. You will find <a href="https://forms.gle/Z911Qz4y9uZASXFM8" target="_blank" rel="noopener">a short survey link here</a>.</p>
<p>The post <a href="https://cormachogan.com/2026/05/19/using-vcf-automation-9-1-blueprints-to-snapshot-and-clone-dsm-provisioned-mysql-databases/">Using VCF Automation 9.1 Blueprints to snapshot and clone DSM provisioned MySQL databases</a> appeared first on <a href="https://cormachogan.com">CormacHogan.com</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cormachogan.com/2026/05/19/using-vcf-automation-9-1-blueprints-to-snapshot-and-clone-dsm-provisioned-mysql-databases/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">32930</post-id>	</item>
		<item>
		<title>Configuring SQL Server with VCF Automation &#038; Data Services Manager versions 9.1</title>
		<link>https://cormachogan.com/2026/05/14/configuring-sql-server-with-vcf-automation-data-services-manager-versions-9-1/</link>
					<comments>https://cormachogan.com/2026/05/14/configuring-sql-server-with-vcf-automation-data-services-manager-versions-9-1/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Cormac]]></dc:creator>
		<pubDate>Thu, 14 May 2026 13:00:22 +0000</pubDate>
				<category><![CDATA[Data Services Manager]]></category>
		<category><![CDATA[VCF Automation]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[vSphere]]></category>
		<category><![CDATA[Data Service Manager]]></category>
		<category><![CDATA[DSM]]></category>
		<category><![CDATA[DSM 9.1]]></category>
		<category><![CDATA[MS SQL Server]]></category>
		<category><![CDATA[VCF]]></category>
		<category><![CDATA[VCF 9.1]]></category>
		<category><![CDATA[VCFA]]></category>
		<guid isPermaLink="false">https://cormachogan.com/?p=32882</guid>

					<description><![CDATA[<p>In my most recent post, we looked at the steps to deploy the new Data Services Manager 9.1 SQL Server data service. In that post, we created an infrastructure policy to allocate vSphere resources such as CPU, Memory, Networking and Storage to the SQL Server Engine and subsequent databases. We saw how this approach can offer a DBaaS (Database as a Service) to your end-users, allowing consumers to use the DSM portal to provision their own databases on an existing SQL Server instance. In this post, we want to take that a step further and show how Data Services Manager&#8230;</p>
<p>The post <a href="https://cormachogan.com/2026/05/14/configuring-sql-server-with-vcf-automation-data-services-manager-versions-9-1/">Configuring SQL Server with VCF Automation &#038; Data Services Manager versions 9.1</a> appeared first on <a href="https://cormachogan.com">CormacHogan.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="wp-image-30393 size-thumbnail alignleft" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?resize=150%2C150&#038;ssl=1" alt="" width="150" height="150" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?resize=298%2C300&amp;ssl=1 298w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?resize=768%2C773&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?resize=769%2C774&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?w=787&amp;ssl=1 787w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a>In my most recent post, we looked at the steps to <a href="https://cormachogan.com/2026/05/12/configuring-microsoft-sql-server-in-data-service-manager-version-9-1/" target="_blank" rel="noopener">deploy the new Data Services Manager 9.1 SQL Server data service</a>. In that post, we created an infrastructure policy to allocate vSphere resources such as CPU, Memory, Networking and Storage to the SQL Server Engine and subsequent databases. We saw how this approach can offer a DBaaS (Database as a Service) to your end-users, allowing consumers to use the DSM portal to provision their own databases on an existing SQL Server instance. In this post, we want to take that a step further and show how Data Services Manager 9.1 can integrate with VCF Automation 9.1, allowing users in different VCF Organizations to provision their own SQL Server databases from an existing SQL Server Instance. This achieves a truly multi-tenanted DBaaS. The post will examine the advanced controls that a VCF Provider Admin has over which organization users are allowed to provision the data services provided by Data Services Manager. We will also look at how resources are managed differently, in so far as infrastructure policies now use vSphere Namespaces to guard-rail resources, as well as how this approach now uses vSphere Kubernetes Services (VKS) to provision the clusters to run the databases.</p>
<p style="text-align: justify;">Let&#8217;s begin this blog post in the same way as the previous one by outlining the steps that need to be considered for deploying a SQL Server instance via Data Services Manager 9.1, and then allowing SQL Server to be consumed by VCF organization users for the provisioning of databases.</p>
<p style="text-align: justify;">As a <strong>Provider Admin</strong>, prepare VCF Automation for Data Services Manager integration (part 1):</p>
<ol style="text-align: justify;">
<li>Connect VCF Automation to Data Services Manager</li>
<li>Create a dedicated Data Services Manager Organization for hosting data services.</li>
<li>Optionally create Projects for your different tenants/users</li>
<li>Create one or more Namespaces in the Projects of the DSM Organization &#8211; these vSphere namespaces hold the resources for the databases (VM Classes, Storage Classes, etc)</li>
</ol>
<p style="text-align: justify;">As a <strong>VI Admin</strong>, prepare Data Services Manager for VCF Automation integration (part 2):</p>
<ol style="text-align: justify;">
<li>install the Data Services Manager Consumption Operator service on the Supervisor &#8211; this extend the Supervisor&#8217;s APIs to include Data Services Manager APIs and enable data services</li>
<li>Add the Namespace(s) created in part 1 as &#8220;vSphere Namespace&#8221; infrastructure policies in DSM</li>
</ol>
<p style="text-align: justify;">As a <strong>DSM Admin</strong>, deploy the SQL Server instance (part 3):</p>
<ol style="text-align: justify;">
<li>In the Data Services Manager UI, link an image registry for the SQL Server images</li>
<li>Enable the SQL Server version</li>
<li>Setup Active Directory and a special DSM Privileged Account (optional)</li>
<li>Create a SQL Server Instance/Engine, selecting a vSphere Namespace Infrastructure Policy</li>
<li>Enable SQL Server Agent (optional)</li>
<li>Configure SQL Server (optional)</li>
<li>Test connectivity to SQL Server Instance/Engine</li>
</ol>
<p style="text-align: justify;">As a <strong>Provider Admin</strong>, define access controls and multi-tenancy for the data services (part 4):</p>
<ol style="text-align: justify;">
<li>Setup a Data Service Policy to determine which organizations have access to SQL Server by selecting namespaces for inclusion in the policy</li>
<li>Fine tune Data Service Policy to define Infra Policies and optional Backup controls available to DSM Users when provisioning SQL databases</li>
<li>Continue tuning Data Service Policy to determine which user types can connect to the database as  (AD user or SQL user)</li>
</ol>
<p style="text-align: justify;">As an <strong>Organization User</strong>, deploy a SQL Server database (part 5):</p>
<ol>
<li style="text-align: justify;">In the VCF Automation Organization UI, create SQL Server Database</li>
<li style="text-align: justify;">Chose which SQL Server Instance (as defined in the Data Service Policy)</li>
<li style="text-align: justify;">Select user who will be granted db_owner role (AD user or SQL user)</li>
<li style="text-align: justify;">Configure backup settings</li>
<li style="text-align: justify;">Test connectivity to SQL Server Database</li>
</ol>
<p>Let&#8217;s go through these step by step.</p>
<h2>Prepare VCF Automation for DSM integration</h2>
<p style="text-align: justify;">The Provider Admin handles this step. First and foremost the Provider Admin must login to the System (Provider Management) organization in VCF Automation, and establish a connection between VCF Automation and Data Services Manager. The Provider Admin will require a DSM Admin user and password to establish the connection. After providing the URL of the Data Services Manager and the DSM Admin login credentials, the remote connection can be tested, certificates accepted and trust established between the two entities. The connection settings are found under VCF Services &gt; Data Services.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-create-connection.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32886 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-create-connection.png?resize=769%2C324&#038;ssl=1" alt="" width="769" height="324" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-create-connection.png?resize=1024%2C432&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-create-connection.png?resize=300%2C127&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-create-connection.png?resize=768%2C324&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-create-connection.png?resize=1536%2C649&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-create-connection.png?resize=769%2C325&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-create-connection.png?w=1674&amp;ssl=1 1674w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Once configured, the connection should appear similar to the following:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-view-connection.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32887 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-view-connection.png?resize=769%2C291&#038;ssl=1" alt="" width="769" height="291" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-view-connection.png?resize=1024%2C388&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-view-connection.png?resize=300%2C114&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-view-connection.png?resize=768%2C291&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-view-connection.png?resize=1536%2C582&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-view-connection.png?resize=769%2C291&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-view-connection.png?w=1674&amp;ssl=1 1674w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Optionally, the VI Admin can also verify this connectivity from the vSphere Client. Select vCenter in the inventory, then Configure &gt; Data Services Manager &gt; Permissions view. Under VCF Automation, the status should show the URL for VCF Automation and a status of Ready:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-permissions.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32888 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-permissions.png?resize=769%2C206&#038;ssl=1" alt="" width="769" height="206" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-permissions.png?w=772&amp;ssl=1 772w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-permissions.png?resize=300%2C80&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-permissions.png?resize=768%2C206&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-permissions.png?resize=769%2C206&amp;ssl=1 769w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">The next step in setting up VCF Automation for Data Services Manager is to create a <span style="text-decoration: underline;">dedicated</span> Organization for hosting data services. The <a href="https://techdocs.broadcom.com/us/en/vmware-cis/dsm/data-services-manager/9-1/using-vmware-data-services-manager-with-vmware-cloud-foundation/using-as-a-provider.html" target="_blank" rel="noopener">official documentation</a> refers to this as the DataServiceProvider Organization. In my example, I simply called it &#8216;dsm org&#8217;. In the default project within this organization, two namespaces, &#8220;tenant-1-dsm-ns&#8221; and &#8220;tenant-2-dsm-ns&#8221;, have been created. As you might expect, I want to land databases created by users from tenant organization 1 onto one namespace and databases created by users from tenant-org-2 onto another namespace. However, you have the flexibility to setup your multi-tenancy on a per-project basis, or collapse everything into a single namespace for all your tenants. The choice is yours, as long as the infrastructure policies point to vSphere Namespaces that exist in this dedicated DataServiceProvider Organization.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-dsm-org-namespaces.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32889 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-dsm-org-namespaces.png?resize=769%2C183&#038;ssl=1" alt="" width="769" height="183" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-dsm-org-namespaces.png?resize=1024%2C244&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-dsm-org-namespaces.png?resize=300%2C71&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-dsm-org-namespaces.png?resize=768%2C183&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-dsm-org-namespaces.png?resize=769%2C183&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-dsm-org-namespaces.png?w=1417&amp;ssl=1 1417w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">That now finishes the initial setup steps which are required to integrate DSM &amp; VCF Automation. The Provider Admin now hands the baton over to the VI Admin to complete the initial integration.</p>
<h2>Prepare DSM for VCF Automation integration</h2>
<p style="text-align: justify;">This step is carried out by the VI Admin. From the vSphere Client, they need to add a Consumption Operator service to the Supervisor. This step extends the Supervisor&#8217;s API to include the DSM API, so that it understands what to do with data service requests to create databases, etc, which originate from users in VCF Automation organizations. The consumption operator comes in two parts; a &#8216;package.yaml&#8217; and a &#8216;values.yaml&#8217;. The package.yaml is uploaded to the Supervisor when the &#8220;Add Service&#8221; button is selected. This does not need any modification from the downloaded version. Once the Consumption Operator service is added, you then need to configure it. Select the Actions box on the Consumption Operator Service, followed by the &#8220;Manage Service&#8221; link. Here is where the values.yaml is provided. The values.yaml must be modified to reflect details about your Data Services Manager, including URL, credentials and CA. Here is a snippet taken from one of my pre-GA environments (reason for obfuscating version numbers is to avoid any confusion with GA code).</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-dsm-cons-oper-obf2.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32892 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-dsm-cons-oper-obf2.png?resize=769%2C384&#038;ssl=1" alt="" width="769" height="384" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-dsm-cons-oper-obf2.png?w=905&amp;ssl=1 905w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-dsm-cons-oper-obf2.png?resize=300%2C150&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-dsm-cons-oper-obf2.png?resize=768%2C384&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-dsm-cons-oper-obf2.png?resize=769%2C384&amp;ssl=1 769w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Assuming the Consumption Operator successfully deployed, it should be visible, configured and trusted in the list of Supervisor Services. If not, re-examine the values.yaml and ensure that the correct URL, credentials and DSM Certificate Authority have been included correctly.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-sv-svcs-obf.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32895 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-sv-svcs-obf.png?resize=769%2C222&#038;ssl=1" alt="" width="769" height="222" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-sv-svcs-obf.png?resize=1024%2C295&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-sv-svcs-obf.png?resize=300%2C86&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-sv-svcs-obf.png?resize=768%2C221&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-sv-svcs-obf.png?resize=769%2C221&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-sv-svcs-obf.png?w=1167&amp;ssl=1 1167w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">For more details about how to retrieve, install and manage Supervisor Services, <a href="https://github.com/vsphere-tmm/Supervisor-Services" target="_blank" rel="noopener">please see this link</a>.</p>
<p style="text-align: justify;">Now we come to the second step that requires the VI Admin. This step is to mark the vSphere Namespace(s) in the DataServiceProvider Organization as Infrastructure Policies in Data Services Manager. This is again done via the vSphere Client. The VI Admin must navigate to vCenter, select Configure &gt; Data Services Manager &gt; Infrastructure Policies. Now click on the &#8220;Add vSphere Namespace&#8221; button and select the DataServiceProvider Organization namespace that you wish to use as Infrastructure policies for DSM. In this example, the &#8220;tenant-1-dsm-ns&#8221; and &#8220;tenant-2-dsm-ns&#8221; are both chosen. Note that all vSphere (Supervisor) namespaces are shown, but you must select the ones from the DataServiceProvider Organization only.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/7.-ns-as-infra-pols.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32896 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/7.-ns-as-infra-pols.png?resize=769%2C398&#038;ssl=1" alt="" width="769" height="398" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/7.-ns-as-infra-pols.png?w=797&amp;ssl=1 797w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/7.-ns-as-infra-pols.png?resize=300%2C155&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/7.-ns-as-infra-pols.png?resize=768%2C397&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/7.-ns-as-infra-pols.png?resize=769%2C398&amp;ssl=1 769w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">After a moment or two the new infrastructure policies should become visible. You can have both DSM-Managed infrastructure policies and vSphere Namespace infrastructure policies co-existing in DSM, as shown here.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/8.-sv-infra-pols-created.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32897 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/8.-sv-infra-pols-created.png?resize=769%2C193&#038;ssl=1" alt="" width="769" height="193" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/8.-sv-infra-pols-created.png?resize=1024%2C257&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/8.-sv-infra-pols-created.png?resize=300%2C75&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/8.-sv-infra-pols-created.png?resize=768%2C193&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/8.-sv-infra-pols-created.png?resize=769%2C193&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/8.-sv-infra-pols-created.png?w=1120&amp;ssl=1 1120w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">That completes the role of the VI Admin in this configuration. We can now hand this over to the DSM Admin for the provisioning of the MS SQL Server Instance.</p>
<h2>Deploy the SQL Server instance</h2>
<p style="text-align: justify;">Now it is the turn of the DSM Admin. This step is identical to the steps outlined in <a href="https://cormachogan.com/2026/05/12/configuring-microsoft-sql-server-in-data-service-manager-version-9-1/" target="_blank" rel="noopener">the previous post when we provisioned the SQL Server instance on a DSM-Managed infrastructure policy</a>. The only difference this time is that the DSM Admin chooses a vSphere Namespace based infrastructure policy for the provisioning, so I won&#8217;t repeat all of the steps here. In fact, selecting a vSphere Namespace infrastructure policy is not completely necessary. An MS SQL Server provisioned onto a DSM-Managed infrastructure policy could also be used by VCF Automation organizations for the provisioning of databases. However, the purpose of this post is to show the full VCFA-DSM integration experience, so for that reason, the DSM Admin will provision a new MS SQL Server instance onto one of the vSphere Namespace infrastructure policies defined previously. We will use a cluster topology once again for this SQL Server, resulting in a 3 node cluster using Always On. The DSM Admin now selects the vSphere Namespace infra policy, rather than a DSM Manager one, during this deployment:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/9.-mssql-infra-policy.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32898 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/9.-mssql-infra-policy.png?resize=769%2C467&#038;ssl=1" alt="" width="769" height="467" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/9.-mssql-infra-policy.png?resize=1024%2C622&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/9.-mssql-infra-policy.png?resize=300%2C182&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/9.-mssql-infra-policy.png?resize=768%2C466&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/9.-mssql-infra-policy.png?resize=769%2C467&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/9.-mssql-infra-policy.png?w=1084&amp;ssl=1 1084w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Other than choosing a different infrastructure policy, the rest of the SQL Server Instance deployment steps are identical to those <a href="https://cormachogan.com/2026/05/12/configuring-microsoft-sql-server-in-data-service-manager-version-9-1/" target="_blank" rel="noopener">seen before</a>. Integration with Active Directory is added, including the privileged user to write both SPNs and do DNS updates. The big difference now of course is that rather than DSM spinning up its own Kubernetes cluster to host the data service, it will now request a VKS (vSphere Kubernetes Service) to be spun up in the DataServiceProvider Organization namespace referenced in the infrastructure policy.</p>
<p style="text-align: justify;">Assuming there are no issues, and the different personas are correctly configured, e.g., the privileged user has Write SPN and Write DNS permissions, the group membership AD user has Kerberos encoding, and the DNS server has the correct Forward and Reverse Lookup Zones configured, the instance should come online and ready.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/16.-mssql-created.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32900 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/16.-mssql-created.png?resize=769%2C131&#038;ssl=1" alt="" width="769" height="131" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/16.-mssql-created.png?resize=1024%2C175&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/16.-mssql-created.png?resize=300%2C51&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/16.-mssql-created.png?resize=768%2C131&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/16.-mssql-created.png?resize=769%2C131&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/16.-mssql-created.png?w=1457&amp;ssl=1 1457w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">And if we take a closer look at the vSphere client inventory items, we can see that there is now a VKS cluster provisioned for this instance.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/18.-mssql-in-vsphere.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32903 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/18.-mssql-in-vsphere.png?resize=402%2C153&#038;ssl=1" alt="" width="402" height="153" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/18.-mssql-in-vsphere.png?w=402&amp;ssl=1 402w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/18.-mssql-in-vsphere.png?resize=300%2C114&amp;ssl=1 300w" sizes="auto, (max-width: 402px) 100vw, 402px" /></a></p>
<p style="text-align: justify;">The work of the DSM Admin is now done. The baton can be passed back to the Provider Admin to manage multi-tenancy access to the data services from the different tenant organizations.</p>
<h2>Setup multi-tenancy access control across organizations</h2>
<p style="text-align: justify;">In the <a href="https://cormachogan.com/2026/05/12/configuring-microsoft-sql-server-in-data-service-manager-version-9-1/" target="_blank" rel="noopener">previous post</a> on SQL Server in Data Services Manager 9.1, we saw how access control was managed through permissions, namespaces and data service policies via the DSM UI. VCF Automation has similar controls, but access is managed on a per-organization basis. This is also achieved via a Data Service Policy as we will see. The Data Service Policies in VCF Automation are setup by the Provider Admin in the System organization. Under VCF Services, select Data Services followed by Data Service Policies. As you can see, this environment already has some policies for PostgreSQL and MySQL. However there are no Data Services Policies for SQL Server yet.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-mssql-vcfa-curr-dsps.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32902 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-mssql-vcfa-curr-dsps.png?resize=769%2C322&#038;ssl=1" alt="" width="769" height="322" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-mssql-vcfa-curr-dsps.png?resize=1024%2C429&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-mssql-vcfa-curr-dsps.png?resize=300%2C126&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-mssql-vcfa-curr-dsps.png?resize=768%2C322&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-mssql-vcfa-curr-dsps.png?resize=1536%2C643&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-mssql-vcfa-curr-dsps.png?resize=769%2C322&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-mssql-vcfa-curr-dsps.png?w=1676&amp;ssl=1 1676w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Let&#8217;s now create a new Data Service Policy for SQL Server, allowing users in tenant-org-1 and tenant-org-2 to provision databases to the newly create SQL Server instance. Click on the New Policy button and begin by providing basic information about the policy, such as name, description and which data service this policy is for &#8211; in this case, SQL Server Databases.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-msql-vcfa-create-dsp.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32904 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-msql-vcfa-create-dsp.png?resize=769%2C316&#038;ssl=1" alt="" width="769" height="316" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-msql-vcfa-create-dsp.png?resize=1024%2C421&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-msql-vcfa-create-dsp.png?resize=300%2C123&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-msql-vcfa-create-dsp.png?resize=768%2C315&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-msql-vcfa-create-dsp.png?resize=769%2C316&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-msql-vcfa-create-dsp.png?w=1405&amp;ssl=1 1405w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">We now come to the assignment section. This is where the Provider Admin decides which organizations are allowed to use the data services defined in the policy. In this example, users from two different organizations will be allowed access, tenant-org-1 and tenant-org-2.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-mssql-vcfa-create-dsp.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32905 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-mssql-vcfa-create-dsp.png?resize=769%2C380&#038;ssl=1" alt="" width="769" height="380" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-mssql-vcfa-create-dsp.png?resize=1024%2C506&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-mssql-vcfa-create-dsp.png?resize=300%2C148&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-mssql-vcfa-create-dsp.png?resize=768%2C379&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-mssql-vcfa-create-dsp.png?resize=769%2C380&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-mssql-vcfa-create-dsp.png?w=1419&amp;ssl=1 1419w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">We now come to the resources section. This is where we choose which SQL Server instances are included in the policy, and also which backups locations are allowed to be used. In this case, the SQL Server instance is the one which is using the vSphere Namespace infrastructure policy, called tenant-1-dsm-ns. The backup location is an S3 bucket which has been previously defined in DSM as a backup endpoint for databases. A Data Service Policy can control which backup storage an organization should use for their backups, if there are multiple locations available for selection.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.new-mssql-vcfa-create-dsp.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32907 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.new-mssql-vcfa-create-dsp.png?resize=769%2C353&#038;ssl=1" alt="" width="769" height="353" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.new-mssql-vcfa-create-dsp.png?resize=1024%2C470&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.new-mssql-vcfa-create-dsp.png?resize=300%2C138&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.new-mssql-vcfa-create-dsp.png?resize=768%2C353&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.new-mssql-vcfa-create-dsp.png?resize=769%2C353&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.new-mssql-vcfa-create-dsp.png?w=1387&amp;ssl=1 1387w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p>&nbsp;</p>
<p style="text-align: justify;">Because this is a clustered SQL Server, backups must be configured. If this was a single node deployment, the Provider Admin can have more controls over the backup settings, making them required, optional or disabling them for the organization users. But when the SQL Server is clustered, backups are required.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-mssql-vcfa-create-dsp.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32909 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-mssql-vcfa-create-dsp.png?resize=769%2C436&#038;ssl=1" alt="" width="769" height="436" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-mssql-vcfa-create-dsp.png?resize=1024%2C580&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-mssql-vcfa-create-dsp.png?resize=300%2C170&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-mssql-vcfa-create-dsp.png?resize=768%2C435&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-mssql-vcfa-create-dsp.png?resize=769%2C435&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/6.-mssql-vcfa-create-dsp.png?w=1431&amp;ssl=1 1431w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Now we come to the user types. Since the SQL Server instance has been integrated with Active Directory, the Provider Admin can choose to allow Windows Principal and/or SQL User access to the database. If SQL User is selected, when an organization user requests a new database, DSM will automatically create that SQL User on the database and grant it db_owner privileges. Here, the Provider Admin has decided to support both types of user.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/7.-mssql-vcfa-create-dsp-user-types.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32908 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/7.-mssql-vcfa-create-dsp-user-types.png?resize=769%2C340&#038;ssl=1" alt="" width="769" height="340" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/7.-mssql-vcfa-create-dsp-user-types.png?resize=1024%2C453&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/7.-mssql-vcfa-create-dsp-user-types.png?resize=300%2C133&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/7.-mssql-vcfa-create-dsp-user-types.png?resize=768%2C340&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/7.-mssql-vcfa-create-dsp-user-types.png?resize=769%2C340&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/7.-mssql-vcfa-create-dsp-user-types.png?w=1416&amp;ssl=1 1416w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Complete the setup, and verify that the Data Service Policy is reflecting what you planned, e.g., correct number of organizations, zero compliance issues.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/10.-mssql-vcfa-new-dsp-created.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32911 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/10.-mssql-vcfa-new-dsp-created.png?resize=769%2C350&#038;ssl=1" alt="" width="769" height="350" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/10.-mssql-vcfa-new-dsp-created.png?resize=1024%2C466&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/10.-mssql-vcfa-new-dsp-created.png?resize=300%2C136&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/10.-mssql-vcfa-new-dsp-created.png?resize=768%2C349&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/10.-mssql-vcfa-new-dsp-created.png?resize=769%2C350&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/10.-mssql-vcfa-new-dsp-created.png?w=1425&amp;ssl=1 1425w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Now our organization user(s) can login to their VCFA organization and try to deploy a SQL Server database.</p>
<h2>Deploy a SQL Server database</h2>
<p style="text-align: justify;">Organization users can have different personas assigned to them. For example, Project Admins and Project Advanced Users will be able to navigate to &#8220;Build and Deploy&#8221; and select Data Services from the available list of services to provision a database. Project Users will not have this level of access, and will only be able to provision a database if someone with higher permissions creates a blueprint to deploy a database and publishes it to the organizations catalog. Something to keep in mind when you wish to offer a true DBaaS experience to your end users. In this example, organization user &#8216;george&#8217; is an advanced user so he has the ability to provision his own databases directly. To begin, &#8216;george&#8217; logs into the VCF Automation organization to which he has been granted access as an organization user. This access control is handled by the Organization Admin, and is beyond the scope of this blog. Suffice to say that &#8216;george&#8217; is a member of this tenant-org-1.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-login-to-tenant.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32912 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-login-to-tenant.png?resize=415%2C560&#038;ssl=1" alt="" width="415" height="560" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-login-to-tenant.png?w=415&amp;ssl=1 415w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-login-to-tenant.png?resize=222%2C300&amp;ssl=1 222w" sizes="auto, (max-width: 415px) 100vw, 415px" /></a></p>
<p style="text-align: justify;">As a Project Advanced User, &#8216;george&#8217; may have access to a number of tenant namespaces to work from. This depends on how many namespaces are in their project(s). If they only have access to one namespace, then that is automatically chosen when &#8216;george&#8217; clicks on the Build &amp; Deploy view. However, it is important to keep in mind that when &#8216;george&#8217; creates a database, he is not consuming any resources in his organizations namespace. Instead, the resources are being consumed in the DataServiceProvider Organization (dsm org) namespace which is defined in the infrastructure policy. So while the database will be visible to &#8216;george&#8217; in his organization, he will not be able to see the VMs or the VKS cluster in his organization since these are instantiated in a completely different organization, project and namespace. This is the crux of the reasoning behind the DataServiceProvider Organization, keeping all data services in one place for the IT team to manage.</p>
<p style="text-align: justify;">So, as user &#8216;george&#8217;, select Build &amp; Deploy, and which namespace you wish to make the database request from.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-mssql-vcfa-prov-db-bd.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32913 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-mssql-vcfa-prov-db-bd.png?resize=769%2C315&#038;ssl=1" alt="" width="769" height="315" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-mssql-vcfa-prov-db-bd.png?resize=1024%2C420&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-mssql-vcfa-prov-db-bd.png?resize=300%2C123&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-mssql-vcfa-prov-db-bd.png?resize=768%2C315&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-mssql-vcfa-prov-db-bd.png?resize=1536%2C631&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-mssql-vcfa-prov-db-bd.png?resize=769%2C316&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-mssql-vcfa-prov-db-bd.png?w=1673&amp;ssl=1 1673w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Click on the Create Database button. Select the SQL Server instance that &#8216;george&#8217;, as an organization user, has been granted access to via the Data Service Policy. Then, give the database a name.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-new-msql-vcfa-prov-db.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32914 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-new-msql-vcfa-prov-db.png?resize=769%2C379&#038;ssl=1" alt="" width="769" height="379" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-new-msql-vcfa-prov-db.png?resize=1024%2C505&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-new-msql-vcfa-prov-db.png?resize=300%2C148&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-new-msql-vcfa-prov-db.png?resize=768%2C379&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-new-msql-vcfa-prov-db.png?resize=769%2C379&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-new-msql-vcfa-prov-db.png?w=1423&amp;ssl=1 1423w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p>Decide who the database owner is going to be. Since &#8216;george&#8217; is also an AD user, he can decide to give his AD user account (qualified with the domain) access to the SQL Server database that he is creating. So as you can see, users can be given self-service to provision their own databases through VCF Automation integrated with DSM.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-mssql-vcfa-prov-db.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32915 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-mssql-vcfa-prov-db.png?resize=769%2C354&#038;ssl=1" alt="" width="769" height="354" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-mssql-vcfa-prov-db.png?resize=1024%2C471&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-mssql-vcfa-prov-db.png?resize=300%2C138&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-mssql-vcfa-prov-db.png?resize=768%2C353&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-mssql-vcfa-prov-db.png?resize=1536%2C707&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-mssql-vcfa-prov-db.png?resize=769%2C354&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/4.-mssql-vcfa-prov-db.png?w=1671&amp;ssl=1 1671w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Next up is the Data Availability and Protection section. You may remember from the Data Service Policy that backups are required on clustered SQL Server deployments. Thus, it is not possible to change this at the database level. However, you can customise the backup schedule should you wish to do so. The transaction log backup frequency can also be tuned at this point, but keep in mind that changing this could directly impact your Point In Time (PIT) restores of the backups, as well as the size that the transaction log file could grow to. The default value of 5 minutes seems a good fit in our opinion.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-mssql-vcfa-prov-db.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32916 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-mssql-vcfa-prov-db.png?resize=769%2C475&#038;ssl=1" alt="" width="769" height="475" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-mssql-vcfa-prov-db.png?resize=1024%2C632&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-mssql-vcfa-prov-db.png?resize=300%2C185&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-mssql-vcfa-prov-db.png?resize=768%2C474&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-mssql-vcfa-prov-db.png?resize=1536%2C947&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-mssql-vcfa-prov-db.png?resize=769%2C474&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/5.-mssql-vcfa-prov-db.png?w=1675&amp;ssl=1 1675w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Review the settings and create the database. All going well, the database should enter a ready state after a moment or two.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/8.-mssql-vcfa-db-is-ready.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32917 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/8.-mssql-vcfa-db-is-ready.png?resize=769%2C273&#038;ssl=1" alt="" width="769" height="273" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/8.-mssql-vcfa-db-is-ready.png?resize=1024%2C363&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/8.-mssql-vcfa-db-is-ready.png?resize=300%2C106&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/8.-mssql-vcfa-db-is-ready.png?resize=768%2C272&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/8.-mssql-vcfa-db-is-ready.png?resize=769%2C272&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/8.-mssql-vcfa-db-is-ready.png?w=1428&amp;ssl=1 1428w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Now all that is left to do is to make sure that our organization user &#8216;george&#8217;, who is also an AD user &#8216;arkham\george&#8217; can successfully connect to the database. The first step is to copy the connection string from the basic information view above.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-copy-connection-string.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32918 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-copy-connection-string.png?resize=769%2C482&#038;ssl=1" alt="" width="769" height="482" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-copy-connection-string.png?resize=1024%2C642&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-copy-connection-string.png?resize=300%2C188&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-copy-connection-string.png?resize=768%2C482&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-copy-connection-string.png?resize=769%2C482&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-copy-connection-string.png?w=1425&amp;ssl=1 1425w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Next, from his desktop, &#8216;george&#8217; can launch the SQL Server Management Studio and paste in the connection string. Note that if the certificate is signed by an unknown user, the &#8216;Security=TrustServerCertificate&#8217; might also be required in the connection string.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-connect-to-db.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32919 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-connect-to-db.png?resize=485%2C597&#038;ssl=1" alt="" width="485" height="597" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-connect-to-db.png?w=485&amp;ssl=1 485w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-connect-to-db.png?resize=244%2C300&amp;ssl=1 244w" sizes="auto, (max-width: 485px) 100vw, 485px" /></a></p>
<p style="text-align: justify;">If everything is working as expected, AD user &#8216;arkham\george&#8217; should be able to connect to the database successfully. And it is important to note that &#8216;george&#8217; can only see his newly created database. He cannot see any of the system databases, nor can he see the databases belonging to any other users of the SQL Server instance.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-successful-connection.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32920 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-successful-connection.png?resize=605%2C549&#038;ssl=1" alt="" width="605" height="549" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-successful-connection.png?w=605&amp;ssl=1 605w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/3.-successful-connection.png?resize=300%2C272&amp;ssl=1 300w" sizes="auto, (max-width: 605px) 100vw, 605px" /></a></p>
<p style="text-align: justify;">That now complete the installation and configuration of SQL Server as a DBaaS on Data Services Manager integrated with VCF Automation version 9.1.</p>
<h1>Summary</h1>
<p style="text-align: justify;">Thank you for reading to the end. As you can see, this is a very powerful solution for customers who wish to offer data services to their users, all the while maintaining multi-tenancy controls through VCF Automation. We&#8217;ve seen how the VI Admin and Provider Admin (we can assume these being part of the IT team) have full control over the services and resources. They have the ability to choose which of their tenants/organizations have access to which data services and which underlying resources are used for provisioning these services. We can also see how an organization user can achieve full self-service, all the while being guard-railed by the Data Service Policy. And while this demo is focused on SQL Server, a similar approach is available for both PostgreSQL and MySQL data services as well.</p>
<p>The post <a href="https://cormachogan.com/2026/05/14/configuring-sql-server-with-vcf-automation-data-services-manager-versions-9-1/">Configuring SQL Server with VCF Automation &#038; Data Services Manager versions 9.1</a> appeared first on <a href="https://cormachogan.com">CormacHogan.com</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cormachogan.com/2026/05/14/configuring-sql-server-with-vcf-automation-data-services-manager-versions-9-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">32882</post-id>	</item>
		<item>
		<title>Configuring Microsoft SQL Server in Data Services Manager version 9.1</title>
		<link>https://cormachogan.com/2026/05/12/configuring-microsoft-sql-server-in-data-service-manager-version-9-1/</link>
					<comments>https://cormachogan.com/2026/05/12/configuring-microsoft-sql-server-in-data-service-manager-version-9-1/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Cormac]]></dc:creator>
		<pubDate>Tue, 12 May 2026 13:00:05 +0000</pubDate>
				<category><![CDATA[Data Services Manager]]></category>
		<category><![CDATA[VCF Automation]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[VMware Cloud Foundation (VCF)]]></category>
		<category><![CDATA[vSphere]]></category>
		<category><![CDATA[Data Service Manager]]></category>
		<category><![CDATA[DSM]]></category>
		<category><![CDATA[DSM 9.1]]></category>
		<category><![CDATA[MS SQL Server]]></category>
		<guid isPermaLink="false">https://cormachogan.com/?p=32840</guid>

					<description><![CDATA[<p>Now that Data Services Manager version 9.1 is officially announced, I thought this would be a good time to step through the configuration of our new data service, Microsoft SQL Server. This is possibly the most requested data service I have heard from our customers since I started discussing Data Services Manager (DSM). Therefore I am personally very happy that SQL Server is now available in the 9.1 version of the product. There are a number of steps that need to followed to get this data service up and running, and note that I am only doing this in the&#8230;</p>
<p>The post <a href="https://cormachogan.com/2026/05/12/configuring-microsoft-sql-server-in-data-service-manager-version-9-1/">Configuring Microsoft SQL Server in Data Services Manager version 9.1</a> appeared first on <a href="https://cormachogan.com">CormacHogan.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class=" wp-image-30393 alignleft" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?resize=150%2C151&#038;ssl=1" alt="" width="150" height="151" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?w=787&amp;ssl=1 787w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?resize=298%2C300&amp;ssl=1 298w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?resize=768%2C773&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?resize=769%2C774&amp;ssl=1 769w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a>Now that <a href="https://cormachogan.com/2026/05/07/announcing-data-services-manager-version-9-1/" target="_blank" rel="noopener">Data Services Manager version 9.1 is officially announced</a>, I thought this would be a good time to step through the configuration of our new data service, Microsoft SQL Server. This is possibly the most requested data service I have heard from our customers since I started discussing Data Services Manager (DSM). Therefore I am personally very happy that SQL Server is now available in the 9.1 version of the product. There are a number of steps that need to followed to get this data service up and running, and note that I am only doing this in the context of DSM Manager on vSphere. In a future post, I will discuss the steps to integrate SQL Server into VCF 9.1 and VCF Automation (VCFA), which is also a pretty interesting topic. For now, we can summarise the steps to create a SQL Server DBaaS (database as a service) as follows. We will assume that the VI Admin has already created an infrastructure policy with resources that can be used for the provisioning of SQL Server, as well as granting some users permission to access Data Services Manager:</p>
<p style="text-align: justify;">As a DSM Admin, deploy the SQL Server instance (part 1):</p>
<ol style="text-align: justify;">
<li>In the DSM UI, link an image registry for the SQL Server images</li>
<li>Enable the SQL Server version</li>
<li>Setup Active Directory and a special DSM Privileged Account (optional)</li>
<li>Create a SQL Server Instance/Engine</li>
<li>Enable SQL Server Agent (optional)</li>
<li>Configure SQL Server (optional)</li>
<li>Test connectivity to SQL Server Instance/Engine</li>
</ol>
<p style="text-align: justify;">As a DSM Admin, setup access controls (part 2):</p>
<ol style="text-align: justify;">
<li>In the Data Services Manager UI, create a namespace and add users to the namespace</li>
<li>Setup a Data Service Policy to determine which users have access to SQL Server by selecting namespaces for inclusion in the policy</li>
<li>Fine tune Data Service Policy to define Infra Policies and optional Backup controls available to DSM Users when provisioning SQL databases</li>
<li>Continue tuning Data Service Policy to determine which user types can connect to the database as  (AD user or SQL user)</li>
</ol>
<p style="text-align: justify;">As a DSM User, deploy a SQL Server database (part 3):</p>
<ol>
<li style="text-align: justify;">In the Data Services Manager UI, create SQL Server Database</li>
<li style="text-align: justify;">Chose the SQL Server Instance (as per the Data Service Policy)</li>
<li style="text-align: justify;">Select user who will be granted db_owner role (AD user or SQL user)</li>
<li style="text-align: justify;">Configure backup settings</li>
<li style="text-align: justify;">Test connectivity to SQL Server Database</li>
</ol>
<p style="text-align: justify;">This is a lot to get through, and there are a number of different personas to discuss as well, especially if you want a full automated Active Directory integration experience. So let&#8217;s begin:</p>
<h2>Personas</h2>
<p style="text-align: justify;">Here is a screenshot taken from a deck that I use when speaking to customers about SQL Server / Active Directory personas and Data Services Manager. The one that most of you may be unfamiliar with is the Privileged User. In a nutshell, if this user is configured, it has the ability to generate the Kerberos keytab file required for SQL Server AD authentication, i.e., it has the privileges to write Service Principal Names. This means that integrated authentication using AD username can be used to access SQL Server. Without this privileged user, enabling AD integration on every SQL Server Instance is a very manual process. The manual approach is still available however, which is why the privileged user is marked as optional. The other personas are explained in the accompanying text.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-personas-new.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32868 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-personas-new.png?resize=769%2C351&#038;ssl=1" alt="" width="769" height="351" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-personas-new.png?resize=1024%2C468&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-personas-new.png?resize=300%2C137&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-personas-new.png?resize=768%2C351&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-personas-new.png?resize=769%2C351&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-personas-new.png?w=1108&amp;ssl=1 1108w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">As we go through the deployment, I will highlight the role that each of these personas play in the setup. In my example, I already have a number of running databases, including a SQL Server Instance and Database. However, we will go through the process of creating a new SQL Server Instance and Database in this post.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.29.10.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32847 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.29.10.png?resize=769%2C510&#038;ssl=1" alt="" width="769" height="510" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.29.10.png?resize=1024%2C679&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.29.10.png?resize=300%2C199&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.29.10.png?resize=768%2C509&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.29.10.png?resize=769%2C510&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.29.10.png?w=1353&amp;ssl=1 1353w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<h2>Create the SQL Server Instance/Engine</h2>
<h3>Step 1: Setup image registry</h3>
<p style="text-align: justify;">As highlighted in the introduction, there are a number of steps involved in deploying the SQL Service Engine. Since these are container images provided by Microsoft, and are not open source, we cannot embed these images in Data Services Manager. Instead, the images must be retrieved from the Microsoft Container Registry (mcr). Fortunately, Data Services Manager makes this very easy. Under <strong>Version &amp; Upgrade</strong>, select <strong>Image Registries</strong> and <strong>Add</strong> one for the SQL Server data services that points to the &#8220;mcr.microsoft.com&#8221; endpoint and the &#8220;mssql&#8221; repository, as shown below.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.29.51.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32848 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.29.51.png?resize=769%2C348&#038;ssl=1" alt="" width="769" height="348" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.29.51.png?resize=1024%2C463&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.29.51.png?resize=300%2C136&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.29.51.png?resize=768%2C348&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.29.51.png?resize=769%2C348&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.29.51.png?w=1348&amp;ssl=1 1348w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<h3>Step 2: Enable SQL Server version</h3>
<p style="text-align: justify;">Once the image registry is configured, the image(s) will begin to sync to Data Services Manager. Once synchronised, the image(s) need to be enabled for use. To do this , remain in the <strong>Version &amp; Upgrade</strong> section, and select <strong>SQL Server</strong>. Choose the version, which for this initial 9.1 release is 2022 CU22 (CU: Cumulative Update). Click <strong>Enable</strong> and the status should change to Enabled, as shown below. We can now provision SQL Server instances using this image.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.42.18.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32849 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.42.18.png?resize=769%2C261&#038;ssl=1" alt="" width="769" height="261" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.42.18.png?resize=1024%2C347&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.42.18.png?resize=300%2C102&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.42.18.png?resize=768%2C260&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.42.18.png?resize=769%2C261&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.42.18.png?w=1352&amp;ssl=1 1352w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<h3>Step 3: Configure Active Directory Domain</h3>
<p style="text-align: justify;">Let&#8217;s integrate SQL Server with Active Directory. This allows us to use integrated authentication with Active Directory, allowing AD users to access the databases. Select the options to automatically write the Service Principal Names, and automatically update DNS. Setup an Active Directory account with the necessary permissions to do these tasks (write DNS, write SPN) &#8211; in this example, the AD user is called <em>sqlprivadmin</em>. When configuring Active Directory Domain, provide the Domain, the DNS server to write the FQDN of the SQL Servers, enable DSM Privileged Account, and set the privileged account username and password. You will find the option to setup an Active Directory Domain location under Databases &gt; SQL Server, and under the Active Directory Domains tab. Then select the Create Active Directory Domain tab. Here is an example of my configuration for reference. The DNS Servers are taken from Data Services Manager, but as you can see, an alternative DNS server can be chosen if it is different to the ones configured on the DSM appliance.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.49.24.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32850 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.49.24.png?resize=769%2C366&#038;ssl=1" alt="" width="769" height="366" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.49.24.png?resize=1024%2C488&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.49.24.png?resize=300%2C143&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.49.24.png?resize=768%2C366&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.49.24.png?resize=769%2C367&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.49.24.png?w=1350&amp;ssl=1 1350w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p>With Active Directory Domain configured, proceed to the creating of the SQL Server instances.</p>
<h3>Step 4: Create SQL Server Instance</h3>
<p style="text-align: justify;">In the initial &#8216;Basic Information&#8217; screen during the creation of a SQL Service Instance, information such as version, instance name, edition as well as administrator username and password are requested. As there is only a single 2022 CU22 version in this initial 9.1 release, that is the only version that can be selected. Proceed to provide a name for the instance along with the edition of SQL Server. Note that some of the editions do not require a license, but are limited in the functionality that they provide, e.g. Developer edition, Express edition. However other editions do require a license from Microsoft. There is also an option in the editions field to provide a license key, and I am reliably informed that this will result in the associated SQL Server edition getting selected. The other section in the basic section is integration with Active Directory, where you select the Domain created in the previous step. If AD integration is selected, you are then prompted to optionally select the privileged user for writing SPNs and writing DNS. You will also need to provide the Group Membership AD user which we mentioned in the personas section above. Note that the Group membership AD user does not have the domain qualification added &#8211; simply add the username and password.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.59.33.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32851 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.59.33.png?resize=769%2C442&#038;ssl=1" alt="" width="769" height="442" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.59.33.png?resize=1024%2C588&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.59.33.png?resize=300%2C172&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.59.33.png?resize=768%2C441&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.59.33.png?resize=769%2C441&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-10.59.33.png?w=1350&amp;ssl=1 1350w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Finally, add the FQDN of the instance and whether you wish to use your own custom certificates for communication with the database or if you wish to use DSM-Managed certificates (the default). This then completes the basic information section.</p>
<p style="text-align: justify;">The next section covers the deployment topology. For SQL Server instances, Data Services Manager can provision single node or clustered deployments. The three node SQL Server cluster uses an Always On availability group with two synchronous replicas and one configuration-only replica. In this example, a highly available instance is selected. Setting up SQL Server clustering is just a single click.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-server-aag.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32878 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-server-aag.png?resize=769%2C303&#038;ssl=1" alt="" width="769" height="303" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-server-aag.png?resize=1024%2C404&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-server-aag.png?resize=300%2C118&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-server-aag.png?resize=768%2C303&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-server-aag.png?resize=1536%2C606&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-server-aag.png?resize=769%2C303&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-server-aag.png?w=1807&amp;ssl=1 1807w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">This now brings us to the Infrastructure section. This is where the Infrastructure Policy and its associated resources are selected. We have chosen a DSM-Managed infrastructure policy which references vSphere resources directly. The other option is to use an infrastructure policy which uses resources defined in a vSphere (Supervisor) Namespace. The vSphere Namespace option will be examined in more detail when VCF Automation integration is discussed in a future post. Note that for SQL Server, the pre-defined VM Class size of small is unsupported and is not available for selection.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-server-infra-pol.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32879 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-server-infra-pol.png?resize=769%2C372&#038;ssl=1" alt="" width="769" height="372" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-server-infra-pol.png?resize=1024%2C496&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-server-infra-pol.png?resize=300%2C145&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-server-infra-pol.png?resize=768%2C372&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-server-infra-pol.png?resize=1536%2C743&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-server-infra-pol.png?resize=769%2C372&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/sql-server-infra-pol.png?w=1804&amp;ssl=1 1804w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<h3>Step 5: Additional SQL Server Settings</h3>
<p style="text-align: justify;">We now get to the point where you can configure the SQL Server to meet many different requirements. For example, you can enable SQL Server Agent for running TSQL-based jobs on the database. These jobs can range from index optimisations to the running of database integrity checks. The SQL Server Agent and associated jobs are a feature commonly used by SQL Server DBAs. There are also a host of configuration options that can be set on the database. In the example below, I have a single configuration setting called errorLog.numErrorLogs set to a value of 25. Many other configuration options are available. Another option that can be enabled in Auditing. I have set the audit feature to log failed logins only, and to keep this information available for 30 days.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-11.55.46.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32853 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-11.55.46.png?resize=769%2C691&#038;ssl=1" alt="" width="769" height="691" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-11.55.46.png?w=855&amp;ssl=1 855w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-11.55.46.png?resize=300%2C269&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-11.55.46.png?resize=768%2C690&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-11.55.46.png?resize=769%2C691&amp;ssl=1 769w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Review the Summary and then click the create button to commence the creation of the SQL Server instance. After a few minutes, the SQL Server Instance should now appear Online. Click into the instance to examine the settings. This will allow the DSM Admin to retrieve the connection string for the SQL Server instance. The instance can also be modified from here if necessary.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-11.59.48.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32855 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-11.59.48.png?resize=769%2C445&#038;ssl=1" alt="" width="769" height="445" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-11.59.48.png?resize=1024%2C592&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-11.59.48.png?resize=300%2C173&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-11.59.48.png?resize=768%2C444&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-11.59.48.png?resize=769%2C445&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-11.59.48.png?w=1351&amp;ssl=1 1351w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<h2>Connect to the SQL Server Instance/Engine</h2>
<p style="text-align: justify;">With the connection string retrieved, standard Microsoft tools such as SQL Server Management Studio can now be used to connect to the instance. The connection string includes the admin credentials, server FQDN and the database to connect to (master). The connection string can be passed directly into the connection parameters section as shown below:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.03.19.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32856 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.03.19.png?resize=769%2C481&#038;ssl=1" alt="" width="769" height="481" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.03.19.png?resize=1024%2C640&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.03.19.png?resize=300%2C187&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.03.19.png?resize=768%2C480&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.03.19.png?resize=769%2C480&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.03.19.png?w=1351&amp;ssl=1 1351w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">All going well, this will open a connection to the instance, and all of the system databases should now be visible:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.04.43.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32857 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.04.43.png?resize=769%2C622&#038;ssl=1" alt="" width="769" height="622" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.04.43.png?resize=1024%2C828&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.04.43.png?resize=300%2C242&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.04.43.png?resize=768%2C621&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.04.43.png?resize=769%2C621&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.04.43.png?w=1350&amp;ssl=1 1350w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Success! The SQL Server engine has been deployed and we can connect to it using the <strong>mssql_admin</strong> credentials put in place by DSM. We can also se that the SQL Server Agent is present, and if we examined the database in more detail, we would find our configuration options and auditing settings also in place. Now we need to verify that we can use this instance to offer a true DBaaS (Database as a Service) to our end users. By that I mean, can our DSM Users now provision databases on this instance for their own purposes? Let&#8217;s find out.</p>
<h2>Use Permissions and Namespaces to give users access</h2>
<p style="text-align: justify;">We are now in the DSM Admin (part 2) section highlighted in the introduction. The DSM Admin must give DSM Users access to the SQL Server instance so that they can provision their SQL Server databases on the instance. I will skip the step of creating namespaces and permissions, but will make the assumption that some users have already been added to my new &#8220;internal-ns&#8221; namespace.  With that in mind, I can proceed to the creation of the Data Service Policy which forms the relationship between the namespace and the data service and thus, by extension, the relationship between the users in the namespace and the data service.</p>
<p style="text-align: justify;"><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.13.11.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32858 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.13.11.png?resize=769%2C371&#038;ssl=1" alt="" width="769" height="371" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.13.11.png?resize=1024%2C494&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.13.11.png?resize=300%2C145&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.13.11.png?resize=768%2C371&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.13.11.png?resize=769%2C371&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.13.11.png?w=1349&amp;ssl=1 1349w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">With the namespace chosen, you can now proceed to select the SQL Servers that these users are allows to provision databases onto. You can also select which backup locations they are allowed to use. A note here about backup locations &#8211; the Object Store hosting the S3 bucket for SQL Server backups must be provisioned with a valid certificate. A self-signed certificate won&#8217;t work here. There is also a requirement to have backups configured for databases deployed on clustered SQL Server (AlwaysOn) instances, FYI. Here is an example from my setup:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.20.16.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32859" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.20.16.png?resize=769%2C258&#038;ssl=1" alt="" width="769" height="258" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.20.16.png?resize=1024%2C344&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.20.16.png?resize=300%2C101&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.20.16.png?resize=768%2C258&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.20.16.png?resize=769%2C258&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.20.16.png?w=1351&amp;ssl=1 1351w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Complete the configuration by selecting the &#8220;Allowed User Types&#8221; for the databases that these users are allowed to provision on the instance. You can choose between Windows Principal and/or SQL User. In this example, because I have AD integration, I am allowing both.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.21.59.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32860 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.21.59.png?resize=769%2C649&#038;ssl=1" alt="" width="769" height="649" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.21.59.png?resize=1024%2C864&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.21.59.png?resize=300%2C253&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.21.59.png?resize=768%2C648&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.21.59.png?resize=769%2C649&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.21.59.png?w=1352&amp;ssl=1 1352w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Complete the setup of the Data Service Policy. We are now ready to check if our DSM User can successfully provision a SQL Server Database on this SQL Server Instance.</p>
<h2>Provision a SQL Server Database</h2>
<p style="text-align: justify;">Log out of the Data Services Manager portal as the DSM Admin and log back in as a DSM User. Navigate to Databases &gt; SQL Server. From the available tabs, select Databases, then click on Create Database. From here, the selectable options are completely controlled by the Data Service Policies. The user can select the namespace from the drop-down list if they are a member of multiple namespaces. Next, they select which SQL Server instance they wish to provision the database on. Again, they may have been granted access to multiple instances by the Data Service Policy. Finally, they give the database a name:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.29.21.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32861" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.29.21.png?resize=769%2C280&#038;ssl=1" alt="" width="769" height="280" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.29.21.png?resize=1024%2C373&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.29.21.png?resize=300%2C109&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.29.21.png?resize=768%2C280&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.29.21.png?resize=769%2C280&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.29.21.png?w=1356&amp;ssl=1 1356w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">The next step is to define the <strong>db_owner</strong>. Again, since we granted the user to have either an AD User (Windows Principal) or a SQL User, both are offered as options. If the Data Service Policy stated that it was one user type or the other, then that is what would appear here. Since we have fully integrated with Active Directory and have a privileged user for Write SPNs, we can set an AD user as the <strong>db_owner</strong>. Note that this user requires the domain name to be included. One other important point &#8211; this user must also support Kerberos AES 128 bit encryption and Kerberos AES 256 bit encryption. This is a property of the User account configured in Active Directory.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.32.02.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32862" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.32.02.png?resize=769%2C363&#038;ssl=1" alt="" width="769" height="363" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.32.02.png?resize=1024%2C483&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.32.02.png?resize=300%2C141&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.32.02.png?resize=768%2C362&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.32.02.png?resize=769%2C363&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.32.02.png?w=1349&amp;ssl=1 1349w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">To complete the database deployment, you can fine-tune the backup requirements, assuming you have control to do so from the Data Service Policy. Review the summary and create the database. Soon the database should become ready and accessible.</p>
<h2>Connect to the SQL Server Database</h2>
<p style="text-align: justify;">When the database is Ready, the status should be reflected in the SQL Server Database view.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.36.15.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32863 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.36.15.png?resize=769%2C149&#038;ssl=1" alt="" width="769" height="149" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.36.15.png?resize=1024%2C198&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.36.15.png?resize=300%2C58&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.36.15.png?resize=768%2C148&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.36.15.png?resize=769%2C149&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.36.15.png?w=1355&amp;ssl=1 1355w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Click on the Database to get more details, including the Connection String.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.37.22.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32864 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.37.22.png?resize=769%2C206&#038;ssl=1" alt="" width="769" height="206" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.37.22.png?resize=1024%2C274&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.37.22.png?resize=300%2C80&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.37.22.png?resize=768%2C205&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.37.22.png?resize=769%2C205&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.37.22.png?w=1351&amp;ssl=1 1351w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Now, logon to the desktop of the user who wishes to use their AD account to access the SQL Server database, in this case &#8220;arkham\george&#8221;. Launch the SQL Server Management Studio once more (in this case it is version 2022). Paste the connection string into the appropriate field and connect:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.42.53.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32865 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.42.53.png?resize=769%2C336&#038;ssl=1" alt="" width="769" height="336" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.42.53.png?resize=1024%2C448&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.42.53.png?resize=300%2C131&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.42.53.png?resize=768%2C336&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.42.53.png?resize=769%2C336&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.42.53.png?w=1351&amp;ssl=1 1351w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Note that you may need to add &#8220;TrustServerCertificate=True;&#8221; if you get a certificate error when trying to connect. However, assuming everything is working, the user &#8220;arkham\george&#8221; should be able to connect to the database that he just provisioned via Data Services Manager:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.44.23.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32866 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.44.23.png?resize=769%2C413&#038;ssl=1" alt="" width="769" height="413" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.44.23.png?resize=1024%2C550&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.44.23.png?resize=300%2C161&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.44.23.png?resize=768%2C412&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.44.23.png?resize=769%2C413&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/Screenshot-2026-05-08-at-12.44.23.png?w=1347&amp;ssl=1 1347w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Success! The AD user &#8220;arkham\george&#8221; has been able to successfully access their database, and note that they can only see their own database. They do not have access to any of the system databases. This implies that all of our configuration, from the privileged user to Write SPN and Write DNS, to the Group Membership AD user and eventually our db_owner AD user is working as expected. Data Services Manager can now offer a true DBaaS to our SQL Server customers.</p>
<h2 style="text-align: justify;">Summary</h2>
<p style="text-align: justify;">Data Services Manager now offers a new data service, Microsoft SQL Server. In the above how-to, we saw how to provision SQL Server Instances and automatically integrate with Active Directory and DNS for a seamless deployment experience. This data service also offers a true Database as a Service (DBaaS) to customers, allowing DSM Admins controls over resources and engines, while still allowing consumers to provision their own SQL Server databases onto existing Instances. Of course, you could also give the full SQL Server Instance to an end-user if you wish &#8211; there is nothing to stop you from taking that approach if that is what you wish to offer your users. Or perhaps it is a combination of both &#8211; some users get the full instance, and other users get one or more databases. Data Services Manager can offer both. This guide has focused on how to achieve this with standalone Data Services Manager consuming vSphere resources. In a future post, we will look at how this data services in integrated into VCF Automation version 9.1 for a true multi-tenanted experience. Stay tuned for that, and thank you for reading to this point.</p>
<p>The post <a href="https://cormachogan.com/2026/05/12/configuring-microsoft-sql-server-in-data-service-manager-version-9-1/">Configuring Microsoft SQL Server in Data Services Manager version 9.1</a> appeared first on <a href="https://cormachogan.com">CormacHogan.com</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cormachogan.com/2026/05/12/configuring-microsoft-sql-server-in-data-service-manager-version-9-1/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">32840</post-id>	</item>
		<item>
		<title>Announcing Data Services Manager 9.1</title>
		<link>https://cormachogan.com/2026/05/07/announcing-data-services-manager-version-9-1/</link>
					<comments>https://cormachogan.com/2026/05/07/announcing-data-services-manager-version-9-1/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Cormac]]></dc:creator>
		<pubDate>Thu, 07 May 2026 13:00:42 +0000</pubDate>
				<category><![CDATA[Data Services Manager]]></category>
		<category><![CDATA[VCF Automation]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[VMware Cloud Foundation (VCF)]]></category>
		<category><![CDATA[vSphere]]></category>
		<category><![CDATA[Data Service Manager]]></category>
		<category><![CDATA[DSM]]></category>
		<category><![CDATA[DSM 9.1]]></category>
		<category><![CDATA[MS SQL Server]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Postgres]]></category>
		<category><![CDATA[VCFA]]></category>
		<guid isPermaLink="false">https://cormachogan.com/?p=32816</guid>

					<description><![CDATA[<p>It gives me great pleasure to announce the availability of Data Services Manger version 9.1. This releases sees a new data service, Microsoft SQL Server, now included in Data Services Manager. I know many of our customers are anticipating this data service, so it is great to finally announce it. The Data Services Manager 9.1 release also brings tighter integration with VMware Cloud Foundation (VCF) version 9.1 and VCF Automation version 9.1.  Both of these exciting features will be covered in deep-dive posts over the coming weeks, but today, I want this post to briefly highlight all of the new&#8230;</p>
<p>The post <a href="https://cormachogan.com/2026/05/07/announcing-data-services-manager-version-9-1/">Announcing Data Services Manager 9.1</a> appeared first on <a href="https://cormachogan.com">CormacHogan.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class=" wp-image-30383 alignleft" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=151%2C122&#038;ssl=1" alt="" width="151" height="122" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=1024%2C831&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=300%2C244&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=768%2C623&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=769%2C624&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?w=1386&amp;ssl=1 1386w" sizes="auto, (max-width: 151px) 100vw, 151px" /></a>It gives me great pleasure to announce the availability of Data Services Manger version 9.1. This releases sees a new data service, Microsoft SQL Server, now included in Data Services Manager. I know many of our customers are anticipating this data service, so it is great to finally announce it. The Data Services Manager 9.1 release also brings tighter integration with VMware Cloud Foundation (VCF) version 9.1 and VCF Automation version 9.1.  Both of these exciting features will be covered in deep-dive posts over the coming weeks, but today, I want this post to briefly highlight all of the new functionality that is now available in Data Services Manager 9.1.</p>
<h2>Introducing a new data service &#8211; Microsoft SQL Server</h2>
<p style="text-align: justify;">With Data Services Manager version 9.1, we can now offer <strong>Microsoft SQL Server</strong> as a service, alongside our existing PostgreSQL &amp; MySQL services. Without going into too much detail, the following functionality is now available with this new service:</p>
<ul>
<li>Fleet Management for SQL Server Instances/Engines and SQL Server Databases</li>
<li>AlwaysOn Availability Groups (AAG) for high availability</li>
<li>Configurable Custom Certificates for secure communication</li>
<li>Automated Backup Schedules with Point In Time (PIT) Restores</li>
<li>Configurable Maintenance Windows for staged (out of hours) updates</li>
<li>Automated Active Directory integration for DSM provisioned SQL Server Instances</li>
<li>Automated DNS updates with FDQN of DSM provisioned SQL Server Instances</li>
<li>Windows Authentication and SQL Server Authentication supported</li>
<li>Support for Advanced Configuration Settings, Collation &amp; Auditing</li>
<li>SQL Server Agent support with job scheduling</li>
<li>Easy Clone and Restore of databases using UI and/or API with YAML manifests</li>
<li>Easy Connect to the Database with Connection String</li>
<li>Configurable metrics forwarding to VCF Operations and Prometheus</li>
<li>Configurable log shipping to VCF Operations for Logs and other endpoints</li>
<li>Fully integrated with VCF Automation providing multi-tenancy controls</li>
</ul>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/04/create-ms-sql-engine.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32826" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/04/create-ms-sql-engine-1024x665.png?resize=769%2C499&#038;ssl=1" alt="" width="769" height="499" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/04/create-ms-sql-engine.png?resize=1024%2C665&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/04/create-ms-sql-engine.png?resize=300%2C195&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/04/create-ms-sql-engine.png?resize=768%2C499&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/04/create-ms-sql-engine.png?resize=769%2C499&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/04/create-ms-sql-engine.png?w=1298&amp;ssl=1 1298w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">And, in case you missed it, this data service runs within containers SQL Server on Linux to provide a standardised database-as-a-service environment. It has no dependency on an underlying Windows OS or associated Windows OS licensing which will be a significant saving to many of our customers. A special word of thanks must go to our design partners who helped us to get this service enterprise-ready.</p>
<h2>Improvements to the existing PostgreSQL data service</h2>
<p style="text-align: justify;">Data Services Manager version 9.1 introduces a new availability enhancement for PostgreSQL databases. The 9.1 version now supports restoring PostgreSQL clusters from a backup that was generated by a different Data Services Manager instance. In other words, Data Services Manager can now do cross-instance S3 restores, which is extremely useful should a Disaster Recovery (DR) type event scenario occur in your organization.</p>
<h2>Improvements to the existing MySQL data service</h2>
<p id="id-2c891da9-de44-4342-8f5b-20129323688c" class="p" style="text-align: justify;">Most of you will be familiar with vSAN, and more recently, the greatly improved vSAN Express Storage Architecture (ESA). One of the relatively recent enhancements to vSAN ESA is the introduction of enhanced linked clones and snapshots technologies. This creates storage-efficient thin volume copies on vSAN ESA datastores. In Data Services Manager version 9.1, MySQL databases now support snapshot creation on vSAN ESA, and can then use fast database cloning functionality with zero downtime to create copies of the existing database.</p>
<p style="text-align: justify;">This snapshot functionality requires that the MySQL databases use a Supervisor Namespace Infra Policy. The snapshot controls are not yet plumbed up into the data services section of the VCF Automation UI for end-users to consume directly. However it is possible to leverage the API to create snapshots, and clone databases from the resulting snapshots. Since these functions are available in the API, they can be built into <a href="https://cormachogan.com/2025/10/23/dsm-9-0-1-using-vcfa-blueprints-to-provision-databases/" target="_blank" rel="noopener">VCF Automation Blueprints</a> and hosted in a catalog. This allows your users to leverage the functionality with a few clicks. Here is an example of a snapshot taken of a running MySQL database:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-mysql-snapshots.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32834 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-mysql-snapshots.png?resize=769%2C92&#038;ssl=1" alt="" width="769" height="92" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-mysql-snapshots.png?resize=1024%2C122&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-mysql-snapshots.png?resize=300%2C36&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-mysql-snapshots.png?resize=768%2C91&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-mysql-snapshots.png?resize=1536%2C182&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-mysql-snapshots.png?resize=769%2C91&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/1.-mysql-snapshots.png?w=1675&amp;ssl=1 1675w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">And from this snapshot, a linked clone can be made to create a brand new database. Note the new Linked Clone type shown in the Data Services Manager portal for such a deployment:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-linked-clone.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32835" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-linked-clone.png?resize=769%2C152&#038;ssl=1" alt="" width="769" height="152" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-linked-clone.png?resize=1024%2C202&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-linked-clone.png?resize=300%2C59&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-linked-clone.png?resize=768%2C151&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-linked-clone.png?resize=1536%2C303&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-linked-clone.png?resize=769%2C151&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/05/2.-linked-clone.png?w=1650&amp;ssl=1 1650w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">This is a nice VCF 9.1 addition for both vSAN ESA and Data Services Manager customers.</p>
<h2>VCF Automation integration</h2>
<p style="text-align: justify;">DSM 9.1 brings a lot of &#8220;fit &amp; finish&#8221; to the VCF Automation integration. All three data services &#8211; PostgreSQL, MySQL and SQL Server &#8211; are now plumbed up for selection in the Org portal for tenants who have been granted permission to provision databases. Data Service Policies have also been improved so that Provider Administrators can now have more granular control over how organisations provision databases. Again, this is an area I will visit in greater detail in future blog posts, especially the integration with SQL Server, but for now I just wanted to highlight that all data services are available in VCF Automation, as shown below.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/04/VCFA-9.1-database-services.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-full wp-image-32820" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/04/VCFA-9.1-database-services.png?resize=769%2C122&#038;ssl=1" alt="" width="769" height="122" /></a></p>
<h2>Onboarding existing databases into DSM</h2>
<p style="text-align: justify;">This is a feature that many customers have been asking for some time. The Data Services Manager 9.1 release includes documented, supported workflows for onboarding existing unmanaged databases into Data Services Manager. This is great news for customers who are already suffering from data sprawl, but also customers who want to have a more holistic way of managing their databases. Now they can just bring them into Data Services Manager and manage them as part of their overall fleet of databases.</p>
<h2>Summary</h2>
<p style="text-align: justify;">All in all, this is a great release for Data Services Manager customers. The long awaited SQL Server data services is now generally available, and can be consumed through both the DSM appliance portal or consumed via VCF Automation. And alongside SQL Server integration with VCF Automation, there is also full integration for both PostgreSQL and MySQL. Data Services Policies in VCF Automation have also been greatly extended, giving the Provider Administrators much more control over the data services offered to their tenants.</p>
<p>The post <a href="https://cormachogan.com/2026/05/07/announcing-data-services-manager-version-9-1/">Announcing Data Services Manager 9.1</a> appeared first on <a href="https://cormachogan.com">CormacHogan.com</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cormachogan.com/2026/05/07/announcing-data-services-manager-version-9-1/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">32816</post-id>	</item>
		<item>
		<title>VMware TAM Services &#8211; Data Services Manager 9.0.2 Update (Video)</title>
		<link>https://cormachogan.com/2026/02/25/vmware-tam-service-data-services-manager-9-0-2-update-video/</link>
					<comments>https://cormachogan.com/2026/02/25/vmware-tam-service-data-services-manager-9-0-2-update-video/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Cormac]]></dc:creator>
		<pubDate>Wed, 25 Feb 2026 09:30:22 +0000</pubDate>
				<category><![CDATA[Data Services Manager]]></category>
		<category><![CDATA[VCF Automation]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[VMware Cloud Foundation (VCF)]]></category>
		<category><![CDATA[DSM]]></category>
		<category><![CDATA[DSM 9.0.2]]></category>
		<category><![CDATA[TAM]]></category>
		<category><![CDATA[VCFA]]></category>
		<category><![CDATA[YouTube]]></category>
		<guid isPermaLink="false">https://cormachogan.com/?p=32808</guid>

					<description><![CDATA[<p>A very quick message to let you know that I was recently invited to present on VMware Data Services Manager (DSM) by our VMware TAM (Technical Account Manager) Services team. In the video, I provide an update to our TAM customers on our current DSM version 9.0.2, and give some insight into our latest tech preview of the Microsoft SQL Server DBaaS service as well as a demonstration on how our full integration of DSM into VMware Cloud Foundation 9.x and VCF Automation is progressing. Hope you find it useful and informative. Feel free to reach out to me via&#8230;</p>
<p>The post <a href="https://cormachogan.com/2026/02/25/vmware-tam-service-data-services-manager-9-0-2-update-video/">VMware TAM Services &#8211; Data Services Manager 9.0.2 Update (Video)</a> appeared first on <a href="https://cormachogan.com">CormacHogan.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="wp-image-30393 alignleft" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?resize=150%2C151&#038;ssl=1" alt="" width="150" height="151" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?w=787&amp;ssl=1 787w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?resize=298%2C300&amp;ssl=1 298w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?resize=768%2C773&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-vintage.jpg?resize=769%2C774&amp;ssl=1 769w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a>A very quick message to let you know that I was recently invited to present on VMware Data Services Manager (DSM) by our VMware TAM (Technical Account Manager) Services team. In the video, I provide an update to our TAM customers on our current DSM version 9.0.2, and give some insight into our latest tech preview of the Microsoft SQL Server DBaaS service as well as a demonstration on how our full integration of DSM into VMware Cloud Foundation 9.x and VCF Automation is progressing. Hope you find it useful and informative. Feel free to reach out to me via the blog comments if you have any questions.</p>
<p style="text-align: center;"><iframe loading="lazy" title="YouTube video player" src="https://www.youtube.com/embed/ak9zDAZUiBo?si=RsYzdv3H93dtfc4A" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>The post <a href="https://cormachogan.com/2026/02/25/vmware-tam-service-data-services-manager-9-0-2-update-video/">VMware TAM Services &#8211; Data Services Manager 9.0.2 Update (Video)</a> appeared first on <a href="https://cormachogan.com">CormacHogan.com</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cormachogan.com/2026/02/25/vmware-tam-service-data-services-manager-9-0-2-update-video/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">32808</post-id>	</item>
		<item>
		<title>DSM 9.0.2 &#8211; Aria Automation plugin changes to support new RBAC features</title>
		<link>https://cormachogan.com/2026/01/23/dsm-9-0-2-aria-automation-plugin-changes-to-support-new-rbac-features/</link>
		
		<dc:creator><![CDATA[Cormac]]></dc:creator>
		<pubDate>Fri, 23 Jan 2026 14:00:40 +0000</pubDate>
				<category><![CDATA[Aria Automation]]></category>
		<category><![CDATA[Data Services Manager]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[Data Services Manager. DSM]]></category>
		<guid isPermaLink="false">https://cormachogan.com/?p=32685</guid>

					<description><![CDATA[<p>VMware Data Service Manager 9.0.2.0 has achieved General Availability (GA) status, and is now readily accessible from the Broadcom Download Portal. You can see the full DSM 9.0.2 release notes here. In this post, I want to revisit our efforts to integrate DSM with Aria Automation. It is true to say that most of our efforts are going into integrating VMware Data Services Manager 9.x with VMware Cloud Foundation Automation 9.x. However, many customer are still on their journey to VCF 9.x, and continue to use earlier versions of our products.  One such product that our customers are still using&#8230;</p>
<p>The post <a href="https://cormachogan.com/2026/01/23/dsm-9-0-2-aria-automation-plugin-changes-to-support-new-rbac-features/">DSM 9.0.2 &#8211; Aria Automation plugin changes to support new RBAC features</a> appeared first on <a href="https://cormachogan.com">CormacHogan.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="wp-image-30383 alignleft" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=250%2C203&#038;ssl=1" alt="" width="250" height="203" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=1024%2C831&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=300%2C244&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=768%2C623&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=769%2C624&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?w=1386&amp;ssl=1 1386w" sizes="auto, (max-width: 250px) 100vw, 250px" /></a><b>VMware Data Service Manager 9.0.2.0 </b>has achieved General Availability (GA) status, and is now readily accessible from the Broadcom Download Portal. You can see the <a href="https://techdocs.broadcom.com/us/en/vmware-cis/dsm/data-services-manager/9-0/release-notes/vmware-data-services-manager-902-release-notes.html" target="_blank" rel="noopener">full DSM 9.0.2 release notes here</a>. In this post, I want to revisit our efforts to integrate DSM with Aria Automation. It is true to say that most of our efforts are going into integrating VMware Data Services Manager 9.x with VMware Cloud Foundation Automation 9.x. However, many customer are still on their journey to VCF 9.x, and continue to use earlier versions of our products.  One such product that our customers are still using Aria Automation. To accommodate these customers, the DSM team has developed a plugin for Aria Automation. This enables our customers and their users to provision databases, on demand, from the Aria Automation Service Broker catalog, giving all of the added benefits associated with DSM provisioned databases (automated backups, lifecycle management, certificate management, etc). I have blogged about earlier versions of this integration with Aria Automation in the past, <a href="https://cormachogan.com/2025/03/14/vmware-data-services-manager-2-2-1-and-aria-automation-enhancements/" target="_blank" rel="noopener">as you can see here</a>, but there have been some important <a href="https://cormachogan.com/2025/10/02/dsm-9-0-1-new-rbac-features/" target="_blank" rel="noopener">changes to the DSM RBAC</a> (Role Based Access Control) in recent releases which required an update to the DSM plugin for Aria Automation. In a nutshell, the new RBAC  feature introduces the concepts of namespaces and Data Service Policies into native DSM. In the past, databases were provisioned to a &#8216;default&#8217; namespace. Now they are provisioned to the namespace with which the user/database owner is associated. The namespace &amp; Data Service Policy control which users are allowed to access which data services and versions, and which vSphere resources to consume when they provision the data services. Essentially we are aligning the standalone DSM with the RBAC found in VCF Automation. Let&#8217;s see what those changes are next, and how they affect the integration of the DSM plugin in Aria Automation.</p>
<h2>Prepping DSM for Aria Automation integration</h2>
<p style="text-align: justify;">Let&#8217;s say, for example, I want my user <em>dragomir</em> to deploy certain versions of Postgres databases to the <em>engineering-ns</em> namespace, my user <em>christos</em> deploy certain versions of Postgres databases in the <em>sales-ns</em> namespace and my user <em>paudie</em> to deploy certain versions of Postgres databases to the <em>marketing-ns</em>. I want to achieve this via requests to provision a DBaaS catalog item in my Aria Automation Service Broker. The steps to implement this in DSM by a DSM administrator would be:</p>
<ol>
<li style="text-align: justify;">Assuming that these are Active Directory users, enable Directory Services in DSM &amp; import the different AD groups (engineering, marketing, sales) containing the users into DSM as Directory Service Groups under Permissions. Alternatively, you could use local users in DSM if you wish.</li>
<li style="text-align: justify;">Create different namespaces for the different groups of users (engineering, marketing, sales) and, if using Active Directory, add the appropriate Directory Service Group to the namespace.</li>
<li style="text-align: justify;">Create Data Service Policies which associates the different namespaces with the permissions to provision data services. Choose the data service, which versions of service the users/groups are allowed to provision, select the appropriate infrastructure policies, select appropriate backup locations, etc.</li>
</ol>
<p style="text-align: justify;">For the purposes of this post, I have the following AD users configured in DSM:</p>
<table style="border-collapse: collapse; width: 100%; height: 100px;">
<tbody>
<tr style="height: 25px;">
<td style="width: 19.3405%; height: 25px;"><strong>Username</strong></td>
<td style="width: 17.9936%; height: 25px;"><strong>DSM Namespace</strong></td>
<td style="width: 29.3325%;"><strong>Directory Service / AD Group</strong></td>
</tr>
<tr style="height: 25px;">
<td style="width: 19.3405%; height: 25px;">dragomir</td>
<td style="width: 17.9936%; height: 25px;">engineering-ns</td>
<td style="width: 29.3325%;">DSMUsers-Engineering</td>
</tr>
<tr style="height: 25px;">
<td style="width: 19.3405%; height: 25px;">paudie</td>
<td style="width: 17.9936%; height: 25px;">marketing-ns</td>
<td style="width: 29.3325%;">DSMUsers-Marketing</td>
</tr>
<tr style="height: 25px;">
<td style="width: 19.3405%; height: 25px;">christos</td>
<td style="width: 17.9936%; height: 25px;">sales-ns</td>
<td style="width: 29.3325%;">DSMUsers-Sales</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">Checking Active Directory &#8211; Users and Computers for <em>dragomir</em>, I can see here is in the correct AD group, <strong>DSMUsers-Engineering</strong>:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/dragomir-eng.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32745 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/dragomir-eng.png?resize=412%2C233&#038;ssl=1" alt="" width="412" height="233" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/dragomir-eng.png?w=412&amp;ssl=1 412w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/dragomir-eng.png?resize=300%2C170&amp;ssl=1 300w" sizes="auto, (max-width: 412px) 100vw, 412px" /></a></p>
<p style="text-align: justify;">By checking the DSM Portal as a DSM Admin, I can also verify that the DSMUsers-Engineering AD Group has been added to the <em>engineering-ns</em> namespace in DSM:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/engineering-ns-ad-group.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32746 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/engineering-ns-ad-group.png?resize=769%2C212&#038;ssl=1" alt="" width="769" height="212" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/engineering-ns-ad-group.png?resize=1024%2C282&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/engineering-ns-ad-group.png?resize=300%2C83&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/engineering-ns-ad-group.png?resize=768%2C211&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/engineering-ns-ad-group.png?resize=769%2C212&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/engineering-ns-ad-group.png?w=1402&amp;ssl=1 1402w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Lastly, we can check the Data Service Policy that <em>engineering-ns</em> has been added to. This makes the relationship between the users/namespace and the data services and versions that they are allowed to provision. Here is a snippet of the DSP, showing that we are granting the members of the <em>engineering-ns</em> the ability to provision versions 16 &amp; 17 of Postgres.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/dragomir-dsp.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32754" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/dragomir-dsp.png?resize=769%2C386&#038;ssl=1" alt="" width="769" height="386" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/dragomir-dsp.png?resize=1024%2C514&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/dragomir-dsp.png?resize=300%2C151&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/dragomir-dsp.png?resize=768%2C386&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/dragomir-dsp.png?resize=769%2C386&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/dragomir-dsp.png?w=1402&amp;ssl=1 1402w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p>The relationship between Data Service Policy and Namespace can be shown as the following:</p>
<table style="border-collapse: collapse; width: 100%; height: 100px;">
<tbody>
<tr style="height: 25px;">
<td style="width: 7.11701%; height: 25px;"><strong>Username</strong></td>
<td style="width: 15.1085%; height: 25px;"><strong>DSM Namespace</strong></td>
<td style="width: 15.1085%;"><strong>Data Service Policy</strong></td>
</tr>
<tr style="height: 25px;">
<td style="width: 7.11701%; height: 25px;">dragomir</td>
<td style="width: 15.1085%; height: 25px;">engineering-ns</td>
<td style="width: 15.1085%;">pg-on-engineering-ns</td>
</tr>
<tr style="height: 25px;">
<td style="width: 7.11701%; height: 25px;">paudie</td>
<td style="width: 15.1085%; height: 25px;">marketing-ns</td>
<td style="width: 15.1085%;">pg-on-marketing-ns</td>
</tr>
<tr style="height: 25px;">
<td style="width: 7.11701%; height: 25px;">christos</td>
<td style="width: 15.1085%; height: 25px;">sales-ns</td>
<td style="width: 15.1085%;">pg-on-sales-ns</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">At this point the DSM side of things has been setup. Later on, we will see how to add these users to Aria Automation,  give them Service Broker user roles, and assign them as members of a Projects. These steps will allow them to provision databases to their own DSM namespaces through Aria Automation.</p>
<h2>Aria Automation config.yaml changes</h2>
<p style="text-align: justify;">The <em>config.yaml</em>, which contains the configuration setting to integrate DSM with Aria Automation, now contains additional fields to map DSM Namespaces to Aria Automation Projects in version 9.0.2. For my particular setup, I have 3 users in different DSM namespaces that I want to be able to provision databases from Aria Automation. So I will have to create 3 different Projects in Aria Automation to achieve this:</p>
<table style="border-collapse: collapse; width: 100%; height: 100px;">
<tbody>
<tr style="height: 25px;">
<td style="width: 33.3333%; height: 25px;"><strong>Username</strong></td>
<td style="width: 33.3333%; height: 25px;"><strong>DSM Namespace</strong></td>
<td style="width: 33.3333%; height: 25px;"><strong>Aria Automation Project</strong></td>
</tr>
<tr style="height: 25px;">
<td style="width: 33.3333%; height: 25px;">dragomir</td>
<td style="width: 33.3333%; height: 25px;">engineering-ns</td>
<td style="width: 33.3333%; height: 25px;">ENG_DSM_PROJECT</td>
</tr>
<tr style="height: 25px;">
<td style="width: 33.3333%; height: 25px;">paudie</td>
<td style="width: 33.3333%; height: 25px;">marketing-ns</td>
<td style="width: 33.3333%; height: 25px;">MK_DSM_PROJECT</td>
</tr>
<tr style="height: 25px;">
<td style="width: 33.3333%; height: 25px;">christos</td>
<td style="width: 33.3333%; height: 25px;">sales-ns</td>
<td style="width: 33.3333%; height: 25px;">SALES_DSM_PROJECT</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">Here is an example of the config.yaml which has the new <strong>project_to_namespace</strong> entries defined. Note that the DSM plugin for Aria Automation will only create the SVC_DSM_PROJECT referenced in the <em>config.yaml</em> manifest. It does not create the additional projects listed in the project_to_namespace in Aria Automation. These will need to be done manually by an Aria Automation admin after the plugin installer has been run.</p>
<pre><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">---</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">dsm_hostname: 192.168.0.1</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">dsm_user_id: 'dsmadmin@ams.local'</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">dsm_password: 'VMware123!'</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">aria_base_url: https://vra.rainpole.com</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">orchestrator_base_url: https://vra.rainpole.com</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">aria_username: 'cormac'</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">aria_password: 'VMware123!'</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">org_id: 08969e76-5e6c-4581-9cf6-19c06384a9b2</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">blue_print_name: SVC DSM DBaaS</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">abx_action_name: SVC-DSM-DB-crud</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">cr_name: SVC_DSMDB</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">cr_type_name: Custom.DSMDB</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">env_name: SVC_DSM_ENV</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">project_name: SVC_DSM_PROJECT</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">default_namespace: marketing-ns</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">project_to_namespace:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  SVC_DSM_PROJECT: default</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  SALES_DSM_PROJECT: sales-ns</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  ENG_DSM_PROJECT: engineering-ns</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  MK_DSM_PROJECT: marketing-ns</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">skip_certificate_check: 'False'</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">dsm_root_ca: |</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">-----BEGIN CERTIFICATE-----</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">MIIDcDCCAligAwIBAgIGAZrZgFtWMA0GCSqGSIb3DQEBCwUAMFkxCzAJBgNVBAYT</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">AlVTMQwwCgYDVQQKDANEU00xFTATBgNVBAsMDERTTSBQcm92aWRlcjElMCMGCSqG</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">SIb3DQEJARYWZHNtX3N1cHBvcnRAdm13YXJlLmNvbTAgFw0yNTExMjgxMDQwNTla</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">&lt;--snip--&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">GO10PoLXP5MZObWGarfkC/+IgY8=</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">-----END CERTIFICATE-----</span>
</pre>
<p style="text-align: justify;">After the deployment (running the command &#8220;<em>python3 aria.py enable-blueprint-version-2</em>&#8220;), the Aria Automation administrator will have to do the following:</p>
<ol>
<li>Add users to Aria Automation, noting which namespace they have access to in DSM.</li>
<li>Assign these users the service role of Service Broker User</li>
<li>Create projects to match the project_to_namespace</li>
<li>Assign these users as member of their appropriate projects</li>
<li>Create new content sharing policies which grants the projects access to the DSM Content Source</li>
</ol>
<h2>1. Add users to Aria Automation with Service Broker User Role</h2>
<p style="text-align: justify;">In Aria Automation Identity and Access Management, assign the users the role of Service Broker User. This way, they will be able to trigger requests from the Service Broker DBaaS catalog item to provision databases from their own Project. If they have the role of Service Broker Admin, they would be able to see all projects, and would be able to request databases on namespaces which we do not want.  A Service Broker User role means that they only have access to their own project.</p>
<p style="text-align: justify;">Note that there is no automatic correlation here between the DSM users and the Aria Automation users, other than the fact that, in this post, they are the same user in Active Directory (and both DSM and Aria automation support integration with AD). It is up to the Aria and DSM administrators to coordinate the correlation of the user in DSM and the user in Aria Automation to ensure that these users have access to the correct DSM resources.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Service-Broker-Users.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32740 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Service-Broker-Users.png?resize=769%2C320&#038;ssl=1" alt="" width="769" height="320" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Service-Broker-Users.png?resize=1024%2C426&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Service-Broker-Users.png?resize=300%2C125&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Service-Broker-Users.png?resize=768%2C319&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Service-Broker-Users.png?resize=1536%2C639&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Service-Broker-Users.png?resize=769%2C320&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Service-Broker-Users.png?w=1661&amp;ssl=1 1661w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<h2>2. Create Projects as per <strong>project_to_namespace in config.yaml</strong></h2>
<p style="text-align: justify;">With the users configured, we can now login into Aria Automation as admin user, navigate to the Assembler and build the necessary projects that map to the config.yaml entries in <strong>project_to_namespace</strong>. With each project, assign one of the Service Broker users to the appropriate project:</p>
<table style="border-collapse: collapse; width: 100%; height: 100px;">
<tbody>
<tr style="height: 25px;">
<td style="width: 33.3333%; height: 25px; background-color: #000000;"><span style="color: #ffffff;"><strong>Username</strong></span></td>
<td style="width: 33.3333%; height: 25px; background-color: #000000;"><span style="color: #ffffff;"><strong>Aria Automation Project</strong></span></td>
</tr>
<tr style="height: 25px;">
<td style="width: 33.3333%; height: 25px;">dragomir</td>
<td style="width: 33.3333%; height: 25px;">ENG_DSM_PROJECT</td>
</tr>
<tr style="height: 25px;">
<td style="width: 33.3333%; height: 25px;">paudie</td>
<td style="width: 33.3333%; height: 25px;">MK_DSM_PROJECT</td>
</tr>
<tr style="height: 25px;">
<td style="width: 33.3333%; height: 25px;">christos</td>
<td style="width: 33.3333%; height: 25px;">SALES_DSM_PROJECT</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">It should look something like this. Of course, this is a simple example. If you have multiple users in a DSM namespace, these additional users would be added to the same project. To keep things simple, I am using a single user for each.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/new-projects.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32741" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/new-projects.png?resize=769%2C301&#038;ssl=1" alt="" width="769" height="301" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/new-projects.png?resize=1024%2C401&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/new-projects.png?resize=300%2C117&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/new-projects.png?resize=768%2C300&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/new-projects.png?resize=1536%2C601&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/new-projects.png?resize=769%2C301&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/new-projects.png?w=1669&amp;ssl=1 1669w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<h2>3. Create Content Sharing Policy Definitions</h2>
<p style="text-align: justify;">The final step for the administrator is to create new content sharing policies. These grant the projects access to the DSM Content Source so that they can ask DSM to provision databases. Navigate to the Service Broker, and under the Content &amp; Policies tab, select Definitions (under Policies). In this example, I have created 3 policies, one per project. It should also be possible to create a single share and assign it to all projects.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/content-sharing-policy.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32742" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/content-sharing-policy.png?resize=769%2C243&#038;ssl=1" alt="" width="769" height="243" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/content-sharing-policy.png?resize=1024%2C324&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/content-sharing-policy.png?resize=300%2C95&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/content-sharing-policy.png?resize=768%2C243&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/content-sharing-policy.png?resize=1536%2C486&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/content-sharing-policy.png?resize=769%2C243&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/content-sharing-policy.png?w=1657&amp;ssl=1 1657w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">And that completes the setup in Aria Automation. We can now go ahead and check if it possible to deploy a Postgres database as user <em>dragomir</em> from Aria Automation, and verify that it lands in the <em>engineering-ns</em> namespace in DSM.</p>
<h2>Deploy a database via the Service Broker catalog</h2>
<p style="text-align: justify;">Begin by logging is to Aria Automation as the user &#8216;<em>dragomir</em>&#8216;. As per the assigned role of Service Broker user, <em>dragomir</em> can only see the Service Broker service.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-sb01.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32748 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-sb01.png?resize=769%2C148&#038;ssl=1" alt="" width="769" height="148" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-sb01.png?resize=1024%2C197&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-sb01.png?resize=300%2C58&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-sb01.png?resize=768%2C148&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-sb01.png?resize=769%2C148&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-sb01.png?w=1354&amp;ssl=1 1354w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Clicking on the Service Broker, and then navigating to the Catalog, <em>dragomir</em> should only see a single item in the catalog, and that item should show that it is associated with only a single project, the ENG_DSM_PROJECT. So far, this looks like it is achieving our goal and &#8216;guard-railing&#8217; the user <em>dragomir</em> into using the correct vSphere resources for data services, as defined by the Data Service Policy that is associated with the namespace where user <em>dragomir</em> resides on DSM.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-catalog-02.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32749 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-catalog-02.png?resize=769%2C316&#038;ssl=1" alt="" width="769" height="316" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-catalog-02.png?resize=1024%2C421&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-catalog-02.png?resize=300%2C123&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-catalog-02.png?resize=768%2C316&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-catalog-02.png?resize=769%2C316&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-catalog-02.png?w=1354&amp;ssl=1 1354w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Let&#8217;s validate this by making a request to provision a database. The only project available for selection in ENG_DSM_PROJECT, which is correct. Also, the list of available database versions matches those in the Data Service Policy to which the <strong>engineering-ns</strong> has been assigned in DSM. So far, so good. Continue with the deployment of the database.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-req-03.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32750 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-req-03.png?resize=769%2C321&#038;ssl=1" alt="" width="769" height="321" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-req-03.png?resize=1024%2C427&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-req-03.png?resize=300%2C125&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-req-03.png?resize=768%2C321&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-req-03.png?resize=769%2C321&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/drag-req-03.png?w=1356&amp;ssl=1 1356w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Assuming that the deployment of the database is successful, <em>dragomir</em> can drill into the details of the database, and check which namespace was used for this deployment. And it does indeed look like that the deployment has been placed in the correct <em>engineering-ns</em> namespace as defined in the <strong>project_to_namespace </strong>directive in the config.yaml.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/db-details.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32752" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/db-details.png?resize=769%2C458&#038;ssl=1" alt="" width="769" height="458" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/db-details.png?resize=1024%2C610&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/db-details.png?resize=300%2C179&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/db-details.png?resize=768%2C458&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/db-details.png?resize=769%2C458&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/db-details.png?w=1404&amp;ssl=1 1404w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p>We can verify the same from the DSM Portal. Login as user <em>dragomir</em>, who we have seen has been added to the <em>engineering-ns</em> and check if the database is present. Since <em>dragomir</em> is a DSM user, a result of adding the DSMUsers-Engineering Directory Service Group in the Permissions section of DSM, he can access the UI.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/dragomir-dsm-db.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32753" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/dragomir-dsm-db.png?resize=769%2C242&#038;ssl=1" alt="" width="769" height="242" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/dragomir-dsm-db.png?resize=1024%2C322&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/dragomir-dsm-db.png?resize=300%2C94&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/dragomir-dsm-db.png?resize=768%2C241&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/dragomir-dsm-db.png?resize=769%2C242&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/dragomir-dsm-db.png?w=1403&amp;ssl=1 1403w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;"><strong>Success</strong>. We have achieved our goal of integrating Aria Automation with the new RBAC features of DSM, and the relevant Data Service Policy controlling which users can provision which data services into which namespaces on DSM.</p>
<p>The post <a href="https://cormachogan.com/2026/01/23/dsm-9-0-2-aria-automation-plugin-changes-to-support-new-rbac-features/">DSM 9.0.2 &#8211; Aria Automation plugin changes to support new RBAC features</a> appeared first on <a href="https://cormachogan.com">CormacHogan.com</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">32685</post-id>	</item>
		<item>
		<title>DSM 9.0.2 &#8211; New Microsoft SQL Server Enhancements &#8211; SQL Server Agent Support</title>
		<link>https://cormachogan.com/2026/01/21/dsm-9-0-2-new-microsoft-sql-server-enhancements-sql-server-agent-support/</link>
		
		<dc:creator><![CDATA[Cormac]]></dc:creator>
		<pubDate>Wed, 21 Jan 2026 14:00:48 +0000</pubDate>
				<category><![CDATA[Data Services Manager]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[VMware Cloud Foundation (VCF)]]></category>
		<category><![CDATA[vSphere]]></category>
		<category><![CDATA[Data Services Manager. DSM]]></category>
		<category><![CDATA[Microsoft SQL Server]]></category>
		<category><![CDATA[SQL Server Agent]]></category>
		<guid isPermaLink="false">https://cormachogan.com/?p=32654</guid>

					<description><![CDATA[<p>VMware Data Service Manager 9.0.2.0 has achieved General Availability (GA) status, and is now readily accessible from the Broadcom Download Portal. You can see the full DSM 9.0.2 release notes here. In this post, I want to revisit our efforts to deliver a Microsoft SQL Server data service. As mentioned in a number of previous posts, we continue to work towards a fully supported Microsoft SQL Server data service in DSM. And whilst we do not have a generally available, supported release of this service in DSM version 9.0.2, we have made some significant enhancements once again in this release.&#8230;</p>
<p>The post <a href="https://cormachogan.com/2026/01/21/dsm-9-0-2-new-microsoft-sql-server-enhancements-sql-server-agent-support/">DSM 9.0.2 &#8211; New Microsoft SQL Server Enhancements &#8211; SQL Server Agent Support</a> appeared first on <a href="https://cormachogan.com">CormacHogan.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="wp-image-30383 alignleft" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=151%2C122&#038;ssl=1" alt="" width="151" height="122" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=1024%2C831&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=300%2C244&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=768%2C623&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?resize=769%2C624&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2023/01/dsm-logo-icon.png?w=1386&amp;ssl=1 1386w" sizes="auto, (max-width: 151px) 100vw, 151px" /></a><b>VMware Data Service Manager 9.0.2.0 </b>has achieved General Availability (GA) status, and is now readily accessible from the Broadcom Download Portal. You can see the <a href="https://techdocs.broadcom.com/us/en/vmware-cis/dsm/data-services-manager/9-0/release-notes/vmware-data-services-manager-902-release-notes.html" target="_blank" rel="noopener">full DSM 9.0.2 release notes here</a>. In this post, I want to revisit our efforts to deliver a Microsoft SQL Server data service. As mentioned in a number of previous posts, we continue to work towards a fully supported Microsoft SQL Server data service in DSM. And whilst we do not have a generally available, supported release of this service in DSM version 9.0.2, we have made some significant enhancements once again in this release. In this version of DSM, we introduce support for SQL Server Agent. Many of our customers who have been participating in the design of this service have shared with us the importance of having SQL Server Agent support. It is a common way to run and schedule tasks on the instance and databases. In this post, I will show you how you can pass configuration parameters to the SQL Server Agent when provisioning a SQL Server instance via Data Services Manager. Then we can look at how we can use it run run and also schedule some jobs.</p>
<h2>The story so far &#8230;</h2>
<p style="text-align: justify;">By way of a recap, here is what we have delivered so far for the beta versions of MS SQL Server DSM data service:</p>
<ul style="text-align: justify;">
<li style="text-align: justify;"><a href="https://cormachogan.com/2025/06/20/microsoft-sql-server-now-tech-preview-in-data-services-manager-9-0/" target="_blank" rel="noopener">Click here</a> for an overview of the original MS SQL Server tech preview release back in DSM 9.0.0.</li>
<li style="text-align: justify;"><a href="https://cormachogan.com/2025/10/06/dsm-9-0-1-new-microsoft-sql-server-enhancements-part-1/" target="_blank" rel="noopener">Click here</a> and <a href="https://cormachogan.com/2025/10/08/dsm-9-0-1-new-microsoft-sql-server-enhancements-part-2/" target="_blank" rel="noopener">here</a> for an overview of the MS SQL Server enhancements made in DSM 9.0.1, which include automated Active Directory integration and automatic DNS updates for MS SQL Server instances. This release also introduced an overview of the new RBAC mechanism based on Data Services Policies. These policies control user access to data services and resources.</li>
</ul>
<h2>Deploy MS SQL Server instance and user database</h2>
<p style="text-align: justify;">Let&#8217;s now take a look at the new SQL Server Agent support. I have already configured an Active Directory Domain for DSM. This allows me to create a privileged AD user account which can write SPNs (servicePrincipalNames). This in turn allows DSM to enable Windows Authentication for MS SQL Server database users. See the DSM 9.0.1 blog post mentioned previously for further details on this cool feature.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.1-mssql-ad-domain.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32656 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.1-mssql-ad-domain.png?resize=769%2C278&#038;ssl=1" alt="" width="769" height="278" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.1-mssql-ad-domain.png?resize=1024%2C370&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.1-mssql-ad-domain.png?resize=300%2C109&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.1-mssql-ad-domain.png?resize=768%2C278&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.1-mssql-ad-domain.png?resize=769%2C278&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.1-mssql-ad-domain.png?w=1114&amp;ssl=1 1114w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Next, we create an MS SQL Server instance or engine. I won&#8217;t repeat the steps here as they are very similar to how it is done in DSM version 9.0.1. However, there is a new section to enable SQL Server Agent. It also includes some configuration parameter around Job History when enabled. Later, we will create a job to see this in action.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.2-mssql-agent-config.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32657 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.2-mssql-agent-config.png?resize=769%2C388&#038;ssl=1" alt="" width="769" height="388" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.2-mssql-agent-config.png?resize=1024%2C517&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.2-mssql-agent-config.png?resize=300%2C152&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.2-mssql-agent-config.png?resize=768%2C388&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.2-mssql-agent-config.png?resize=769%2C389&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.2-mssql-agent-config.png?w=1221&amp;ssl=1 1221w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Wait for the SQL Server instance to come online, verifying that Active Directory integration and automatic DNS updates are working correctly. This creates 4 System Databases on the MS SQL Server instance; master, model, msdb and tempdb. These are only accessible with administrator privileges. The details are available to the DSM admin when they view the summary page of the MS SQL Server instance, including a full connection string.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.3-mssql-instance.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32658 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.3-mssql-instance.png?resize=769%2C267&#038;ssl=1" alt="" width="769" height="267" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.3-mssql-instance.png?resize=1024%2C356&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.3-mssql-instance.png?resize=300%2C104&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.3-mssql-instance.png?resize=768%2C267&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.3-mssql-instance.png?resize=769%2C268&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.3-mssql-instance.png?w=1164&amp;ssl=1 1164w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">With the instance successfully deployed, we can create a user database on the instance. I am going to include a Windows Principal so that the user can use Windows Authentication to access the database. the format is &#8216;domain-name\user-name&#8217;.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.4.-Windows-Auth.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32659 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.4.-Windows-Auth.png?resize=769%2C445&#038;ssl=1" alt="" width="769" height="445" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.4.-Windows-Auth.png?resize=1024%2C593&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.4.-Windows-Auth.png?resize=300%2C174&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.4.-Windows-Auth.png?resize=768%2C445&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.4.-Windows-Auth.png?resize=769%2C445&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.4.-Windows-Auth.png?w=1245&amp;ssl=1 1245w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p>After a few moment, the database will be online.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.5-mssql-database.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32660 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.5-mssql-database.png?resize=769%2C289&#038;ssl=1" alt="" width="769" height="289" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.5-mssql-database.png?resize=1024%2C385&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.5-mssql-database.png?resize=300%2C113&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.5-mssql-database.png?resize=768%2C289&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.5-mssql-database.png?resize=769%2C289&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/0.5-mssql-database.png?w=1077&amp;ssl=1 1077w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Now we can begin to look at the SQL Server Agent configuration and how we can use it to run some jobs.</p>
<h2>Verify SQL Server Agent functionality</h2>
<p style="text-align: justify;">As part of this post, I am going to use some of the very popular scripts created by <strong>Ola Hallengren</strong>. The scripts are available here: <a href="https://ola.hallengren.com/downloads.html" target="_blank" rel="noopener">https://ola.hallengren.com/downloads.html</a>. In particular, I will look at the stored procedures that does database integrity checks. This is a stored procedure which we will install on the user database. First, we must installed another required stored procedure called <strong>CommandExecute.sql</strong>. We also need to run a script called <strong>CommandLog.sql </strong>to create a required table within the user database. Now we can run the <strong>DatabaseIntegrityCheck.sql</strong> stored procedure. Once this is completed, we can run the database integrity check.</p>
<p style="text-align: justify;">After confirming that the stored procedure is working, we can then build a SQL Server Agent job to run the database integrity check, and modify the job to include a daily schedule to run it on a regular basis.</p>
<p style="text-align: justify;">I am first going to login to the SQL Server as an administrator. The Admin login and password can be retrieved from the DSM UI, in the Summary view of the database instance.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-mssql-instance-view-dsm-ui.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32663 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-mssql-instance-view-dsm-ui.png?resize=769%2C246&#038;ssl=1" alt="" width="769" height="246" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-mssql-instance-view-dsm-ui.png?resize=1024%2C327&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-mssql-instance-view-dsm-ui.png?resize=300%2C96&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-mssql-instance-view-dsm-ui.png?resize=768%2C245&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-mssql-instance-view-dsm-ui.png?resize=769%2C246&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-mssql-instance-view-dsm-ui.png?w=1478&amp;ssl=1 1478w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Use this to login to the MS SQL Server Management Studio (SSMS) using SQL Server Authentication:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/01-login-with-fqdn.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32761 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/01-login-with-fqdn.png?resize=518%2C351&#038;ssl=1" alt="" width="518" height="351" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/01-login-with-fqdn.png?w=518&amp;ssl=1 518w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/01-login-with-fqdn.png?resize=300%2C203&amp;ssl=1 300w" sizes="auto, (max-width: 518px) 100vw, 518px" /></a></p>
<p style="text-align: justify;">Let&#8217;s first check that the SQL Server Agent is running by opening a new query and running the following:</p>
<pre><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="token keyword">SELECT</span><span class=""> status_desc </span><span class="token keyword">FROM</span><span class=""> sys</span><span class="token punctuation">.</span><span class="">dm_server_services </span><span class="token keyword">WHERE</span><span class=""> servicename </span><span class="token operator">LIKE</span> <span class="token string">'SQL Server Agent%'</span><span class="token punctuation">;</span> </span></pre>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/02-sqlagentstatus.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32762 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/02-sqlagentstatus.png?resize=769%2C243&#038;ssl=1" alt="" width="769" height="243" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/02-sqlagentstatus.png?resize=1024%2C324&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/02-sqlagentstatus.png?resize=300%2C95&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/02-sqlagentstatus.png?resize=768%2C243&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/02-sqlagentstatus.png?resize=769%2C243&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/02-sqlagentstatus.png?w=1129&amp;ssl=1 1129w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">It appears to be running as expected. We can also check that the configuration values provided via the DSM UI for the SQL Server Agent have been implemented via the following command:</p>
<div data-hasbody="true" data-macro-name="code">
<div>
<pre><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">EXEC msdb.dbo.sp_get_sqlagent_properties; </span></pre>
</div>
</div>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/03-sqlagentsprops.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32763 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/03-sqlagentsprops.png?resize=769%2C209&#038;ssl=1" alt="" width="769" height="209" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/03-sqlagentsprops.png?resize=1024%2C278&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/03-sqlagentsprops.png?resize=300%2C81&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/03-sqlagentsprops.png?resize=768%2C208&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/03-sqlagentsprops.png?resize=769%2C208&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/03-sqlagentsprops.png?w=1350&amp;ssl=1 1350w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">The max and min values of 1500 and 150 match the values that I provided during the deployment. So far, so good. Let&#8217;s now add the stored procedures on the user database for the integrity check.</p>
<h2>Create Stored Procedure to do Database Integrity Checks</h2>
<p style="text-align: justify;">To add a stored procedure, select the user database (cormacdb01), and under Programmability, click on Stored Procedure &gt; New &gt; Stored Procedure, as shown below.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/04-storedprocs.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32764 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/04-storedprocs.png?resize=595%2C417&#038;ssl=1" alt="" width="595" height="417" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/04-storedprocs.png?w=595&amp;ssl=1 595w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/04-storedprocs.png?resize=300%2C210&amp;ssl=1 300w" sizes="auto, (max-width: 595px) 100vw, 595px" /></a></p>
<p>This will create a stored procedure template:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/6.-stored-proc-template.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32668 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/6.-stored-proc-template.png?resize=693%2C580&#038;ssl=1" alt="" width="693" height="580" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/6.-stored-proc-template.png?w=693&amp;ssl=1 693w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/6.-stored-proc-template.png?resize=300%2C251&amp;ssl=1 300w" sizes="auto, (max-width: 693px) 100vw, 693px" /></a></p>
<p style="text-align: justify;">Replace the content of the stored procedure template with the Ola Hallengren scripts mentioned earlier, and execute them one at a time on the user database. Start with the CommandExecute script to build the CommandExecute procedure.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/04a-CommExec.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32767 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/04a-CommExec.png?resize=769%2C280&#038;ssl=1" alt="" width="769" height="280" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/04a-CommExec.png?resize=1024%2C373&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/04a-CommExec.png?resize=300%2C109&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/04a-CommExec.png?resize=768%2C280&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/04a-CommExec.png?resize=1536%2C560&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/04a-CommExec.png?resize=769%2C280&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/04a-CommExec.png?w=1765&amp;ssl=1 1765w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Next, open execute the CommandLog script to create the CommandLog table.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/CommandLog-SP.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32765 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/CommandLog-SP.png?resize=769%2C367&#038;ssl=1" alt="" width="769" height="367" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/CommandLog-SP.png?resize=1024%2C489&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/CommandLog-SP.png?resize=300%2C143&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/CommandLog-SP.png?resize=768%2C367&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/CommandLog-SP.png?resize=769%2C367&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/CommandLog-SP.png?w=1340&amp;ssl=1 1340w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">And finally execute the DatabaseIntegrityCheck script to create the Database Integrity Check procedure.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/06-dbintegcheck.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32766 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/06-dbintegcheck.png?resize=769%2C386&#038;ssl=1" alt="" width="769" height="386" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/06-dbintegcheck.png?resize=1024%2C514&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/06-dbintegcheck.png?resize=300%2C151&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/06-dbintegcheck.png?resize=768%2C385&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/06-dbintegcheck.png?resize=769%2C386&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/06-dbintegcheck.png?w=1287&amp;ssl=1 1287w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">You can now run a command to verify that the database integrity check procedure is working. You can do this as the database owner, rather than the database admin. Logout from SSMS as the admin. Re-connect to the SSMS using the Windows Credentials of the owner, in this case &#8216;rainpole\cormac&#8217;. This is possible since we have given DSM the ability to automatically enable these logins through a privileged user account (<a href="https://cormachogan.com/2025/10/06/dsm-9-0-1-new-microsoft-sql-server-enhancements-part-1/" target="_blank" rel="noopener">see here</a>) that we referenced when we created the database instance.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/08-correct-windows-login.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32769 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/08-correct-windows-login.png?resize=509%2C337&#038;ssl=1" alt="" width="509" height="337" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/08-correct-windows-login.png?w=509&amp;ssl=1 509w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/08-correct-windows-login.png?resize=300%2C199&amp;ssl=1 300w" sizes="auto, (max-width: 509px) 100vw, 509px" /></a></p>
<p style="text-align: justify;">This user does not have access to any of the System database. The user only has access to its own user database. Since the SMSS connection always defaults to the &#8216;master&#8217; database, we will need to change the database for this user to the user database (cormacdb01).<a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/16.-Connect-to-user-database.png?ssl=1"><br />
<img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-full wp-image-32673" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/16.-Connect-to-user-database.png?resize=492%2C531&#038;ssl=1" alt="" width="492" height="531" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/16.-Connect-to-user-database.png?w=492&amp;ssl=1 492w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/16.-Connect-to-user-database.png?resize=278%2C300&amp;ssl=1 278w" sizes="auto, (max-width: 492px) 100vw, 492px" /></a></p>
<p style="text-align: justify;">Once connected to the database, execute the following query on the user database, which is essentially running the procedure that we added earlier:</p>
<pre><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="token keyword">EXECUTE</span> <span class="token punctuation">[</span><span class="">dbo</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token punctuation">[</span><span class="">DatabaseIntegrityCheck</span><span class="token punctuation">]</span> <span class="token variable">@Databases</span> <span class="token operator">=</span> <span class="token string">'USER_DATABASES'</span><span class="token punctuation">,</span> <span class="token variable">@LogToTable</span> <span class="token operator">=</span> <span class="token string">'Y'</span><span class="token punctuation">;</span> </span></pre>
<p style="text-align: justify;">You should observe the results of the integrity database check appear, reporting any issues with the database integrity:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/09-db-integrity-check.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32770 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/09-db-integrity-check.png?resize=769%2C299&#038;ssl=1" alt="" width="769" height="299" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/09-db-integrity-check.png?resize=1024%2C398&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/09-db-integrity-check.png?resize=300%2C117&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/09-db-integrity-check.png?resize=768%2C298&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/09-db-integrity-check.png?resize=1536%2C597&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/09-db-integrity-check.png?resize=769%2C299&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/09-db-integrity-check.png?w=1765&amp;ssl=1 1765w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<h2>Create a SQL Server Agent Job to do Database Integrity Checks</h2>
<div style="text-align: justify;">A SQL Server Agent can use SQL Server to perform a Job where each Job contains one or more tasks to be performed. These tasks are assigned to what is called a job step.</div>
<p style="text-align: justify;">We will now create a SQL Server Agent job to run the database integrity checks. We can then add a schedule to it so that it checks the database integrity on a daily basis. Log out of the MS SQL Server Management Studio as the current Windows user and back in as the database admin using SQL Auth. Then run the following query to create the job. In the second EXEC, change the database_name to the name of the user database.</p>
<p style="text-align: justify;">In a nutshell, we are creating a job called <strong>indexOptimize</strong>, and adding a step to the job to run the database integrity check on the user database. As this is run on the msdb, a system database, it can only be executed by the database admin.</p>
<pre><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="token keyword">USE</span><span class=""> msdb</span><span class="token punctuation">;</span> 
<span class="token keyword">    EXEC</span><span class=""> msdb</span><span class="token punctuation">.</span><span class="">dbo</span><span class="token punctuation">.</span><span class="">sp_add_job </span><span class="token variable">@job_name</span> <span class="token operator">=</span><span class=""> indexOptimize</span><span class="token punctuation">;</span> 
<span class="token keyword">    EXEC</span><span class=""> msdb</span><span class="token punctuation">.</span><span class="">dbo</span><span class="token punctuation">.</span><span class="">sp_add_jobstep </span><span class="token variable">@job_name</span> <span class="token operator">=</span><span class=""> IndexOptimize</span><span class="token punctuation">,</span> <span class="token variable">@step_name</span> <span class="token operator">=</span><span class=""> IndexOptimize</span><span class="token punctuation">,</span> <span class="token variable">@database_name</span> <span class="token operator">=</span><span class=""> &lt;YOUR_DB_NAME&gt;</span><span class="token punctuation">,</span> <span class="token variable">@subsystem</span> <span class="token operator">=</span><span class=""> N</span><span class="token string">'TSQL'</span><span class="token punctuation">,</span> <span class="token variable">@command</span> <span class="token operator">=</span> <span class="token string">'EXECUTE [dbo].[DatabaseIntegrityCheck] @Databases = ''USER_DATABASES'', @LogToTable = ''Y'';'</span><span class="token punctuation">;</span> 
<span class="token keyword">    EXEC</span><span class=""> msdb</span><span class="token punctuation">.</span><span class="">dbo</span><span class="token punctuation">.</span><span class="">sp_add_jobserver </span><span class="token variable">@job_name</span> <span class="token operator">=</span><span class=""> IndexOptimize</span><span class="token punctuation">,</span> <span class="token variable">@server_name</span> <span class="token operator">=</span><span class=""> N</span><span class="token string">'(local)'</span><span class="token punctuation">;</span></span></pre>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/10-indexopt-job.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32771 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/10-indexopt-job.png?resize=769%2C122&#038;ssl=1" alt="" width="769" height="122" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/10-indexopt-job.png?resize=1024%2C162&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/10-indexopt-job.png?resize=300%2C48&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/10-indexopt-job.png?resize=768%2C122&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/10-indexopt-job.png?resize=769%2C122&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/10-indexopt-job.png?w=1421&amp;ssl=1 1421w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">After running the above command, we should now see the job appear in the SQL Server Agent inventory view on the left hand view of the MS SQL Server Management Studio, as shown below.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/11.-Observe-job-in-SQL-Agent.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32677 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/11.-Observe-job-in-SQL-Agent.png?resize=322%2C94&#038;ssl=1" alt="" width="322" height="94" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/11.-Observe-job-in-SQL-Agent.png?w=322&amp;ssl=1 322w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/11.-Observe-job-in-SQL-Agent.png?resize=300%2C88&amp;ssl=1 300w" sizes="auto, (max-width: 322px) 100vw, 322px" /></a></p>
<p style="text-align: justify;">Click on the job name (<strong>indexOptimize</strong> in this example) to see the job properties.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/11-indexOpt-prop.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32772 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/11-indexOpt-prop.png?resize=769%2C492&#038;ssl=1" alt="" width="769" height="492" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/11-indexOpt-prop.png?resize=1024%2C655&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/11-indexOpt-prop.png?resize=300%2C192&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/11-indexOpt-prop.png?resize=768%2C491&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/11-indexOpt-prop.png?resize=769%2C492&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/11-indexOpt-prop.png?w=1170&amp;ssl=1 1170w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">If you select the <strong>Steps</strong> page on the left hand side of the job properties, you can see a T-SQL type job step.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/12-indexOpt-steps.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32773 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/12-indexOpt-steps.png?resize=706%2C213&#038;ssl=1" alt="" width="706" height="213" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/12-indexOpt-steps.png?w=706&amp;ssl=1 706w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/12-indexOpt-steps.png?resize=300%2C91&amp;ssl=1 300w" sizes="auto, (max-width: 706px) 100vw, 706px" /></a></p>
<p style="text-align: justify;">Click on the Edit underneath the Start Step in the job properties to verify that it is indeed a request to run the integrity check:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/13-indexOpt-dbcheck.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32774 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/13-indexOpt-dbcheck.png?resize=706%2C299&#038;ssl=1" alt="" width="706" height="299" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/13-indexOpt-dbcheck.png?w=706&amp;ssl=1 706w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/13-indexOpt-dbcheck.png?resize=300%2C127&amp;ssl=1 300w" sizes="auto, (max-width: 706px) 100vw, 706px" /></a></p>
<p>The job appears to have been successfully created.</p>
<h2>Schedule a SQL Server Agent Job</h2>
<p style="text-align: justify;">Let&#8217;s now schedule this job to run regularly and report on the database integrity. Cancel the previous &#8216;Edit&#8217; window to return back to the Job Properties. One of the pages listed in the left hand side is &#8216;Schedules&#8217;. Click on this to create a schedule for the job using the &#8216;New&#8230;&#8217; button. In this case, I created a daily schedule for the integrity check.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/14-job-schedule.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32775 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/14-job-schedule.png?resize=675%2C588&#038;ssl=1" alt="" width="675" height="588" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/14-job-schedule.png?w=675&amp;ssl=1 675w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/14-job-schedule.png?resize=300%2C261&amp;ssl=1 300w" sizes="auto, (max-width: 675px) 100vw, 675px" /></a></p>
<p style="text-align: justify;">With a schedule in place, we can check the<span class="token comment"> job history and its runs using below command. You obviously won&#8217;t see any job runs reported until the job has run at least once.</span></p>
<pre><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">EXEC msdb.dbo.sp_help_jobhistory @mode = 'FULL';</span></pre>
<p style="text-align: justify;">This is a sample of the output that the above command generates, showing multiple scheduled runs of the job:</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/sqlagent-jobhistory.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32780 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/sqlagent-jobhistory.png?resize=769%2C277&#038;ssl=1" alt="" width="769" height="277" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/sqlagent-jobhistory.png?resize=1024%2C369&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/sqlagent-jobhistory.png?resize=300%2C108&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/sqlagent-jobhistory.png?resize=768%2C277&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/sqlagent-jobhistory.png?resize=769%2C277&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/sqlagent-jobhistory.png?w=1188&amp;ssl=1 1188w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<h2>Summary</h2>
<p style="text-align: justify;">And that completes the post demonstrating how SQL Server Agent support is now included in DSM 9.0.2 provisioned MS SQL Server instances. We continue to add features for MS SQL Server in each release, and we hope to make it generally available very soon indeed. If there are any questions around our Data Services Manager offering, or MS SQL Server integration, please reach out or leave a comment on the post.</p>
<p>The post <a href="https://cormachogan.com/2026/01/21/dsm-9-0-2-new-microsoft-sql-server-enhancements-sql-server-agent-support/">DSM 9.0.2 &#8211; New Microsoft SQL Server Enhancements &#8211; SQL Server Agent Support</a> appeared first on <a href="https://cormachogan.com">CormacHogan.com</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">32654</post-id>	</item>
		<item>
		<title>Velero Revisited &#8211; Manually backing up VKS clusters using Velero</title>
		<link>https://cormachogan.com/2026/01/16/velero-revisited-manually-backing-up-vks-clusters-using-velero/</link>
					<comments>https://cormachogan.com/2026/01/16/velero-revisited-manually-backing-up-vks-clusters-using-velero/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Cormac]]></dc:creator>
		<pubDate>Fri, 16 Jan 2026 14:00:19 +0000</pubDate>
				<category><![CDATA[Cloud Native Applications]]></category>
		<category><![CDATA[Cloud Native Storage]]></category>
		<category><![CDATA[Container Storage Interface]]></category>
		<category><![CDATA[Velero]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[VMware Cloud Foundation (VCF)]]></category>
		<category><![CDATA[vSphere]]></category>
		<category><![CDATA[vSphere Kubernetes Service (VKS)]]></category>
		<category><![CDATA[data protection]]></category>
		<category><![CDATA[VCF]]></category>
		<category><![CDATA[VKS]]></category>
		<category><![CDATA[VKSM]]></category>
		<category><![CDATA[vSphere Kubernetes Service]]></category>
		<guid isPermaLink="false">https://cormachogan.com/?p=32731</guid>

					<description><![CDATA[<p>It&#8217;s been some time since I looked at how to use the Velero CLI to backup and restore some modern applications running in a Kubernetes cluster. However, after publishing how to use the new VKS Manager (VKSM) Data Protection (DP) earlier this week, it was mentioned that many customers who are on their VCF 9.x journey and who are using the Supervisor and vSphere Kubernetes Service to deploy VKS clusters, have not yet deployed VCF Automation into their VCF stack. This means that they do not have VKSM DP available to them just yet. So the question was whether or&#8230;</p>
<p>The post <a href="https://cormachogan.com/2026/01/16/velero-revisited-manually-backing-up-vks-clusters-using-velero/">Velero Revisited &#8211; Manually backing up VKS clusters using Velero</a> appeared first on <a href="https://cormachogan.com">CormacHogan.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2021/02/velero.jpg?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="alignleft wp-image-28353" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2021/02/velero.jpg?resize=150%2C150&#038;ssl=1" alt="" width="150" height="150" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2021/02/velero.jpg?w=225&amp;ssl=1 225w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2021/02/velero.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a>It&#8217;s been some time since I looked at how to use the Velero CLI to backup and restore some modern applications running in a Kubernetes cluster. However, after publishing how to use <a href="https://cormachogan.com/2026/01/14/a-first-look-at-vksm-data-protection-vksm-dp/" target="_blank" rel="noopener">the new VKS Manager (VKSM) Data Protection (DP) earlier this week</a>, it was mentioned that many customers who are on their VCF 9.x journey and who are using the Supervisor and vSphere Kubernetes Service to deploy VKS clusters, have not yet deployed VCF Automation into their VCF stack. This means that they do not have VKSM DP available to them just yet. So the question was whether or not the Velero CLI could be used manually to take backups and do restores of VKS workloads. The answer is of course yes, and in this blog I will show how to deploy Velero (client and server) that will allow you to backup your modern app workloads running in VKS. We will be using the new and very powerful VCF CLI to do some of these tasks.</p>
<h2>Deploy the Velero Client/CLI</h2>
<p style="text-align: justify;">Step 1 in the process is to deploy the Velero Client. This involves downloading a zipped up Velero binary to your desktop, and then placing it somewhere in your execution path (<a href="https://techdocs.broadcom.com/us/en/vmware-cis/vcf/vsphere-supervisor-services-and-standalone-components/latest/managing-vsphere-kuberenetes-service-clusters-and-workloads/backup-and-restore-workloads-using-the-velero-plugin-for-vsphere/velero-117/install-velero-cli-117-on-clusters.html" target="_blank" rel="noopener">full instructions here</a>). I downloaded it to an Ubuntu VM that I have in my environment. Once the Velero Client/CLI has been installed, you can check what the version is by using the command &#8216;velero version&#8217;. Ignore the server error. This is simply because we have not yet installed the server part of Velero onto the VKS cluster. However, there client version is 1.17.0. We should match this with the server version on the VKS cluster.</p>
<pre><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="">$ <strong>velero version</strong> 
</span>Client:
         Version: v1.17.0_vmware.1
         Git commit: 3172d9f99c3d501aad9ddfac8176d783f7692dce-modified
 <span class="token operator">&lt;</span><span class="">error getting server version: unable to retrieve the complete list of server APIs: velero.io/v1: no matches </span><span class="token keyword">for</span><span class=""> velero.io/v1, </span><span class="token assign-left variable">Resource</span><span class="token operator">=</span><span class="token operator">&gt;</span></span></pre>
<h2>Deploy the Velero Server onto VKS</h2>
<p style="text-align: justify;">To being with, ensure that your KUBECONFIG is set up correctly, and that you are pointing to the correct VKS cluster, i.e., the one where you wish to install the Velero server. I usually check by running a<em> kubectl get nodes</em> to verify that I have the correct cluster context.</p>
<pre><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$ <strong>kubectl get nodes</strong> 
NAME                                                              STATUS   ROLES           AGE   VERSION 
kubernetes-cluster-dkpp-hkpfp-r6j66                               Ready    control-plane   41m   v1.33.3+vmware.1-fips 
<span class="">kubernetes-cluster-dkpp-kubernetes-cluster-dkpp-np-pk3w-smkvs46   Ready    </span><span class="token operator">&lt;</span><span class="">none</span><span class="token operator">&gt;</span><span class="">          36m   v1.33.3+vmware.1-fips</span></span></pre>
<h3>Create a velero-data-values.yaml file</h3>
<p style="text-align: justify;">A yaml file is required to describe the details of the backup storage location (bsl). In this example, I am once again using MinIO to provide me with an S3 compatible bucket but any S3 compatible bucket will suffice. I have create a bucket called &#8220;velero-backups&#8221;. Since I have TLS enabled, I am using an <em>https</em> URL. This means I need to provider a Certificate Authority in the manifest, as shown below. This provides trust between Velero and the object store provider. I also need to provide credentials to access the object store.</p>
<pre class="p1"><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$ <strong>cat velero-data-values.yaml</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">backupStorageLocation:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  bucket: velero-backups</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  config:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    region: "minio"</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    s3ForcePathStyle: "true"</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    s3Url: "https://minio.rainpole.io:9000"</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  caCert: |</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    -----BEGIN CERTIFICATE-----</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    MIIGFzCCA/+gAwIBAgICEBkwDQYJKoZIhvcNAQELBQAwgY0xEDAOBgNVBAMMB01J</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Tk9fQ0ExCzAJBgNVBAYTAklFMQ0wCwYDVQQIDARDb3JrMQ0wCwYDVQQHDARDb3Jr</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    MRUwEwYDVQQKDAxWQ0YgRGl2aXNpb24xDTALBgNVBAsMBE9DVE8xKDAmBgkqhkiG</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">---&gt; snip</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    G+aB3AHlbfw45mkMlsk9jXl1sj21UYw/ZHJN</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    -----END CERTIFICATE-----</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  credential: |</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    [default]</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    aws_access_key_id=admin</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    aws_secret_access_key=password</span></pre>
<h3>Use the VCF CLI to add a package repo to the cluster</h3>
<p style="text-align: justify;">Our next step is to use the VCF CLI (my binary is called vcf-cli) to create a package repo. The VCF CLI can be downloaded from any Supervisor Namespace Summary page. The repo, once created, will contain our Velero package which we can install once downloaded. The packages are retrieved from the VKS Standard Packages Repository. I mentioned the VCF CLI a few times recently, such as using it <a href="https://cormachogan.com/2025/12/12/using-the-vcf-9-x-cli-to-troubleshoot-a-dsm-database-running-on-vks/" target="_blank" rel="noopener">to troubleshoot DSM</a> deployed on VKS clusters. It is a very useful tool for VCF administrators as it allow command line interaction with the Sueprvisor and VCF Automation. Before we create the repo, let&#8217;s first ensure that we are pulling down the latest packages. This <a href="https://techdocs.broadcom.com/us/en/vmware-cis/vcf/vsphere-supervisor-services-and-standalone-components/latest/release-notes/vks-standard-packages-release-notes.html" target="_blank" rel="noopener">URL for the VKS Release Notes</a> will tell you which path to use for the packages. At the time of writing, VKS 3.5 was the latest release, so the RN reports that the VKS Standard Packages v3.5.0+20251218 repository is available here:</p>
<pre><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">projects.packages.broadcom.com/vsphere/supervisor/vks-standard-packages/3.5.0-20251218/vks-standard-packages:3.5.0-20251218</span></pre>
<p style="text-align: justify;">Always check the Release Notes for the latest path information. We will use this path when we create the repo. Note that I am still in the KUBECONFIG context. Let&#8217;s add the repository. I am placing it in the namespace tkg-system.</p>
<pre class="p1"><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$<span class="Apple-converted-space">  </span><strong>vcf-cli package repository add standard-package-repo \
--url projects.packages.broadcom.com/vsphere/supervisor/packages/2025.10.22/vks-standard-packages:3.5.0-20251022 \
-n tkg-system</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">1:26:48PM: Updating package repository resource 'standard-package-repo' <b>in</b> namespace 'tkg-system'</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">1:26:48PM: Waiting <b>for</b> package repository reconciliation <b>for</b> 'standard-package-repo'</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">1:26:50PM: Fetching</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| apiVersion: vendir.k14s.io/v1alpha1</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| directories:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| - contents:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| <span class="Apple-converted-space">  </span>- imgpkgBundle:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| <span class="Apple-converted-space">      </span>image: projects.packages.broadcom.com/vsphere/supervisor/packages/2025.10.22/vks-standard-packages@sha256:36b48ba005e884586512c2fda8c4598f426c6f78efa7f84f5b24087b49a6b52d</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| <span class="Apple-converted-space">      </span>tag: 3.5.0-20251022</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| <span class="Apple-converted-space">    </span>path: .</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| <span class="Apple-converted-space">  </span>path: "0"</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| kind: LockConfig</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>|</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">1:26:50PM: Fetch succeeded</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">1:26:52PM: Template succeeded</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">1:26:52PM: Deploy started (3s ago)</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">1:26:56PM: Deploying</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| Target cluster 'https://10.96.0.1:443'</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| Changes</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| Namespace <span class="Apple-converted-space">  </span>Name <span class="Apple-converted-space">                                                                    </span>Kind <span class="Apple-converted-space">            </span>Age<span class="Apple-converted-space">  </span>Op<span class="Apple-converted-space">      </span>Op st.<span class="Apple-converted-space">                      </span>Wait to<span class="Apple-converted-space">  </span>Rs<span class="Apple-converted-space">  </span>Ri</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| tkg-system<span class="Apple-converted-space">  </span>ako.kubernetes.vmware.com<span class="Apple-converted-space">                                                </span>PackageMetadata<span class="Apple-converted-space">  </span>-<span class="Apple-converted-space">    </span>create<span class="Apple-converted-space">  </span>fallback on update or noop<span class="Apple-converted-space">  </span>-<span class="Apple-converted-space">        </span>- <span class="Apple-converted-space">  </span>-</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| ^ <span class="Apple-converted-space">          </span>ako.kubernetes.vmware.com.1.13.4+vmware.1-vks.1<span class="Apple-converted-space">                          </span>Package<span class="Apple-converted-space">          </span>-<span class="Apple-converted-space">    </span>create<span class="Apple-converted-space">  </span>fallback on update or noop<span class="Apple-converted-space">  </span>-<span class="Apple-converted-space">        </span>- <span class="Apple-converted-space">  </span>-</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| ^ <span class="Apple-converted-space">          </span>autoscaler.kubernetes.vmware.com <span class="Apple-converted-space">                                        </span>PackageMetadata<span class="Apple-converted-space">  </span>9m <span class="Apple-converted-space">  </span>delete<span class="Apple-converted-space">  </span>- <span class="Apple-converted-space">                          </span>-<span class="Apple-converted-space">        </span>ok<span class="Apple-converted-space">  </span>-</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| ^ <span class="Apple-converted-space">          </span>cert-manager.kubernetes.vmware.com.1.17.2+vmware.1-vks.1 <span class="Apple-converted-space">                </span>Package<span class="Apple-converted-space">          </span>9m <span class="Apple-converted-space">  </span>delete<span class="Apple-converted-space">  </span>- <span class="Apple-converted-space">                          </span>-<span class="Apple-converted-space">        </span>ok<span class="Apple-converted-space">  </span>-</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| ^ <span class="Apple-converted-space">          </span>cert-manager.kubernetes.vmware.com.1.17.2+vmware.2-vks.1 <span class="Apple-converted-space">                </span>Package<span class="Apple-converted-space">          </span>-<span class="Apple-converted-space">    </span>create<span class="Apple-converted-space">  </span>fallback on update or noop<span class="Apple-converted-space">  </span>-<span class="Apple-converted-space">        </span>- <span class="Apple-converted-space">  </span>-</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| ^ <span class="Apple-converted-space">          </span>cert-manager.kubernetes.vmware.com.1.18.2+vmware.1-vks.1 <span class="Apple-converted-space">                </span>Package<span class="Apple-converted-space">          </span>9m <span class="Apple-converted-space">  </span>delete<span class="Apple-converted-space">  </span>- <span class="Apple-converted-space">                          </span>-<span class="Apple-converted-space">        </span>ok<span class="Apple-converted-space">  </span>-</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| ^ <span class="Apple-converted-space">          </span>cert-manager.kubernetes.vmware.com.1.18.2+vmware.2-vks.2 <span class="Apple-converted-space">                </span>Package<span class="Apple-converted-space">          </span>-<span class="Apple-converted-space">    </span>create<span class="Apple-converted-space">  </span>fallback on update or noop<span class="Apple-converted-space">  </span>-<span class="Apple-converted-space">        </span>- <span class="Apple-converted-space">  </span>-</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">.</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">.</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">.</span></pre>
<p class="p1" style="text-align: justify;">Let&#8217;s check if the Velero package is now included in the repository, and if so, what versions are available.</p>
<pre class="p1"><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$ <strong>vcf-cli package available list -n tkg-system | grep velero</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>velero.kubernetes.vmware.com<span class="Apple-converted-space">                    </span>velero</span>

<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">
$ <strong>vcf-cli package available get velero.kubernetes.vmware.com</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>NAME: <span class="Apple-converted-space">                  </span>velero.kubernetes.vmware.com</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>DISPLAY-NAME: <span class="Apple-converted-space">          </span>velero</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>CATEGORIES: <span class="Apple-converted-space">            </span>- data protection</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>SHORT-DESCRIPTION:<span class="Apple-converted-space">      </span>Velero is an open source tool to safely backup and restore, perform disaster</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">recovery, and migrate Kubernetes cluster resources and persistent volumes.</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>LONG-DESCRIPTION: <span class="Apple-converted-space">      </span>Velero is an open source tool to safely backup and restore, perform disaster</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">recovery, and migrate Kubernetes cluster resources and persistent volumes.</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>PROVIDER: <span class="Apple-converted-space">              </span>VMware</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>MAINTAINERS:<span class="Apple-converted-space">            </span>- name: Wenkai Yin</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>SUPPORT-DESCRIPTION:<span class="Apple-converted-space">    </span>https://github.com/vmware-tanzu/velero</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>VERSION<span class="Apple-converted-space">                </span>RELEASED-AT</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>1.16.1+vmware.1-vks.1<span class="Apple-converted-space">  </span>2025-05-19 12:30:00 +0000 UTC</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>1.16.2+vmware.1-vks.1<span class="Apple-converted-space">  </span>2025-08-05 12:30:00 +0000 UTC</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>1.17.0+vmware.1-vks.1<span class="Apple-converted-space">  </span>2025-09-16 11:30:00 +0000 UTC</span></pre>
<p style="text-align: justify;">Looks good. Velero version 1.17.0 is an available package version, which will match the client version we are using.</p>
<h3>Install the Velero Server Package</h3>
<p style="text-align: justify;">Let&#8217;s proceed with the install of the Velero server package. Specify the namespace of the repo where the package is stored, the name of the package itself, the version you wish to install and the path to the velero-data-values.yaml created earlier. The actual Velero server components will be installed from the package into a namespace called velero.</p>
<pre class="p1"><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$ <strong>vcf-cli package install velero --namespace tkg-system \
--package velero.kubernetes.vmware.com \
--version 1.17.0+vmware.1-vks.1 \
--values-file velero-data-values.yaml</strong></span>

<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">1:30:07PM: Pausing reconciliation <b>for</b> package installation 'velero' <b>in</b> namespace 'tkg-system'</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">1:30:08PM: Updating secret 'velero-tkg-system-values'</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">1:30:08PM: Resuming reconciliation <b>for</b> package installation 'velero' <b>in</b> namespace 'tkg-system'</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">1:30:08PM: Waiting <b>for</b> PackageInstall reconciliation <b>for</b> 'velero'</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">1:30:08PM: Waiting <b>for</b> generation 3 to be observed</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">1:30:09PM: Fetch started</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">1:30:09PM: Fetching</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| apiVersion: vendir.k14s.io/v1alpha1</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| directories:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| - contents:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| <span class="Apple-converted-space">  </span>- imgpkgBundle:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| <span class="Apple-converted-space">      </span>image: projects.packages.broadcom.com/vsphere/supervisor/packages/2025.10.22/vks-standard-packages@sha256:5dd00ce6284efa836cae4abb351ab8987cf118f79d355c84ce2ba0a5ac5fbd29</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| <span class="Apple-converted-space">    </span>path: .</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| <span class="Apple-converted-space">  </span>path: "0"</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| kind: LockConfig</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>|</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">1:30:09PM: Fetch succeeded</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">1:30:09PM: Template succeeded</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">1:30:10PM: Deploy started</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">1:30:10PM: Deploying</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| Target cluster 'https://10.96.0.1:443' (nodes: kubernetes-cluster-dkpp-hkpfp-r6j66, 1+)</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| Changes</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| Namespace<span class="Apple-converted-space">  </span>Name<span class="Apple-converted-space">  </span>Kind<span class="Apple-converted-space">  </span>Age<span class="Apple-converted-space">  </span>Op<span class="Apple-converted-space">  </span>Op st.<span class="Apple-converted-space">  </span>Wait to<span class="Apple-converted-space">  </span>Rs<span class="Apple-converted-space">  </span>Ri</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| Op:<span class="Apple-converted-space">      </span>0 create, 0 delete, 0 update, 0 noop, 0 exists</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| Wait to: 0 reconcile, 0 delete, 0 noop</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">            </span>| Succeeded</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">1:30:10PM: Deploy succeeded</span></pre>
<h3>Check the Velero install status</h3>
<p style="text-align: justify;">We can now check if the package installed successfully. We can use <em>kubectl</em> to check on various objects in the velero namespace, such as deployments, replicaSets and Pods. We can check that the BackupStorageLocation (bsl) is available and by using the velero version command, we can verify that the server portion is now reporting correctly.</p>
<pre class="p1"><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$ <strong>kubectl get deploy -n velero</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">NAME <span class="Apple-converted-space">    </span>READY <span class="Apple-converted-space">  </span>UP-TO-DATE <span class="Apple-converted-space">  </span>AVAILABLE <span class="Apple-converted-space">  </span>AGE</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">velero <span class="Apple-converted-space">  </span>1/1 <span class="Apple-converted-space">    </span>1<span class="Apple-converted-space">            </span>1 <span class="Apple-converted-space">          </span>4m38s</span>

<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">
$ <strong>kubectl get rs -n velero</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">NAME<span class="Apple-converted-space">                </span>DESIRED <span class="Apple-converted-space">  </span>CURRENT <span class="Apple-converted-space">  </span>READY <span class="Apple-converted-space">  </span>AGE</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">velero-845bfc6654 <span class="Apple-converted-space">  </span>1 <span class="Apple-converted-space">        </span>1 <span class="Apple-converted-space">        </span>1 <span class="Apple-converted-space">      </span>4m59s</span>

<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">
$ <strong>kubectl get pods -n velero</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">NAME<span class="Apple-converted-space">                      </span>READY <span class="Apple-converted-space">  </span>STATUS<span class="Apple-converted-space">    </span>RESTARTS <span class="Apple-converted-space">  </span>AGE</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">node-agent-f8qdp<span class="Apple-converted-space">          </span>1/1 <span class="Apple-converted-space">    </span>Running <span class="Apple-converted-space">  </span>0<span class="Apple-converted-space">          </span>5m5s</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">velero-845bfc6654-69vqs <span class="Apple-converted-space">  </span>1/1 <span class="Apple-converted-space">    </span>Running <span class="Apple-converted-space">  </span>0<span class="Apple-converted-space">          </span>5m5s</span>

<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">
$ <strong>kubectl get bsl -n velero</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">NAME<span class="Apple-converted-space">      </span>PHASE <span class="Apple-converted-space">      </span>LAST VALIDATED <span class="Apple-converted-space">  </span>AGE <span class="Apple-converted-space">    </span>DEFAULT</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">default <span class="Apple-converted-space">  </span>Available <span class="Apple-converted-space">  </span>49s<span class="Apple-converted-space">              </span>5m22s <span class="Apple-converted-space">  </span>true</span>

<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">
$<strong> velero version</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Client:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">        </span>Version: v1.17.0_vmware.1</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">        </span>Git commit: 3172d9f99c3d501aad9ddfac8176d783f7692dce-modified</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Server:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">        </span>Version: v1.17.0_vmware.1</span></pre>
<h2>Create a sample workload to backup and restore</h2>
<p style="text-align: justify;">To test out Velero backup and restore, I am going to use a simple Pod and PersistentVolumeClaim (pvc) combination. The PVC will have to use one of the existing StorageClasses (sc) in the VKS cluster. The Pod will also mount the volume onto the /demo folder in the busybox container.</p>
<p style="text-align: justify;">As this is VKS on vSphere, the vSphere CSI driver is a necessary component for creating persistent volumes on vSphere storage. This will also mean that during the backup, Velero will request the creation of a CSI snapshot of the volume to backup the volume.  VKS clusters on vSphere have all of the necessary vSphere CSI components to achieve this.</p>
<p style="text-align: justify;">Here are the manifests and steps to create the simple app. First we create a namespace called cormac-ns, which is where our app will live. Then we get the StorageClasses, and then build the appropriate PVC manifest using one of the storage classes. Once the PVC is created, we can reference it as a Volume in the Pod.</p>
<pre class="p1"><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$ k<strong>ubectl create ns cormac-ns</strong>
namespace/cormac-ns created 


$ <strong>kubectl get sc</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">NAME                                                              PROVISIONER              RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">sfo-w01-cl01-optimal-datastore-default-policy-raid1               csi.vsphere.vmware.com   Delete          Immediate              true                   25h</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">sfo-w01-cl01-optimal-datastore-default-policy-raid1-latebinding   csi.vsphere.vmware.com   Delete          WaitForFirstConsumer   true                   25h</span>

<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">
$ <strong>cat example-pvc-cormac-ns.yaml</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">apiVersion: v1</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">kind: PersistentVolumeClaim</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">metadata:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  name: example-cormac-block-pvc</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  namespace: cormac-ns</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">spec:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  accessModes:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - ReadWriteOnce</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  resources:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    requests:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">      storage: 5Gi</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  storageClassName: sfo-w01-cl01-optimal-datastore-default-policy-raid1</span>

<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">
$ <strong>kubectl apply -f example-pvc-cormac-ns.yaml</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">persistentvolumeclaim/example-cormac-block-pvc created</span>

<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">
$ <strong>kubectl get pvc -n cormac-ns -w</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">NAME                       STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                                          VOLUMEATTRIBUTESCLASS   AGE</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">example-cormac-block-pvc   Pending                                                                        sfo-w01-cl01-optimal-datastore-default-policy-raid1   &lt;unset&gt;                 4s</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">example-cormac-block-pvc   Pending   pvc-85cf01bc-52fb-4bc1-a74f-58990b2988bb   0                         sfo-w01-cl01-optimal-datastore-default-policy-raid1   &lt;unset&gt;                 4s</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">example-cormac-block-pvc   Bound     pvc-85cf01bc-52fb-4bc1-a74f-58990b2988bb   5Gi        RWO            sfo-w01-cl01-optimal-datastore-default-policy-raid1   &lt;unset&gt;                 5s</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">

$ <strong>cat cormac-pod-with-volume.yaml</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">apiVersion: v1</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">kind: Pod</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">metadata:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>name: cormac-pod-1</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>namespace: cormac-ns</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">spec:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>securityContext:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>runAsUser: 1000</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>runAsGroup: 3000</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>fsGroup: 2000</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>supplementalGroups: [4000]</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>containers:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>- name: busybox</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>image: "dockerhub.packages.vcfd.broadcom.net/busybox:latest"</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>command: [ "sleep", "1000000" ]</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>securityContext:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">      </span>allowPrivilegeEscalation: false</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">      </span>capabilities:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">        </span>drop: ["ALL"]</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">      </span>runAsNonRoot: true</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">      </span>runAsUser: 1000</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">      </span>seccompProfile:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">        </span>type: "RuntimeDefault"</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>volumeMounts:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">      </span>- mountPath: "/demo"</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">        </span>name: demo-vol</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>volumes:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>- name: demo-vol</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">      </span>persistentVolumeClaim:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">        </span>claimName: example-cormac-block-pvc

</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$ <strong>kubectl apply -f cormac-pod-with-volume.yaml</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">pod/cormac-pod-1 created</span>

<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">
$ <strong>kubectl get pods -n cormac-ns -w</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">NAME <span class="Apple-converted-space">          </span>READY <span class="Apple-converted-space">  </span>STATUS<span class="Apple-converted-space">              </span>RESTARTS <span class="Apple-converted-space">  </span>AGE</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">cormac-pod-1 <span class="Apple-converted-space">  </span>0/1 <span class="Apple-converted-space">    </span>ContainerCreating <span class="Apple-converted-space">  </span>0<span class="Apple-converted-space">          </span>8s</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">cormac-pod-1 <span class="Apple-converted-space">  </span>1/1 <span class="Apple-converted-space">    </span>Running <span class="Apple-converted-space">            </span>0<span class="Apple-converted-space">          </span>14s

</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$ <strong>kubectl get pod,pvc -n cormac-ns</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">NAME <span class="Apple-converted-space">              </span>READY <span class="Apple-converted-space">  </span>STATUS<span class="Apple-converted-space">    </span>RESTARTS <span class="Apple-converted-space">  </span>AGE</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">pod/cormac-pod-1 <span class="Apple-converted-space">  </span>1/1 <span class="Apple-converted-space">    </span>Running <span class="Apple-converted-space">  </span>0<span class="Apple-converted-space">          </span>33s</span>

<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">NAME <span class="Apple-converted-space">                                            </span>STATUS <span class="Apple-converted-space">  </span>VOLUME <span class="Apple-converted-space">                                    </span>CAPACITY <span class="Apple-converted-space">  </span>ACCESS MODES <span class="Apple-converted-space">  </span>STORAGECLASS<span class="Apple-converted-space">                                          </span>VOLUMEATTRIBUTESCLASS <span class="Apple-converted-space">  </span>AGE</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">persistentvolumeclaim/example-cormac-block-pvc <span class="Apple-converted-space">  </span>Bound<span class="Apple-converted-space">    </span>pvc-85cf01bc-52fb-4bc1-a74f-58990b2988bb <span class="Apple-converted-space">  </span>5Gi<span class="Apple-converted-space">        </span>RWO<span class="Apple-converted-space">            </span>sfo-w01-cl01-optimal-datastore-default-policy-raid1 <span class="Apple-converted-space">  </span>&lt;unset&gt; <span class="Apple-converted-space">                </span>2m15s</span></pre>
<p style="text-align: justify;">We now have an application. If you so wish, you can use kubectl exec to access the Pod, and create files and directories in the <strong>/demo</strong> directory. You can then check if the data is recovered after a backup and restore. Let&#8217;s now see if we can backup and restore this &#8216;critical&#8217; application.</p>
<h2>Backup using Velero CLI</h2>
<p style="text-align: justify;">I will now initiate a backup. I do not want to backup the full VKS cluster, only  the namespace cormac-ns as this is where my app is running. After the backup has completed, I can use the suggested &#8216;<span style="font-family: 'courier new', courier, monospace; font-size: 12pt;">velero backup describe</span>&#8216; command to look at it in more detail.</p>
<pre class="p1"><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$ <strong>velero backup create cormac-backup-1 --include-namespaces cormac-ns --wait</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Backup request "cormac-backup-1" submitted successfully.</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Waiting <b>for</b> backup to complete. You may safely press ctrl-c to stop waiting - your backup 
will continue <b>in</b> the background.</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">......................................................................</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Backup completed with status: Completed. You may check <b>for</b> more information using the 
commands `velero backup describe cormac-backup-1` and `velero backup logs cormac-backup-1`.</span>


<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$ <strong>velero backup describe cormac-backup-1</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Name:         cormac-backup-1</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Namespace:    velero</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Labels:       velero.io/storage-location=default</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Annotations:  velero.io/resource-timeout=10m0s</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">              velero.io/source-cluster-k8s-gitversion=v1.33.3+vmware.1-fips</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">              velero.io/source-cluster-k8s-major-version=1</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">              velero.io/source-cluster-k8s-minor-version=33</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Phase:  Completed</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Namespaces:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Included:  cormac-ns</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Excluded:  &lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Resources:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Included cluster-scoped:    &lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Excluded cluster-scoped:    volumesnapshotcontents.snapshot.storage.k8s.io</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Included namespace-scoped:  *</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Excluded namespace-scoped:  volumesnapshots.snapshot.storage.k8s.io</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Label selector:  &lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Or label selector:  &lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Storage Location:  default</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Velero-Native Snapshot PVs:    auto</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">File System Backup (Default):  false</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Snapshot Move Data:            true</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Data Mover:                    velero</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">TTL:  720h0m0s</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">CSISnapshotTimeout:    10m0s</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">ItemOperationTimeout:  4h0m0s</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Hooks:  &lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Backup Format Version:  1.1.0</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Started:    2026-01-14 13:42:45 +0000 UTC</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Completed:  2026-01-14 13:43:55 +0000 UTC</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Expiration:  2026-02-13 13:42:44 +0000 UTC</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Total items to be backed up:  65</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Items backed up:              65</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Backup Item Operations:  1 of 1 completed successfully, 0 failed (specify --details <b>for</b> more information)</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Backup Volumes:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Velero-Native Snapshots: &lt;none included&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  CSI Snapshots:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    cormac-ns/example-cormac-block-pvc:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">      Data Movement: included, specify --details <b>for</b> more information</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Pod Volume Backups: &lt;none included&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">HooksAttempted:  0</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">HooksFailed:     0</span></pre>
<p style="text-align: justify;">Firstly, it looks like the backup has completed successfully. Secondly, it has indeed used CSI Snapshots, and moved the snapshot data to my backup storage location (S3 bucket). Note that this section of the output recommends using a <span style="font-family: 'courier new', courier, monospace;">&#8211;details</span> options to see more information above the data movement. Let&#8217;s run that now (note that I have snipped some of the output for conciseness).</p>
<pre class="p1"><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$ <strong>velero backup describe cormac-backup-1 --details</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Name:         cormac-backup-1</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Namespace:    velero</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Labels:       velero.io/storage-location=default</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Annotations:  velero.io/resource-timeout=10m0s</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">              velero.io/source-cluster-k8s-gitversion=v1.33.3+vmware.1-fips</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">              velero.io/source-cluster-k8s-major-version=1</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">              velero.io/source-cluster-k8s-minor-version=33</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Phase:  Completed</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Namespaces:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Included:  cormac-ns</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Excluded:  &lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Resources:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Included cluster-scoped:    &lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Excluded cluster-scoped:    volumesnapshotcontents.snapshot.storage.k8s.io</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Included namespace-scoped:  *</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Excluded namespace-scoped:  volumesnapshots.snapshot.storage.k8s.io</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Label selector:  &lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Or label selector:  &lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Storage Location:  default</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Velero-Native Snapshot PVs:    auto</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">File System Backup (Default):  false</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Snapshot Move Data:            true</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Data Mover:                    velero</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">TTL:  720h0m0s</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">CSISnapshotTimeout:    10m0s</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">ItemOperationTimeout:  4h0m0s</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Hooks:  &lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Backup Format Version:  1.1.0</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Started:    2026-01-14 13:42:45 +0000 UTC</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Completed:  2026-01-14 13:43:55 +0000 UTC</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Expiration:  2026-02-13 13:42:44 +0000 UTC</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Total items to be backed up:  65</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Items backed up:              65</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Backup Item Operations:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Operation <b>for</b> persistentvolumeclaims cormac-ns/example-cormac-block-pvc:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Backup Item Action Plugin:  velero.io/csi-pvc-backupper</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Operation ID:               du-f577e717-58bf-453b-8de8-c5f3b866855e.85cf01bc-52fb-4bcd93615</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Items to Update:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">                           datauploads.velero.io velero/cormac-backup-1-mswhk</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Phase:                 Completed</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Progress description:  Completed</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Created:               2026-01-14 13:43:01 +0000 UTC</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Started:               2026-01-14 13:43:20 +0000 UTC</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Updated:               2026-01-14 13:43:49 +0000 UTC</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Resource List:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  data.packaging.carvel.dev/v1alpha1/Package:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns/ako.kubernetes.vmware.com.1.13.4+vmware.1-vks.1</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns/cert-manager.kubernetes.vmware.com.1.17.2+vmware.2-vks.1</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns/cert-manager.kubernetes.vmware.com.1.18.2+vmware.2-vks.2</span>
<span style="font-family: courier new, courier, monospace;"><span style="font-size: 13.3333px;">&lt;--snip--&gt;</span></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  data.packaging.carvel.dev/v1alpha1/PackageMetadata:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns/ako.kubernetes.vmware.com</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns/cert-manager.kubernetes.vmware.com</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns/cluster-autoscaler.kubernetes.vmware.com</span>
<span style="font-family: courier new, courier, monospace;"><span style="font-size: 13.3333px;">&lt;--snip--&gt;</span></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  v1/ConfigMap:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns/kube-root-ca.crt</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  v1/Event:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns/cormac-pod-1.188a9ca69877b51d</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns/cormac-pod-1.188a9ca70666357e</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns/cormac-pod-1.188a9ca9254c4de3</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns/cormac-pod-1.188a9ca963e97572</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns/cormac-pod-1.188a9ca96cda3faf</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns/cormac-pod-1.188a9ca974af3290</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns/example-cormac-block-pvc.188a9c7c780cab0a</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns/example-cormac-block-pvc.188a9c8eb1bdf906</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns/example-cormac-block-pvc.188a9c8eb1e499a8</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns/example-cormac-block-pvc.188a9c8fc1b87d38</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  v1/Namespace:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  v1/PersistentVolume:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - pvc-85cf01bc-52fb-4bc1-a74f-58990b2988bb</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  v1/PersistentVolumeClaim:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns/example-cormac-block-pvc</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  v1/Pod:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns/cormac-pod-1</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  v1/ServiceAccount:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    - cormac-ns/default</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Backup Volumes:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Velero-Native Snapshots: &lt;none included&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  CSI Snapshots:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    cormac-ns/example-cormac-block-pvc:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">      Data Movement:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">        Operation ID: du-f577e717-58bf-453b-8de8-c5f3b866855e.85cf01bc-52fb-4bcd93615</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">        Data Mover: velero</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">        Uploader Type: kopia</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">        Moved data Size (bytes): 0</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">        Result: succeeded</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Pod Volume Backups: &lt;none included&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">HooksAttempted:  0</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">HooksFailed:     0
</span></pre>
<p style="text-align: justify;">Now we can see even more details about the data movement. We can see that it is using the in-built velero data mover which is using <a href="https://github.com/kopia/kopia/blob/master/README.md" target="_blank" rel="noopener">Kopia</a>. And we can in fact see more details about the snapshot and data movement by querying some other custom resources, as we will see next.</p>
<h3>Backup: Under the covers</h3>
<p style="text-align: justify;">The following commands will examine some of the snapshot details, such as the snapshot location and class. You can add a &#8220;<em>-o yaml</em>&#8221; to the <em>kubectl get</em> commands, or use <em>kubectl describe</em>, to see more details. But it is the &#8220;dataupload&#8221; Custom Resource (CR) that is most useful. This is what ties the volume and resulting CSI snapshot tot he data mover and backup storage location, and if there are any issues with that operation, this is the CR to check.</p>
<pre class="p1"><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$ <strong>kubectl get volumesnapshotlocations -n velero</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">NAME<span class="Apple-converted-space">      </span>AGE</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">default <span class="Apple-converted-space">  </span>22m</span>

<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">
$ <strong>kubectl get volumesnapshotclasses</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">NAME <span class="Apple-converted-space">                        </span>DRIVER <span class="Apple-converted-space">                  </span>DELETIONPOLICY <span class="Apple-converted-space">  </span>AGE</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">volumesnapshotclass-delete <span class="Apple-converted-space">  </span>csi.vsphere.vmware.com <span class="Apple-converted-space">  </span>Delete <span class="Apple-converted-space">          </span>80m</span>


<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$ <strong>kubectl describe datauploads cormac-backup-1-mswhk -n velero</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Name:         cormac-backup-1-mswhk</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Namespace:    velero</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Labels:       velero.io/async-operation-id=du-f577e717-58bf-453b-8de8-c5f3b866855e.85cf01bc-52fb-4bcd93615</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">              velero.io/backup-name=cormac-backup-1</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">              velero.io/backup-uid=f577e717-58bf-453b-8de8-c5f3b866855e</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">              velero.io/pvc-uid=85cf01bc-52fb-4bc1-a74f-58990b2988bb</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Annotations:  &lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">API Version:  velero.io/v2alpha1</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Kind:         DataUpload</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Metadata:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Creation Timestamp:  2026-01-14T13:43:01Z</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Generate Name:       cormac-backup-1-</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Generation:          5</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Owner References:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    API Version:     velero.io/v1</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Controller:      true</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Kind:            Backup</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Name:            cormac-backup-1</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    UID:             f577e717-58bf-453b-8de8-c5f3b866855e</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Resource Version:  12767</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  UID:               f4da9b85-db30-4df7-9ebe-f61148c71c7c</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Spec:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Backup Storage Location:  default</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Csi Snapshot:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Driver:           csi.vsphere.vmware.com</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Snapshot Class:   volumesnapshotclass-delete</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Storage Class:    sfo-w01-cl01-optimal-datastore-default-policy-raid1</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Volume Snapshot:  velero-example-cormac-block-pvc-f968m</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Operation Timeout:  10m0s</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Snapshot Type:      CSI</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Source Namespace:   cormac-ns</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Source PVC:         example-cormac-block-pvc</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Status:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Accepted By Node:      kubernetes-cluster-dkpp-kubernetes-cluster-dkpp-np-pk3w-smkvs46</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Accepted Timestamp:    2026-01-14T13:43:01Z</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Completion Timestamp:  2026-01-14T13:43:49Z</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Node:                  kubernetes-cluster-dkpp-kubernetes-cluster-dkpp-np-pk3w-smkvs46</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Node OS:               linux</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Path:                  /f4da9b85-db30-4df7-9ebe-f61148c71c7c</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Phase:                 Completed</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Progress:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Snapshot ID:      4ff960c3f4d2f55253926f36a66d5e50</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Start Timestamp:  2026-01-14T13:43:20Z</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Events:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Type    Reason               Age                  From                   Message</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  ----    ------               ----                 ----                   -------</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Normal  Data-Path-Started    4m2s                 cormac-backup-1-mswhk  Data path <b>for</b> cormac-backup-1-mswhk started</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Normal  Data-Path-Progress   4m2s (x2 over 4m2s)  cormac-backup-1-mswhk  {}</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Normal  Data-Path-Completed  4m1s                 cormac-backup-1-mswhk  {"snapshotID":"4ff960c3f4d2f55253926f36a66d5e50","emptySnapshot":false,"source":{"byPath":"/f4da9b85-db30-4df7-9ebe-f61148c71c7c","volumeMode":"Filesystem"}}</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Normal  Data-Path-Stopped    4m1s                 cormac-backup-1-mswhk  Data path <b>for</b> cormac-backup-1-mswhk stopped</span></pre>
<p style="text-align: justify;">This looks to have been successful. The final step of this post is to ensure we can do a successful restore of the application that we have just backed up. Let&#8217;s now do that.</p>
<h2>Restore using Velero CLI</h2>
<p style="text-align: justify;">Start by deleting the &#8220;cormac-ns&#8221; namespace that was just backed up. It also deletes the Pod, PVC and resulting PV.</p>
<pre class="p1"><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$ <strong>kubectl delete ns cormac-ns</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">namespace "cormac-ns" deleted</span>


<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$ <strong>kubectl get pv</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">No resources found</span></pre>
<p style="text-align: justify;">Begin the velero restore, using the <span style="font-family: 'courier new', courier, monospace; font-size: 12pt;">&#8211;backup</span> command to identify which backup to restore from. Again, we can use the <span style="font-family: 'courier new', courier, monospace; font-size: 12pt;">describe</span> command to check the status of the restore.</p>
<pre class="p1"><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$ <strong>velero restore create cormac-restore-260114 --from-backup cormac-backup-1</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Restore request "cormac-restore-260114" submitted successfully.</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Run `velero restore describe cormac-restore-260114` or `velero restore logs cormac-restore-260114` 
<b>for</b> more details.

</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$ <strong>velero restore describe cormac-restore-260114</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Name: <span class="Apple-converted-space">        </span>cormac-restore-260114</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Namespace:<span class="Apple-converted-space">    </span>velero</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Labels: <span class="Apple-converted-space">      </span>&lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Annotations:<span class="Apple-converted-space">  </span>&lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Phase: <span class="Apple-converted-space">                      </span>Completed</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Total items to be restored:<span class="Apple-converted-space">  </span>56</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Items restored:<span class="Apple-converted-space">              </span>56</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Started:<span class="Apple-converted-space">    </span>2026-01-14 13:57:37 +0000 UTC</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Completed:<span class="Apple-converted-space">  </span>2026-01-14 13:58:06 +0000 UTC</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Warnings:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>Velero: <span class="Apple-converted-space">    </span>&lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>Cluster:<span class="Apple-converted-space">    </span>&lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>Namespaces:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>cormac-ns:<span class="Apple-converted-space">  </span>could not restore, ConfigMap:kube-root-ca.crt already exists. Warning: the in-cluster version is different than the backed-up version</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Backup:<span class="Apple-converted-space">  </span>cormac-backup-1</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Namespaces:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>Included:<span class="Apple-converted-space">  </span>all namespaces found <b>in</b> the backup</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>Excluded:<span class="Apple-converted-space">  </span>&lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Resources:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>Included:<span class="Apple-converted-space">        </span>*</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>Excluded:<span class="Apple-converted-space">        </span>nodes, events, events.events.k8s.io, backups.velero.io, restores.velero.io, resticrepositories.velero.io, csinodes.storage.k8s.io, volumeattachments.storage.k8s.io, backuprepositories.velero.io</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>Cluster-scoped:<span class="Apple-converted-space">  </span>auto</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Namespace mappings:<span class="Apple-converted-space">  </span>&lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Label selector:<span class="Apple-converted-space">  </span>&lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Or label selector:<span class="Apple-converted-space">  </span>&lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Restore PVs:<span class="Apple-converted-space">  </span>auto</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">CSI Snapshot Restores:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>cormac-ns/example-cormac-block-pvc:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>Data Movement: specify --details <b>for</b> more information</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Existing Resource Policy: <span class="Apple-converted-space">  </span>&lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">ItemOperationTimeout: <span class="Apple-converted-space">      </span>4h0m0s</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Preserve Service NodePorts:<span class="Apple-converted-space">  </span>auto</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Uploader config:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Restore Item Operations:<span class="Apple-converted-space">  </span>1 of 1 completed successfully, 0 failed (specify --details <b>for</b> more information)</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">HooksAttempted: <span class="Apple-converted-space">  </span>0</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">HooksFailed:<span class="Apple-converted-space">      </span>0</span></pre>
<p style="text-align: justify;">And just like we saw with the backup, the Data Movement details can be observed if you use the <span style="font-family: 'courier new', courier, monospace; font-size: 12pt;">&#8211;details</span> options with this command. This will include the following additional details in the output, as well as the list of resources that were restored:</p>
<pre class="p1"><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Restore PVs:  auto</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">CSI Snapshot Restores:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  cormac-ns/example-cormac-block-pvc:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Data Movement:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">      Operation ID: dd-90ca852c-7601-4c70-bd8e-8df9e07c4a31.85cf01bc-52fb-4bcba3ea6</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">      Data Mover: velero</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">      Uploader Type: kopia</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Existing Resource Policy:   &lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">ItemOperationTimeout:       4h0m0s</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Preserve Service NodePorts:  auto</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Uploader config:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">Restore Item Operations:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">  Operation <b>for</b> persistentvolumeclaims cormac-ns/example-cormac-block-pvc:</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Restore Item Action Plugin:  velero.io/csi-pvc-restorer</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Operation ID:                dd-90ca852c-7601-4c70-bd8e-8df9e07c4a31.85cf01bc-52fb-4bcba3ea6</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Phase:                       Completed</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Progress description:        Completed</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Created:                     2026-01-14 13:57:38 +0000 UTC</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Started:                     2026-01-14 13:57:46 +0000 UTC</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">    Updated:                     2026-01-14 13:58:01 +0000 UTC</span></pre>
<p style="text-align: justify;">The restore appears to have been successful. But lets verify using some <strong>kubectl</strong> commands.</p>
<pre class="p1"><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$ <strong>kubectl get ns cormac-ns</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">NAME        STATUS   AGE</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">cormac-ns   Active   2m22s</span>

<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">
$ <strong>kubectl get pod,pvc -n cormac-ns</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">NAME               READY   STATUS    RESTARTS   AGE</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">pod/cormac-pod-1   1/1     Running   0          2m32s</span>

<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">NAME                                             STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                                          VOLUMEATTRIBUTESCLASS   AGE</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">persistentvolumeclaim/example-cormac-block-pvc   Bound    pvc-cf66b8fc-adc1-43e5-8a81-1fbac9e21e9a   5Gi        RWO            sfo-w01-cl01-optimal-datastore-default-policy-raid1   &lt;unset&gt;                 2m32s</span>

<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">
$ <strong>kubectl get pv</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                STORAGECLASS                                          VOLUMEATTRIBUTESCLASS   REASON   AGE</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">pvc-cf66b8fc-adc1-43e5-8a81-1fbac9e21e9a   5Gi        RWO            Delete           Bound    cormac-ns/example-cormac-block-pvc   sfo-w01-cl01-optimal-datastore-default-policy-raid1   &lt;unset&gt;                          2m37s</span></pre>
<p style="text-align: justify;">Success. It would appear as if everything has restored correctly. If there are issues with a restore, there are some useful CRs available once again.</p>
<h3>Restore: Under the covers</h3>
<p style="text-align: justify;">Just like we saw with the backup, the following CRs, specifically <span style="font-family: 'courier new', courier, monospace; font-size: 12pt;">downloadrequests</span> and <span style="font-family: 'courier new', courier, monospace; font-size: 12pt;">datadownlaods</span> can be useful to query if there are some issue with a Velero restore operation on a VKS cluster using CSI snapshots.</p>
<pre class="p1"><span style="font-family: 'courier new', courier, monospace;">$ <strong>kubectl get downloadrequests -n velero</strong></span>
<span style="font-family: 'courier new', courier, monospace;">NAME                                                         AGE</span>
<span style="font-family: 'courier new', courier, monospace;">cormac-restore-260114-01fc60e9-d8c6-4efc-81f2-06f3e545272d   4m10s</span>
<span style="font-family: 'courier new', courier, monospace;">cormac-restore-260114-05bd4b4e-5ad6-4e52-a261-f4b89fb0bae3   4m10s</span>
<span style="font-family: 'courier new', courier, monospace;">cormac-restore-260114-2eba4517-ca71-4152-bb2a-fda141de8ed7   5m48s</span>
<span style="font-family: 'courier new', courier, monospace;">cormac-restore-260114-7bbf1ae8-5e65-4a5b-86e7-54334b3ddd0a   4m45s</span>
<span style="font-family: 'courier new', courier, monospace;">cormac-restore-260114-b926fbd2-8234-45c9-af1e-cd229d937504   4m10s</span>
<span style="font-family: 'courier new', courier, monospace;">cormac-restore-260114-debbab74-3e50-449e-95b1-ccbe4415f8c9   5m48s</span>
<span style="font-family: 'courier new', courier, monospace;">cormac-restore-260114-e133ec6f-6c8e-4951-8611-ffce0ee8ba8f   4m45s</span>
<span style="font-family: 'courier new', courier, monospace;">cormac-restore-260114-fd6ed61e-d99e-43e1-a3db-4e2c8644242f   4m11s</span>

<span style="font-family: 'courier new', courier, monospace;">
$ <strong>kubectl describe downloadrequests cormac-restore-260114-01fc60e9-d8c6-4efc-81f2-06f3e545272d  -n velero</strong></span>
<span style="font-family: 'courier new', courier, monospace;">Name:         cormac-restore-260114-01fc60e9-d8c6-4efc-81f2-06f3e545272d</span>
<span style="font-family: 'courier new', courier, monospace;">Namespace:    velero</span>
<span style="font-family: 'courier new', courier, monospace;">Labels:       &lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace;">Annotations:  &lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace;">API Version:  velero.io/v1</span>
<span style="font-family: 'courier new', courier, monospace;">Kind:         DownloadRequest</span>
<span style="font-family: 'courier new', courier, monospace;">Metadata:</span>
<span style="font-family: 'courier new', courier, monospace;">  Creation Timestamp:  2026-01-14T13:59:30Z</span>
<span style="font-family: 'courier new', courier, monospace;">  Generation:          2</span>
<span style="font-family: 'courier new', courier, monospace;">  Resource Version:    15170</span>
<span style="font-family: 'courier new', courier, monospace;">  UID:                 db0c147b-7b67-4e0d-92f7-6ff12105b992</span>
<span style="font-family: 'courier new', courier, monospace;">Spec:</span>
<span style="font-family: 'courier new', courier, monospace;">  Target:</span>
<span style="font-family: 'courier new', courier, monospace;">    Kind:  RestoreVolumeInfo</span>
<span style="font-family: 'courier new', courier, monospace;">    Name:  cormac-restore-260114</span>
<span style="font-family: 'courier new', courier, monospace;">Status:</span>
<span style="font-family: 'courier new', courier, monospace;">  Download URL:  https://minio.rainpole.io:9000/velero-backups/restores/cormac-restore-260114/cormac-restore-260114-volumeinfo.json.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=admin%2F20260114%2Fminio%2Fs3%2Faws4_request&amp;X-Amz-Date=20260114T135930Z&amp;X-Amz-Expires=600&amp;X-Amz-SignedHeaders=host&amp;x-id=GetObject&amp;X-Amz-Signature=ddba7b633a6362e9ca648c301b7c5bb22fbf774230836c9ebe146f6c63a56ff5</span>
<span style="font-family: 'courier new', courier, monospace;">  Expiration:    2026-01-14T14:09:30Z</span>
<span style="font-family: 'courier new', courier, monospace;">  Phase:         Processed</span>
<span style="font-family: 'courier new', courier, monospace;">Events:          &lt;none&gt;
</span>
<span style="font-family: 'courier new', courier, monospace;">
$ <strong>kubectl get datadownloads  -n velero</strong></span>
<span style="font-family: 'courier new', courier, monospace;">NAME                          STATUS      STARTED   BYTES DONE   TOTAL BYTES   STORAGE LOCATION   AGE     NODE</span>
<span style="font-family: 'courier new', courier, monospace;">cormac-restore-260114-v65f8   Completed   6m18s                                default            6m26s   kubernetes-cluster-dkpp-kubernetes-cluster-dkpp-np-pk3w-smkvs46</span>
<span style="font-family: 'courier new', courier, monospace;">

$ <strong>kubectl describe datadownloads cormac-restore-260114-v65f8  -n velero</strong></span>
<span style="font-family: 'courier new', courier, monospace;">Name:         cormac-restore-260114-v65f8</span>
<span style="font-family: 'courier new', courier, monospace;">Namespace:    velero</span>
<span style="font-family: 'courier new', courier, monospace;">Labels:       velero.io/async-operation-id=dd-90ca852c-7601-4c70-bd8e-8df9e07c4a31.85cf01bc-52fb-4bcba3ea6</span>
<span style="font-family: 'courier new', courier, monospace;">              velero.io/restore-name=cormac-restore-260114</span>
<span style="font-family: 'courier new', courier, monospace;">              velero.io/restore-uid=90ca852c-7601-4c70-bd8e-8df9e07c4a31</span>
<span style="font-family: 'courier new', courier, monospace;">Annotations:  &lt;none&gt;</span>
<span style="font-family: 'courier new', courier, monospace;">API Version:  velero.io/v2alpha1</span>
<span style="font-family: 'courier new', courier, monospace;">Kind:         DataDownload</span>
<span style="font-family: 'courier new', courier, monospace;">Metadata:</span>
<span style="font-family: 'courier new', courier, monospace;">  Creation Timestamp:  2026-01-14T13:57:38Z</span>
<span style="font-family: 'courier new', courier, monospace;">  Generate Name:       cormac-restore-260114-</span>
<span style="font-family: 'courier new', courier, monospace;">  Generation:          5</span>
<span style="font-family: 'courier new', courier, monospace;">  Owner References:</span>
<span style="font-family: 'courier new', courier, monospace;">    API Version:     velero.io/v1</span>
<span style="font-family: 'courier new', courier, monospace;">    Controller:      true</span>
<span style="font-family: 'courier new', courier, monospace;">    Kind:            Restore</span>
<span style="font-family: 'courier new', courier, monospace;">    Name:            cormac-restore-260114</span>
<span style="font-family: 'courier new', courier, monospace;">    UID:             90ca852c-7601-4c70-bd8e-8df9e07c4a31</span>
<span style="font-family: 'courier new', courier, monospace;">  Resource Version:  14953</span>
<span style="font-family: 'courier new', courier, monospace;">  UID:               1c8f7949-b20e-4878-96b8-46a7859423cf</span>
<span style="font-family: 'courier new', courier, monospace;">Spec:</span>
<span style="font-family: 'courier new', courier, monospace;">  Backup Storage Location:  default</span>
<span style="font-family: 'courier new', courier, monospace;">  Data Mover Config:</span>
<span style="font-family: 'courier new', courier, monospace;">    Write Sparse Files:  false</span>
<span style="font-family: 'courier new', courier, monospace;">  Node OS:               linux</span>
<span style="font-family: 'courier new', courier, monospace;">  Operation Timeout:     10m0s</span>
<span style="font-family: 'courier new', courier, monospace;">  Snapshot ID:           4ff960c3f4d2f55253926f36a66d5e50</span>
<span style="font-family: 'courier new', courier, monospace;">  Source Namespace:      cormac-ns</span>
<span style="font-family: 'courier new', courier, monospace;">  Target Volume:</span>
<span style="font-family: 'courier new', courier, monospace;">    Namespace:  cormac-ns</span>
<span style="font-family: 'courier new', courier, monospace;">    Pv:</span>
<span style="font-family: 'courier new', courier, monospace;">    Pvc:        example-cormac-block-pvc</span>
<span style="font-family: 'courier new', courier, monospace;">Status:</span>
<span style="font-family: 'courier new', courier, monospace;">  Accepted By Node:      kubernetes-cluster-dkpp-kubernetes-cluster-dkpp-np-pk3w-smkvs46</span>
<span style="font-family: 'courier new', courier, monospace;">  Accepted Timestamp:    2026-01-14T13:57:38Z</span>
<span style="font-family: 'courier new', courier, monospace;">  Completion Timestamp:  2026-01-14T13:58:01Z</span>
<span style="font-family: 'courier new', courier, monospace;">  Node:                  kubernetes-cluster-dkpp-kubernetes-cluster-dkpp-np-pk3w-smkvs46</span>
<span style="font-family: 'courier new', courier, monospace;">  Phase:                 Completed</span>
<span style="font-family: 'courier new', courier, monospace;">  Progress:</span>
<span style="font-family: 'courier new', courier, monospace;">  Start Timestamp:  2026-01-14T13:57:46Z</span>
<span style="font-family: 'courier new', courier, monospace;">Events:</span>
<span style="font-family: 'courier new', courier, monospace;">  Type    Reason               Age              From                         Message</span>
<span style="font-family: 'courier new', courier, monospace;">  ----    ------               ----             ----                         -------</span>
<span style="font-family: 'courier new', courier, monospace;">  Normal  Data-Path-Started    7m               cormac-restore-260114-v65f8  Data path <b>for</b> cormac-restore-260114-v65f8 started</span>
<span style="font-family: 'courier new', courier, monospace;">  Normal  Data-Path-Progress   7m (x2 over 7m)  cormac-restore-260114-v65f8  {}</span>
<span style="font-family: 'courier new', courier, monospace;">  Normal  Data-Path-Completed  7m               cormac-restore-260114-v65f8  {"target":{"byPath":"/1c8f7949-b20e-4878-96b8-46a7859423cf","volumeMode":"Filesystem"}}</span>
<span style="font-family: 'courier new', courier, monospace;">  Normal  Data-Path-Stopped    7m               cormac-restore-260114-v65f8  Data path <b>for</b> cormac-restore-260114-v65f8 stopped</span></pre>
<p style="text-align: justify;">And that completes the post. Hopefully this has demonstrated that Velero continues to be a very powerful command line tool for backing up and restoring Kubernetes workloads, not just vSphere Kubernetes Service (VKS) clusters. And if you have VCF Automation, remember that you do not need to do this manual approach, but instead you can use the VKS Management Data Protection tool via the UI.</p>
<p>The post <a href="https://cormachogan.com/2026/01/16/velero-revisited-manually-backing-up-vks-clusters-using-velero/">Velero Revisited &#8211; Manually backing up VKS clusters using Velero</a> appeared first on <a href="https://cormachogan.com">CormacHogan.com</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cormachogan.com/2026/01/16/velero-revisited-manually-backing-up-vks-clusters-using-velero/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">32731</post-id>	</item>
		<item>
		<title>A first look at VKSM Data Protection (VKSM DP)</title>
		<link>https://cormachogan.com/2026/01/14/a-first-look-at-vksm-data-protection-vksm-dp/</link>
					<comments>https://cormachogan.com/2026/01/14/a-first-look-at-vksm-data-protection-vksm-dp/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Cormac]]></dc:creator>
		<pubDate>Wed, 14 Jan 2026 14:00:57 +0000</pubDate>
				<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[Namespaces]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[VMware Cloud Foundation (VCF)]]></category>
		<category><![CDATA[vSphere]]></category>
		<category><![CDATA[vSphere Kubernetes Service (VKS)]]></category>
		<category><![CDATA[data protection]]></category>
		<category><![CDATA[VCF]]></category>
		<category><![CDATA[VCF Automation]]></category>
		<category><![CDATA[VCFA]]></category>
		<category><![CDATA[Velero]]></category>
		<category><![CDATA[VKS]]></category>
		<category><![CDATA[VKSM]]></category>
		<category><![CDATA[vSphere Kubernetes Service]]></category>
		<category><![CDATA[vSphere Kubernetes Service Management]]></category>
		<guid isPermaLink="false">https://cormachogan.com/?p=32694</guid>

					<description><![CDATA[<p>One of the new features in VCF Automation version 9.0.1 is a feature called vSphere Kubernetes Service Management, or VKSM for short. This gives users access to many additional capabilities, such as Data Protection, Policy Management and Add-on Management to improve the resiliency, security, and functionality of your VKS clusters. In this post, I wanted to take a look at the Data Protection capability (VKSM DP for short), as this is something I looked at quite closely in the past. To demonstrate, we will first configure a backup location, then enable Data Protection, then test a backup and restore of&#8230;</p>
<p>The post <a href="https://cormachogan.com/2026/01/14/a-first-look-at-vksm-data-protection-vksm-dp/">A first look at VKSM Data Protection (VKSM DP)</a> appeared first on <a href="https://cormachogan.com">CormacHogan.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2025/12/vmw-prod-icon-vSphere-kubernetes-service.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="alignleft wp-image-32627" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2025/12/vmw-prod-icon-vSphere-kubernetes-service.png?resize=150%2C150&#038;ssl=1" alt="" width="150" height="150" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2025/12/vmw-prod-icon-vSphere-kubernetes-service.png?w=400&amp;ssl=1 400w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2025/12/vmw-prod-icon-vSphere-kubernetes-service.png?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2025/12/vmw-prod-icon-vSphere-kubernetes-service.png?resize=150%2C150&amp;ssl=1 150w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a>One of the new features in VCF Automation version 9.0.1 is a feature called vSphere Kubernetes Service Management, or VKSM for short. This gives users access to many additional capabilities, such as Data Protection, Policy Management and Add-on Management to improve the resiliency, security, and functionality of your VKS clusters. In this post, I wanted to take a look at the Data Protection capability (VKSM DP for short), as this is something I looked at quite closely in the past. To demonstrate, we will first configure a backup location, then enable Data Protection, then test a backup and restore of a namespace in a VKS cluster.</p>
<p style="text-align: justify;">First of all, to get access to the new capabilities, you need to be logged in to the VCF Automation Organization Portal. From there, navigate to the Manage &amp; Govern section. Select Kubernetes Management under VCF Services in the left hand navigation pane, then select clusters and this will reveal which VKS clusters are deployed. In this example, there is only one. The fact that it appears here suggests that VKSM has already discovered this cluster and has added the appropriate add-ons to allow it to be managed from VCF Automation. It is in a Healthy and Ready state, which is obviously good. This view alone, when you have many, many VKS clusters, can really help determine the status of your VKS estate at a glance.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Kubernetes-Management.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32695 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Kubernetes-Management.png?resize=769%2C230&#038;ssl=1" alt="" width="769" height="230" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Kubernetes-Management.png?resize=1024%2C306&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Kubernetes-Management.png?resize=300%2C90&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Kubernetes-Management.png?resize=768%2C230&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Kubernetes-Management.png?resize=1536%2C459&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Kubernetes-Management.png?resize=769%2C230&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Kubernetes-Management.png?w=1608&amp;ssl=1 1608w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<h2>Initial Setup</h2>
<p style="text-align: justify;">Initially you will find that Data Protection is not enabled on your VKS cluster. To enable Data Protection, you will need to have access to an S3 compatible object store bucket as this is where Data Protection sends the backup data. To enable Data Protection, click on the link highlighted below.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-Kubernetes-Management-Enable-Data-Protection.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32696" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-Kubernetes-Management-Enable-Data-Protection.png?resize=769%2C377&#038;ssl=1" alt="" width="769" height="377" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-Kubernetes-Management-Enable-Data-Protection.png?resize=1024%2C502&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-Kubernetes-Management-Enable-Data-Protection.png?resize=300%2C147&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-Kubernetes-Management-Enable-Data-Protection.png?resize=768%2C377&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-Kubernetes-Management-Enable-Data-Protection.png?resize=769%2C377&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-Kubernetes-Management-Enable-Data-Protection.png?w=1508&amp;ssl=1 1508w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">When you enable data protection, this popup appears. VKSM DP uses Velero to provide backup and restore functionality. Backups can use both File System Backup (FSB) and CSI snapshots. Later, we will see how we can choose between the different backup methods for volumes. Click on Enable to continue.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/2.-Volume-Backup-Support.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32697 size-full" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/2.-Volume-Backup-Support.png?resize=461%2C300&#038;ssl=1" alt="" width="461" height="300" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/2.-Volume-Backup-Support.png?w=461&amp;ssl=1 461w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/2.-Volume-Backup-Support.png?resize=300%2C195&amp;ssl=1 300w" sizes="auto, (max-width: 461px) 100vw, 461px" /></a></p>
<p style="text-align: justify;">Once Data Protection has been enabled, you will see a new Data Protection tab for the cluster. You will also see a new data-protection agent/extension in the health view. Lastly, you will notice a warning about a missing backup target. This is the S3 bucket mentioned earlier. We will need to create a set of credentials for this target, as well as configure the target.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/4.-Message-to-create-backup-target.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32699" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/4.-Message-to-create-backup-target.png?resize=769%2C396&#038;ssl=1" alt="" width="769" height="396" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/4.-Message-to-create-backup-target.png?resize=1024%2C527&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/4.-Message-to-create-backup-target.png?resize=300%2C154&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/4.-Message-to-create-backup-target.png?resize=768%2C395&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/4.-Message-to-create-backup-target.png?resize=769%2C396&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/4.-Message-to-create-backup-target.png?w=1509&amp;ssl=1 1509w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">A similar, related message about missing credentials is seen if you try to configure the target location without first creating some credentials. Create the credentials by navigating to Configurations page, shown below. There are two configurations here &#8211; Credentials and Target Locations. Start with creating a new set of credentials.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/5.-Message-to-create-an-account.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32700" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/5.-Message-to-create-an-account.png?resize=769%2C348&#038;ssl=1" alt="" width="769" height="348" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/5.-Message-to-create-an-account.png?resize=1024%2C464&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/5.-Message-to-create-an-account.png?resize=300%2C136&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/5.-Message-to-create-an-account.png?resize=768%2C348&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/5.-Message-to-create-an-account.png?resize=769%2C348&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/5.-Message-to-create-an-account.png?w=1504&amp;ssl=1 1504w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">The account credentials should contain an access key and secret key to allow Velero to access the S3 bucket. This is so that it can send the file backup data and potentially the CSI snapshot data, if this method is chosen for volume backups. More on this when we take a backup.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/6.-Create-account-credential.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32701" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/6.-Create-account-credential.png?resize=769%2C240&#038;ssl=1" alt="" width="769" height="240" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/6.-Create-account-credential.png?resize=1024%2C320&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/6.-Create-account-credential.png?resize=300%2C94&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/6.-Create-account-credential.png?resize=768%2C240&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/6.-Create-account-credential.png?resize=769%2C240&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/6.-Create-account-credential.png?w=1510&amp;ssl=1 1510w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">With the credential created, we can now begin to create the backup target. First step is to provide the credentials for the backup target which we just created in the previous step.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/8.-Create-target-location-credenital.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32702" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/8.-Create-target-location-credenital.png?resize=769%2C333&#038;ssl=1" alt="" width="769" height="333" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/8.-Create-target-location-credenital.png?resize=1024%2C443&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/8.-Create-target-location-credenital.png?resize=300%2C130&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/8.-Create-target-location-credenital.png?resize=768%2C332&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/8.-Create-target-location-credenital.png?resize=769%2C333&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/8.-Create-target-location-credenital.png?w=1505&amp;ssl=1 1505w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">We then begin providing details about the storage provider and bucket. In this case, I am using a MinIO object store, but any compatible S3 API bucket should suffice.  Because I have TLS enabled on MinIO, I am providing a Certificate Authority from the MinIO server to that trust can be established to it by VKSM DP / Velero .</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/9.-bucket-provider-details.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32703" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/9.-bucket-provider-details.png?resize=769%2C667&#038;ssl=1" alt="" width="769" height="667" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/9.-bucket-provider-details.png?resize=1024%2C888&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/9.-bucket-provider-details.png?resize=300%2C260&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/9.-bucket-provider-details.png?resize=768%2C666&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/9.-bucket-provider-details.png?resize=769%2C667&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/9.-bucket-provider-details.png?w=1059&amp;ssl=1 1059w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Next, from my list of VKS clusters, I select which ones are allowed to use this backup target. As I only have a single VKS, I only choose one in this example. Note that as you create further VKS clusters, you will also need to navigate to this point to assign your new cluster to the existing backup target location to allow it to use VKSM DP.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/10.-Assign-VKS-clusters-to-backup-target.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-full wp-image-32704" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/10.-Assign-VKS-clusters-to-backup-target.png?resize=769%2C562&#038;ssl=1" alt="" width="769" height="562" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/10.-Assign-VKS-clusters-to-backup-target.png?w=997&amp;ssl=1 997w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/10.-Assign-VKS-clusters-to-backup-target.png?resize=300%2C219&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/10.-Assign-VKS-clusters-to-backup-target.png?resize=768%2C561&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/10.-Assign-VKS-clusters-to-backup-target.png?resize=769%2C562&amp;ssl=1 769w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">After giving the backup target a name, I save it. The backup target is now successfully configured.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/12.-Target-location-configured.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32705" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/12.-Target-location-configured.png?resize=769%2C237&#038;ssl=1" alt="" width="769" height="237" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/12.-Target-location-configured.png?resize=1024%2C316&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/12.-Target-location-configured.png?resize=300%2C92&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/12.-Target-location-configured.png?resize=768%2C237&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/12.-Target-location-configured.png?resize=1536%2C473&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/12.-Target-location-configured.png?resize=769%2C237&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/12.-Target-location-configured.png?w=1603&amp;ssl=1 1603w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Data Protection is now available on my VKS cluster.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/13.-Data-Protection-enabled.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32706" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/13.-Data-Protection-enabled-1024x468.png?resize=769%2C351&#038;ssl=1" alt="" width="769" height="351" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/13.-Data-Protection-enabled.png?resize=1024%2C468&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/13.-Data-Protection-enabled.png?resize=300%2C137&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/13.-Data-Protection-enabled.png?resize=768%2C351&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/13.-Data-Protection-enabled.png?resize=1536%2C702&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/13.-Data-Protection-enabled.png?resize=769%2C351&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/13.-Data-Protection-enabled.png?w=1604&amp;ssl=1 1604w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">This completes the setup. Let&#8217;s now try some backup and restore operations.</p>
<h2>Create a stateful app on the VKS cluster</h2>
<p style="text-align: justify;">To provide something useful for the backup and restore, I made a very simple Pod and PVC using the below manifests, and deployed them into a new namespace in the VKS cluster called cormac-ns. Obviously this is a very simple example, as you can use VKSM DP to backup the whole of the VKS cluster. However, this simple app is just to show the backup and restore functionality in a way that is easy to follow. I won&#8217;t delve into describing the contents of each manifest. There is plenty of K8s documentation online that describe this already.</p>
<p class="p1"><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">apiVersion: v1</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">kind: PersistentVolumeClaim</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">metadata:</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>name: cormac-block-pvc</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>namespace: cormac-ns</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">spec:</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"> accessModes:</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>&#8211; ReadWriteOnce</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>resources:</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>requests:</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">      </span>storage: 5Gi</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>storageClassName: vsan-default-storage-policy<br />
&#8212;</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">apiVersion: v1</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">kind: Pod</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">metadata:</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>name: cormac-pod</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>namespace: cormac-ns</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">spec:</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>securityContext:</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>runAsUser: 1000</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>runAsGroup: 3000</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>fsGroup: 2000</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>supplementalGroups: [4000]</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>containers:</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>&#8211; name: busybox</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>image: &#8220;busybox:latest&#8221;</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>command: [ &#8220;sleep&#8221;, &#8220;1000000&#8221; ]</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>securityContext:</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">      </span>allowPrivilegeEscalation: false</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">      </span>capabilities:</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">        </span>drop: [&#8220;ALL&#8221;]</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">      </span>runAsNonRoot: true</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">      </span>runAsUser: 1000</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">      </span>seccompProfile:</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">        </span>type: &#8220;RuntimeDefault&#8221;</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>volumeMounts:</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">      </span>&#8211; mountPath: &#8220;/demo&#8221;</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">        </span>name: demo-vol</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">  </span>volumes:</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">    </span>&#8211; name: demo-vol</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">      </span>persistentVolumeClaim:</span><br />
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;"><span class="Apple-converted-space">        </span>claimName: cormac-block-pvc</span></p>
<p style="text-align: justify;">Apply these manifests, and if you wish, use the <em>kubectl exec </em>onto the pod and create some files in the /demo folder which is where the volume has been mounted to.</p>
<h2>VKSM DP Backup</h2>
<p style="text-align: justify;">Using KSM Data Protection, I can now initiate a backup. The first question that you are prompted with is to select the object or objects that you wish to backup. This could be the whole VKS cluster, a namespace, or a set of objects identified by a selector. In this case, I went with a single namespace backup, cormac-ns.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-what-to-backup.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32708" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-what-to-backup.png?resize=769%2C423&#038;ssl=1" alt="" width="769" height="423" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-what-to-backup.png?resize=1024%2C563&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-what-to-backup.png?resize=300%2C165&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-what-to-backup.png?resize=768%2C423&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-what-to-backup.png?resize=1536%2C845&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-what-to-backup.png?resize=769%2C423&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/1.-what-to-backup.png?w=1603&amp;ssl=1 1603w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Now comes the interesting part which is determining &#8220;how&#8221; to do the backup. There are two options for the File Share Backup (FSB), opt-in and opt-out. If you choose FSB Opt-in, then you have to add some special annotation to the volumes (i.e., Opt-in) if you WANT them to be backed up by FSB. If you choose FSB Opt-out, again, you have add special annotations (i.e., Opt-out) if you DO NOT WANT the volumes to be backed up by FSB. Thus, if you want all volumes to be backed up using the CSI snapshot method, select both &#8220;Use FSB Opt-in approach&#8221; and &#8220;Use CSI Snapshot backup&#8221; as shown below. If no FSB annotations are added to any volumes, then CSI will be used for all volumes. See <a class="external-link" href="https://velero.io/docs/v1.10/file-system-backup/#using-the-opt-out-approach">https://velero.io/docs/v1.10/file-system-backup/#using-the-opt-out-approach </a>for more information on annotations. Note that you are annotating with the name of the volume as seen by the Pod, not the actual PVC name. The &#8220;do not meet prerequisites for CSI snapshot&#8221; is a warning and can be ignored in as VKS Clusters deployed via VCF Automation should automatically have all of the necessary components in place. However, there is a link provided to the documentation where you can verify that the pre-requisites are indeed being met.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Screenshot-2026-01-13-at-11.24.59.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32711" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Screenshot-2026-01-13-at-11.24.59.png?resize=769%2C451&#038;ssl=1" alt="" width="769" height="451" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Screenshot-2026-01-13-at-11.24.59.png?resize=1024%2C601&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Screenshot-2026-01-13-at-11.24.59.png?resize=300%2C176&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Screenshot-2026-01-13-at-11.24.59.png?resize=768%2C451&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Screenshot-2026-01-13-at-11.24.59.png?resize=769%2C452&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/Screenshot-2026-01-13-at-11.24.59.png?w=1388&amp;ssl=1 1388w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Once you have decided on the volume backup method, click next. Now select the backup location that we created previously.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/3.-backup-location.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32712" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/3.-backup-location.png?resize=769%2C374&#038;ssl=1" alt="" width="769" height="374" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/3.-backup-location.png?resize=1024%2C498&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/3.-backup-location.png?resize=300%2C146&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/3.-backup-location.png?resize=768%2C373&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/3.-backup-location.png?resize=1536%2C747&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/3.-backup-location.png?resize=769%2C374&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/3.-backup-location.png?w=1602&amp;ssl=1 1602w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Set the backup schedule. You can create a schedule to meet your requirements, and take backup son a regular basic. Or, do what I am doing here and take a one-off backup right now.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/4.-backup-schedule.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32713" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/4.-backup-schedule.png?resize=769%2C360&#038;ssl=1" alt="" width="769" height="360" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/4.-backup-schedule.png?resize=1024%2C480&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/4.-backup-schedule.png?resize=300%2C141&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/4.-backup-schedule.png?resize=768%2C360&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/4.-backup-schedule.png?resize=1536%2C721&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/4.-backup-schedule.png?resize=769%2C361&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/4.-backup-schedule.png?w=1603&amp;ssl=1 1603w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Select a retention policy for the backup (how long to keep it). By default the retention is set to 30 days.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/5.-retention-policy.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32714" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/5.-retention-policy.png?resize=769%2C354&#038;ssl=1" alt="" width="769" height="354" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/5.-retention-policy.png?resize=1024%2C471&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/5.-retention-policy.png?resize=300%2C138&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/5.-retention-policy.png?resize=768%2C353&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/5.-retention-policy.png?resize=1536%2C706&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/5.-retention-policy.png?resize=769%2C354&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/5.-retention-policy.png?w=1603&amp;ssl=1 1603w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Give the backup a name, and hit the create button.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/6.-backup-name.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32715" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/6.-backup-name.png?resize=769%2C319&#038;ssl=1" alt="" width="769" height="319" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/6.-backup-name.png?resize=1024%2C425&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/6.-backup-name.png?resize=300%2C125&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/6.-backup-name.png?resize=768%2C319&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/6.-backup-name.png?resize=1536%2C638&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/6.-backup-name.png?resize=769%2C319&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/6.-backup-name.png?w=1603&amp;ssl=1 1603w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Backup will enter in progress state, and all going well, should soon report completion.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/8.-backup-completed.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32716" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/8.-backup-completed.png?resize=769%2C422&#038;ssl=1" alt="" width="769" height="422" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/8.-backup-completed.png?resize=1024%2C562&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/8.-backup-completed.png?resize=300%2C165&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/8.-backup-completed.png?resize=768%2C422&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/8.-backup-completed.png?resize=1536%2C844&amp;ssl=1 1536w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/8.-backup-completed.png?resize=769%2C422&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/8.-backup-completed.png?w=1604&amp;ssl=1 1604w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">After completion, click on the backup to see the backup details. It should report that the backup method was CSI snapshot and not FSB in the Persistent Volumes section. If it reports FSB, check that you made the correct backup selection, and that the Pod does not have any FSB annotations if FSB Opt-in was chosen.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/backup-details.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32717" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/backup-details.png?resize=769%2C487&#038;ssl=1" alt="" width="769" height="487" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/backup-details.png?resize=1024%2C649&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/backup-details.png?resize=300%2C190&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/backup-details.png?resize=768%2C487&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/backup-details.png?resize=769%2C488&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/backup-details.png?w=1416&amp;ssl=1 1416w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<h2>VKSM DP Restore</h2>
<p>Let&#8217;s start a restore by first deleting the cormac-ns namespace. This will also delete the pod and pvc in the namespace.</p>
<pre><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$ <strong>kubectl delete ns cormac-ns</strong></span></pre>
<p style="text-align: justify;">Now let&#8217;s use VKMS DP to restore the namespace and its contents from our previous backup. There is a restore backup button in the top right hand corner of the backup details screen which we click to begin the operation.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-button-.png?ssl=1" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-32718 size-large" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-button-.png?resize=769%2C179&#038;ssl=1" alt="" width="769" height="179" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-button-.png?resize=1024%2C238&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-button-.png?resize=300%2C70&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-button-.png?resize=768%2C179&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-button-.png?resize=769%2C179&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-button-.png?w=1405&amp;ssl=1 1405w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">You are now prompted to select the scope of the restore. Is it the full backup you wish to restore, or perhaps just a single namespace or a set of objects identified by a label. I&#8217;ve selected a single namespace just to show you an example, but of course, we only backed up a single namespace anyway so we could have chosen to restore the entire backup. But hopefully you can see the flexibility available.</p>
<p style="text-align: justify;"><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-what.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32719" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-what.png?resize=769%2C401&#038;ssl=1" alt="" width="769" height="401" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-what.png?resize=1024%2C534&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-what.png?resize=300%2C157&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-what.png?resize=768%2C401&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-what.png?resize=769%2C401&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-what.png?w=1217&amp;ssl=1 1217w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Next, select the volumes to restore (optional). As we have only backed up a single volume using CSI snapshots, then this is the only volume available to restore as well. However, if you did not want to restore the volume, then you could un-click this option and just restore the pod.<a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-vols.png?ssl=1"><br />
<img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32720" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-vols.png?resize=769%2C551&#038;ssl=1" alt="" width="769" height="551" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-vols.png?resize=1024%2C734&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-vols.png?resize=300%2C215&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-vols.png?resize=768%2C550&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-vols.png?resize=769%2C551&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-vols.png?w=1221&amp;ssl=1 1221w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Finally, give the restore job a name, and click on the restore button.</p>
<p><a href="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-name.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-large wp-image-32721" src="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-name.png?resize=769%2C257&#038;ssl=1" alt="" width="769" height="257" srcset="https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-name.png?resize=1024%2C342&amp;ssl=1 1024w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-name.png?resize=300%2C100&amp;ssl=1 300w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-name.png?resize=768%2C256&amp;ssl=1 768w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-name.png?resize=769%2C257&amp;ssl=1 769w, https://i0.wp.com/cormachogan.com/wp-content/uploads/2026/01/vksm-dp-restore-name.png?w=1208&amp;ssl=1 1208w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></p>
<p style="text-align: justify;">Once the restore successfully completes, you should observe the namespace and its contents restored.</p>
<pre><span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">$ <strong>kubectl get pod,pvc -n cormac-ns</strong></span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">NAME            READY  STATUS   RESTARTS  AGE</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">pod/cormac-pod  1/1    Running  0         5m23s</span>

<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">NAME                                     STATUS  VOLUME                                    CAPACITY  ACCESS MODES  STORAGECLASS                 VOLUMEATTRIBUTESCLASS  AGE</span>
<span style="font-family: 'courier new', courier, monospace; font-size: 10pt;">persistentvolumeclaim/cormac-block-pvc   Bound   pvc-0f8fd0bc-c2c2-4a9e-89b9-b9e6f2b9d1f3  5Gi       RWO           vsan-default-storage-policy  &lt;unset&gt;                5m24s</span></pre>
<p style="text-align: justify;"><strong>Success</strong>. We have used VKSM Data Protection to backup and restore a namespace. That completes the post. I think this is a really nice feature which is now available as part of VKSM in VCFA 9.0.1 and later.</p>
<p>The post <a href="https://cormachogan.com/2026/01/14/a-first-look-at-vksm-data-protection-vksm-dp/">A first look at VKSM Data Protection (VKSM DP)</a> appeared first on <a href="https://cormachogan.com">CormacHogan.com</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cormachogan.com/2026/01/14/a-first-look-at-vksm-data-protection-vksm-dp/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">32694</post-id>	</item>
	</channel>
</rss>
