Jekyll2023-10-29T19:08:19+00:00https://www.vgemba.net/feed.xmlvGemba.netA blog about IT, VMware, PowerShell, Automation and CareersColin Westwatercwestwater+blog@gmail.comPacker vmware-iso Template Import Issue2023-05-08T00:00:00+01:002023-05-08T00:00:00+01:00https://www.vgemba.net/vmware/packer-workstation-import<h2 id="introduction">Introduction</h2>
<p>I have finally completed my Packer Build for Windows Server using the <a href="https://developer.hashicorp.com/packer/plugins/builders/vmware/iso">vmware-iso</a> plugin which creates templates in VMware Workstation. However, I found an issue when trying to use the generated ova or ovf file. This post will detail the importance of keeping software up to date!</p>
<h2 id="versions">Versions</h2>
<p>This post was written using the following versions:</p>
<ul>
<li>Packer v1.8.6</li>
<li>vmware-iso plugin v1.0.7</li>
<li>VMware Open Virtualization Format Tool v4.4.3</li>
<li>VMware Workstation v17.01</li>
</ul>
<h2 id="the-issue">The Issue</h2>
<p>I was finishing my Packer builds for VMware Workstation and successfully created and tested Windows Server 2016 and 2019. However, I noticed a problem after the OVA or OVF was successfully created. The template imports successfully:</p>
<p><img src="https://www.vgemba.net/assets/images/ova-import-error.png" alt="OVA Import" /></p>
<p>Nonetheless on booting the VM the following is shown:</p>
<p><img src="https://www.vgemba.net/assets/images/boot-error.png" alt="Boot Error" /></p>
<p>and then the VM goes into the EFI Boot Manager:</p>
<p><img src="https://www.vgemba.net/assets/images/boot-manager.png" alt="Boot Manager" /></p>
<p>The VM will simply not boot correctly.</p>
<h2 id="the-workaround">The Workaround</h2>
<p>After investigation, I stumbled upon the issue with the imported VM. Looking at the VM Settings and then the General Settings I saw the Guest operating system was set to Other/Other:</p>
<p><img src="https://www.vgemba.net/assets/images/bad-vm-settings.png" alt="Bad VM Settings" /></p>
<p>This should be set to Microsoft Windows/Windows Server 2022:</p>
<p><img src="https://www.vgemba.net/assets/images/good-vm-settings.png" alt="Good VM Settings" /></p>
<p>Now the VM boots correctly - but why?</p>
<h2 id="the-fix">The Fix</h2>
<p>This is ultimately a tale of keeping your software up to date. It turns out I was running <a href="https://developer.vmware.com/web/tool/4.4.0/ovf">v4.4.3</a> of the OVF Tool. Upon further research I found out <a href="https://developer.vmware.com/web/tool/4.6.0/ovf-tool">v4.6.0</a> was available. As soon as I installed the new version and re-ran the Packer build importing the OVA worked correctly:</p>
<p><img src="https://www.vgemba.net/assets/images/good-vm-settings.png" alt="Good VM Settings" /></p>
<p>When searching Google for the <a href="https://www.google.com/search?q=ovf+tool">term OVF Tool</a> the first link brings up the page for <a href="https://developer.vmware.com/web/tool/4.4.0/ovf">v4.4.0</a> but notice on the page the statement:</p>
<blockquote>
<p>Note: OVF Tool 4.5 for vSphere 8.0 is here at this location, not in the drop-down menu.</p>
</blockquote>
<p>Not sure why the drop-down can’t have the latest version in it.</p>
<h2 id="wrap-up">Wrap Up</h2>
<p>I read the release notes for OVF Tool and could not see the details of what Operating Systems it supports for the metadata of the OS Config. Maybe VMware could incorporate that.</p>
<p>Anyway, a lesson in keeping your software up to date!</p>Colin Westwatercwestwater+blog@gmail.comHow to fix an issue when deploying a Windows Server 2022 template in VMware Workstation generated with Packer's vmware-iso pluginWindows Patch Slipstreaming2023-03-21T00:00:00+00:002023-03-21T00:00:00+00:00https://www.vgemba.net/microsoft/windows-slipstreaming<h2 id="introduction">Introduction</h2>
<p>I recently bought a <a href="https://frame.work/gb/en/products/laptop-diy-12-gen-intel">new laptop</a> and one of the first things to do was install Windows 11. I downloaded the latest Windows ISO from Microsoft. However, I found that it was several months behind the current build version so I decided to slipstream the latest Windows Cumulative Update (CU) to the ISO before I imaged the laptop.</p>
<p>The last time I did this, I used <a href="https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/what-is-dism?view=windows-11">dism</a> to slipstream the update into the wim file that Windows is installed from. I noticed this time there are PowerShell cmdlets to do everything instead. This post will document the process using those cmdlets.</p>
<h2 id="versions">Versions</h2>
<p>In this blog post, I was using the following versions:</p>
<ul>
<li>Downloaded Windows 11 Pro 22H2 ISO from Microsoft - Build 22621.525</li>
<li>Windows 11 Pro 22H2 Cumulative Update February 14th, 2023 - <a href="https://support.microsoft.com/en-us/topic/february-14-2023-kb5022845-os-build-22621-1265-90a807f4-d2e8-486e-8a43-d09e66319f38">KB5022845</a></li>
</ul>
<h2 id="outline-of-the-process">Outline of the process</h2>
<p>The steps that will be performed are as follows:</p>
<ol>
<li>Download the ISO and CU from Microsoft</li>
<li>Extract the wim file from the ISO</li>
<li>Mount the wim file</li>
<li>Install the CU</li>
<li>Unmount the wim and convert back to .esd</li>
</ol>
<h3 id="download-the-iso-and-cu-from-microsoft">Download the ISO and CU from Microsoft</h3>
<p>Microsoft has the Windows 11 ISO freely available to download. Go to the <a href="https://www.microsoft.com/software-download/windows11">download page</a> and scroll down to the section <code class="language-plaintext highlighter-rouge">Download Windows 11 Disk Image (ISO) for x64 devices</code>.</p>
<p>Microsoft makes it easy to find the list of Windows Cumulative Updates. If you don’t have the link you can Google the term <code class="language-plaintext highlighter-rouge">Windows 11 update history</code> and one of the top results will be the page <a href="https://learn.microsoft.com/en-us/windows/release-health/windows11-release-information">Windows 11 release information</a>. In the table under Windows 11 release history, you will see all the CU’s sorted by date. In this example I am going to download the update from 2023-02-14, KB5022845:</p>
<p><img src="https://www.vgemba.net/assets/images/windows-11-release-history.png" alt="Windows 11 release history" /></p>
<p>Place both files in a temp folder. In the following examples, I am using <code class="language-plaintext highlighter-rouge">C:\Temp</code>.</p>
<h3 id="extract-the-wim-file-from-the-iso">Extract the wim file from the ISO</h3>
<p>Now you have the necessary files downloaded, the next step is to get the Windows image file. Use a tool such as <a href="https://7-zip.org/download.html">7-Zip</a> to open the ISO file and browse to the <code class="language-plaintext highlighter-rouge">sources</code> folder. In there you will see a file called <code class="language-plaintext highlighter-rouge">install.esd</code>. Extract this to <code class="language-plaintext highlighter-rouge">C:\Temp</code>.</p>
<blockquote>
<p>Traditionally a .wim file was in the sources folder but that changed to the .esd format. What is an .esd file? It is an encrypted .wim file</p>
</blockquote>
<p>So how do we get the .wim from the .esd? First, check the images in the .esd:</p>
<div class="language-posh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">PS</span><span class="w"> </span><span class="nx">C:\Temp</span><span class="err">></span><span class="w"> </span><span class="nx">Get-WindowsImage</span><span class="w"> </span><span class="nt">-ImagePath</span><span class="w"> </span><span class="s2">"C:\Temp\install.esd"</span><span class="w">
</span><span class="n">ImageIndex</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">1</span><span class="w">
</span><span class="n">ImageName</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Home</span><span class="w">
</span><span class="n">ImageDescription</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Home</span><span class="w">
</span><span class="n">ImageSize</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">16</span><span class="p">,</span><span class="nx">168</span><span class="p">,</span><span class="nx">829</span><span class="p">,</span><span class="nx">996</span><span class="w"> </span><span class="nx">bytes</span><span class="w">
</span><span class="n">ImageIndex</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">2</span><span class="w">
</span><span class="n">ImageName</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Home</span><span class="w"> </span><span class="nx">N</span><span class="w">
</span><span class="n">ImageDescription</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Home</span><span class="w"> </span><span class="nx">N</span><span class="w">
</span><span class="n">ImageSize</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">15</span><span class="p">,</span><span class="nx">506</span><span class="p">,</span><span class="nx">889</span><span class="p">,</span><span class="nx">019</span><span class="w"> </span><span class="nx">bytes</span><span class="w">
</span><span class="n">ImageIndex</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">3</span><span class="w">
</span><span class="n">ImageName</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Home</span><span class="w"> </span><span class="nx">Single</span><span class="w"> </span><span class="nx">Language</span><span class="w">
</span><span class="n">ImageDescription</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Home</span><span class="w"> </span><span class="nx">Single</span><span class="w"> </span><span class="nx">Language</span><span class="w">
</span><span class="n">ImageSize</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">16</span><span class="p">,</span><span class="nx">153</span><span class="p">,</span><span class="nx">401</span><span class="p">,</span><span class="nx">297</span><span class="w"> </span><span class="nx">bytes</span><span class="w">
</span><span class="n">ImageIndex</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">4</span><span class="w">
</span><span class="n">ImageName</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Education</span><span class="w">
</span><span class="n">ImageDescription</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Education</span><span class="w">
</span><span class="n">ImageSize</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">16</span><span class="p">,</span><span class="nx">463</span><span class="p">,</span><span class="nx">631</span><span class="p">,</span><span class="nx">301</span><span class="w"> </span><span class="nx">bytes</span><span class="w">
</span><span class="n">ImageIndex</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">5</span><span class="w">
</span><span class="n">ImageName</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Education</span><span class="w"> </span><span class="nx">N</span><span class="w">
</span><span class="n">ImageDescription</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Education</span><span class="w"> </span><span class="nx">N</span><span class="w">
</span><span class="n">ImageSize</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">15</span><span class="p">,</span><span class="nx">808</span><span class="p">,</span><span class="nx">633</span><span class="p">,</span><span class="nx">936</span><span class="w"> </span><span class="nx">bytes</span><span class="w">
</span><span class="n">ImageIndex</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">6</span><span class="w">
</span><span class="n">ImageName</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Pro</span><span class="w">
</span><span class="n">ImageDescription</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Pro</span><span class="w">
</span><span class="n">ImageSize</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">19</span><span class="p">,</span><span class="nx">716</span><span class="p">,</span><span class="nx">867</span><span class="p">,</span><span class="nx">544</span><span class="w"> </span><span class="nx">bytes</span><span class="w">
</span><span class="n">ImageIndex</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">7</span><span class="w">
</span><span class="n">ImageName</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Pro</span><span class="w"> </span><span class="nx">N</span><span class="w">
</span><span class="n">ImageDescription</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Pro</span><span class="w"> </span><span class="nx">N</span><span class="w">
</span><span class="n">ImageSize</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">15</span><span class="p">,</span><span class="nx">810</span><span class="p">,</span><span class="nx">170</span><span class="p">,</span><span class="nx">147</span><span class="w"> </span><span class="nx">bytes</span><span class="w">
</span><span class="n">ImageIndex</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">8</span><span class="w">
</span><span class="n">ImageName</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Pro</span><span class="w"> </span><span class="nx">Education</span><span class="w">
</span><span class="n">ImageDescription</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Pro</span><span class="w"> </span><span class="nx">Education</span><span class="w">
</span><span class="n">ImageSize</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">16</span><span class="p">,</span><span class="nx">463</span><span class="p">,</span><span class="nx">581</span><span class="p">,</span><span class="nx">511</span><span class="w"> </span><span class="nx">bytes</span><span class="w">
</span><span class="n">ImageIndex</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">9</span><span class="w">
</span><span class="n">ImageName</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Pro</span><span class="w"> </span><span class="nx">Education</span><span class="w"> </span><span class="nx">N</span><span class="w">
</span><span class="n">ImageDescription</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Pro</span><span class="w"> </span><span class="nx">Education</span><span class="w"> </span><span class="nx">N</span><span class="w">
</span><span class="n">ImageSize</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">15</span><span class="p">,</span><span class="nx">808</span><span class="p">,</span><span class="nx">583</span><span class="p">,</span><span class="nx">246</span><span class="w"> </span><span class="nx">bytes</span><span class="w">
</span><span class="n">ImageIndex</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">10</span><span class="w">
</span><span class="n">ImageName</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Pro</span><span class="w"> </span><span class="nx">for</span><span class="w"> </span><span class="nx">Workstations</span><span class="w">
</span><span class="n">ImageDescription</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Pro</span><span class="w"> </span><span class="nx">for</span><span class="w"> </span><span class="nx">Workstations</span><span class="w">
</span><span class="n">ImageSize</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">16</span><span class="p">,</span><span class="nx">463</span><span class="p">,</span><span class="nx">606</span><span class="p">,</span><span class="nx">406</span><span class="w"> </span><span class="nx">bytes</span><span class="w">
</span><span class="n">ImageIndex</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">11</span><span class="w">
</span><span class="n">ImageName</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Pro</span><span class="w"> </span><span class="nx">N</span><span class="w"> </span><span class="nx">for</span><span class="w"> </span><span class="nx">Workstations</span><span class="w">
</span><span class="n">ImageDescription</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Pro</span><span class="w"> </span><span class="nx">N</span><span class="w"> </span><span class="nx">for</span><span class="w"> </span><span class="nx">Workstations</span><span class="w">
</span><span class="n">ImageSize</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">15</span><span class="p">,</span><span class="nx">808</span><span class="p">,</span><span class="nx">608</span><span class="p">,</span><span class="nx">591</span><span class="w"> </span><span class="nx">bytes</span><span class="w">
</span></code></pre></div></div>
<p>As you can see the image has several versions of Windows 11 in it. I just want <code class="language-plaintext highlighter-rouge">Windows 11 Pro</code> so let’s check that version:</p>
<div class="language-posh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">PS</span><span class="w"> </span><span class="nx">E:\Temp</span><span class="err">></span><span class="w"> </span><span class="nx">Get-WindowsImage</span><span class="w"> </span><span class="nt">-ImagePath</span><span class="w"> </span><span class="nx">C:\Temp\install.wim</span><span class="w"> </span><span class="nt">-Name</span><span class="w"> </span><span class="s2">"Windows 11 Pro"</span><span class="w">
</span><span class="n">ImageIndex</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">6</span><span class="w">
</span><span class="n">ImageName</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Pro</span><span class="w">
</span><span class="n">ImageDescription</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Pro</span><span class="w">
</span><span class="n">ImageSize</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">16</span><span class="p">,</span><span class="nx">479</span><span class="p">,</span><span class="nx">089</span><span class="p">,</span><span class="nx">353</span><span class="w"> </span><span class="nx">bytes</span><span class="w">
</span><span class="n">WIMBoot</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">False</span><span class="w">
</span><span class="n">Architecture</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">x64</span><span class="w">
</span><span class="n">Hal</span><span class="w"> </span><span class="p">:</span><span class="w">
</span><span class="n">Version</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">10.0.22621.525</span><span class="w">
</span><span class="n">SPBuild</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">525</span><span class="w">
</span><span class="n">SPLevel</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">0</span><span class="w">
</span><span class="n">EditionId</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Professional</span><span class="w">
</span><span class="n">InstallationType</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Client</span><span class="w">
</span><span class="n">ProductType</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">WinNT</span><span class="w">
</span><span class="n">ProductSuite</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Terminal</span><span class="w"> </span><span class="nx">Server</span><span class="w">
</span><span class="n">SystemRoot</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">WINDOWS</span><span class="w">
</span><span class="n">DirectoryCount</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">22867</span><span class="w">
</span><span class="n">FileCount</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">103384</span><span class="w">
</span><span class="n">CreatedTime</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">25/09/2022</span><span class="w"> </span><span class="nx">02:47:30</span><span class="w">
</span><span class="n">ModifiedTime</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">25/09/2022</span><span class="w"> </span><span class="nx">03:25:18</span><span class="w">
</span><span class="n">Languages</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">en-US</span><span class="w"> </span><span class="p">(</span><span class="n">Default</span><span class="p">)</span><span class="w">
</span></code></pre></div></div>
<p>You can see this is Windows 11 Pro, Build 22621.525. Checking the build history, this is patched to September 27th, 2022 so a few months out of date.</p>
<p>So now we should extract the .wim from the .esd:</p>
<div class="language-posh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">PS</span><span class="w"> </span><span class="nx">C:\Temp</span><span class="err">></span><span class="w"> </span><span class="nx">Export-WindowsImage</span><span class="w"> </span><span class="nt">-SourceImagePath</span><span class="w"> </span><span class="s2">"C:\Temp\install.esd"</span><span class="w"> </span><span class="nt">-SourceName</span><span class="w"> </span><span class="s2">"Windows 11 Pro"</span><span class="w"> </span><span class="nt">-DestinationImagePath</span><span class="w"> </span><span class="s2">"C:\Temp\install.wim"</span><span class="w"> </span><span class="nt">-CompressionType</span><span class="w"> </span><span class="nx">max</span><span class="w"> </span><span class="nt">-CheckIntegrity</span><span class="w">
</span></code></pre></div></div>
<h3 id="mount-the-wim-file">Mount the wim file</h3>
<p>Now we can mount the .wim file. Mounting extracts the .wim file to a folder so the files in the Windows installation can be modified:</p>
<div class="language-posh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Create a folder to mount the wim into:</span><span class="w">
</span><span class="n">PS</span><span class="w"> </span><span class="nx">C:\Temp</span><span class="err">></span><span class="w"> </span><span class="nx">New-Item</span><span class="w"> </span><span class="nt">-Path</span><span class="w"> </span><span class="s2">"C:\Temp\mount"</span><span class="w"> </span><span class="nt">-ItemType</span><span class="w"> </span><span class="nx">Directory</span><span class="w">
</span><span class="c"># Mount the wim file:</span><span class="w">
</span><span class="n">PS</span><span class="w"> </span><span class="nx">C:\Temp</span><span class="err">></span><span class="w"> </span><span class="nx">Mount-WindowsImage</span><span class="w"> </span><span class="nt">-ImagePath</span><span class="w"> </span><span class="nx">C:\Temp\install.wim</span><span class="w"> </span><span class="nt">-Name</span><span class="w"> </span><span class="s2">"Windows 11 Pro"</span><span class="w"> </span><span class="nt">-Path</span><span class="w"> </span><span class="nx">C:\Temp\Mount</span><span class="w">
</span><span class="n">Path</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">C:\Temp\Mount</span><span class="w">
</span><span class="n">Online</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">False</span><span class="w">
</span><span class="n">RestartNeeded</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">False</span><span class="w">
</span></code></pre></div></div>
<p>You can browse the mount directory and see the typical files of a Windows installation:</p>
<p><img src="https://www.vgemba.net/assets/images/wim-mount.png" alt="Mounted wim" /></p>
<h3 id="install-the-update">Install the Update</h3>
<p>Now we can do some work on the image. Using <code class="language-plaintext highlighter-rouge">Add-WindowsPackage</code> you can slipstream the <code class="language-plaintext highlighter-rouge">.msu</code> update to the mounted image:</p>
<div class="language-posh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">PS</span><span class="w"> </span><span class="nx">C:\Temp</span><span class="err">></span><span class="w"> </span><span class="nx">Add-WindowsPackage</span><span class="w"> </span><span class="nt">-Path</span><span class="w"> </span><span class="nx">C:\Temp\Mount</span><span class="w"> </span><span class="nt">-PackagePath</span><span class="w"> </span><span class="nx">C:\Temp\windows11.0-kb5022845-x64_279b2b5fcc98e99c79f85a395cd7e8eef8d06503.msu</span><span class="w">
</span><span class="n">Path</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">C:\Temp\Mount</span><span class="w">
</span><span class="n">Online</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">False</span><span class="w">
</span><span class="n">RestartNeeded</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">False</span><span class="w">
</span></code></pre></div></div>
<p>As easy as that. Now the image has been updated I like to use <code class="language-plaintext highlighter-rouge">Repair-WindowsImage</code> to clean up superseded components and reset the base of superseded components to reduce the size of the component store:</p>
<div class="language-posh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">PS</span><span class="w"> </span><span class="nx">C:\Temp</span><span class="err">></span><span class="w"> </span><span class="nx">Repair-WindowsImage</span><span class="w"> </span><span class="nt">-Path</span><span class="w"> </span><span class="nx">C:\Temp\Mount</span><span class="w"> </span><span class="nt">-StartComponentCleanup</span><span class="w"> </span><span class="nt">-ResetBase</span><span class="w">
</span><span class="n">Path</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">C:\Temp\Mount</span><span class="w">
</span><span class="n">Online</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">False</span><span class="w">
</span><span class="n">ImageHealthState</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Healthy</span><span class="w">
</span><span class="n">RestartNeeded</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">False</span><span class="w">
</span></code></pre></div></div>
<h3 id="unmount-the-wim-and-convert-to-esu">Unmount the wim and convert to ESU</h3>
<p>We are now ready to unmount the wim file that has been patched. Using <code class="language-plaintext highlighter-rouge">Dismount-WindowsImage</code>:</p>
<div class="language-posh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">PS</span><span class="w"> </span><span class="nx">C:\Temp</span><span class="err">></span><span class="w"> </span><span class="nx">Dismount-WindowsImage</span><span class="w"> </span><span class="nt">-Path</span><span class="w"> </span><span class="nx">C:\Temp\Mount</span><span class="w"> </span><span class="nt">-Save</span><span class="w">
</span><span class="n">LogPath</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">C:\Windows\Logs\DISM\dism.log</span><span class="w">
</span></code></pre></div></div>
<p>Checking the build version of the patched <code class="language-plaintext highlighter-rouge">install.wim</code> to see if it has been updated:</p>
<div class="language-posh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">PS</span><span class="w"> </span><span class="nx">C:\Temp</span><span class="err">></span><span class="w"> </span><span class="nx">Get-WindowsImage</span><span class="w"> </span><span class="nt">-ImagePath</span><span class="w"> </span><span class="nx">C:\Temp\install.wim</span><span class="w"> </span><span class="nt">-Name</span><span class="w"> </span><span class="s2">"Windows 11 Pro"</span><span class="w">
</span><span class="n">ImageIndex</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">6</span><span class="w">
</span><span class="n">ImageName</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Pro</span><span class="w">
</span><span class="n">ImageDescription</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">11</span><span class="w"> </span><span class="nx">Pro</span><span class="w">
</span><span class="n">ImageSize</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">19</span><span class="p">,</span><span class="nx">699</span><span class="p">,</span><span class="nx">409</span><span class="p">,</span><span class="nx">370</span><span class="w"> </span><span class="nx">bytes</span><span class="w">
</span><span class="n">WIMBoot</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">False</span><span class="w">
</span><span class="n">Architecture</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">x64</span><span class="w">
</span><span class="n">Hal</span><span class="w"> </span><span class="p">:</span><span class="w">
</span><span class="n">Version</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">10.0.22621.1265</span><span class="w">
</span><span class="n">SPBuild</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">1265</span><span class="w">
</span><span class="n">SPLevel</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">0</span><span class="w">
</span><span class="n">EditionId</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Professional</span><span class="w">
</span><span class="n">InstallationType</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Client</span><span class="w">
</span><span class="n">ProductType</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">WinNT</span><span class="w">
</span><span class="n">ProductSuite</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">Terminal</span><span class="w"> </span><span class="nx">Server</span><span class="w">
</span><span class="n">SystemRoot</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">WINDOWS</span><span class="w">
</span><span class="n">DirectoryCount</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">30127</span><span class="w">
</span><span class="n">FileCount</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">127185</span><span class="w">
</span><span class="n">CreatedTime</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">25/09/2022</span><span class="w"> </span><span class="nx">02:47:30</span><span class="w">
</span><span class="n">ModifiedTime</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">19/03/2023</span><span class="w"> </span><span class="nx">16:25:18</span><span class="w">
</span><span class="n">Languages</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">en-US</span><span class="w"> </span><span class="p">(</span><span class="n">Default</span><span class="p">)</span><span class="w">
</span></code></pre></div></div>
<p>The <code class="language-plaintext highlighter-rouge">Version</code> is now build 22621.1265 which matches the downloaded <code class="language-plaintext highlighter-rouge">.msu</code> version. This means we have a patched <code class="language-plaintext highlighter-rouge">install.wim</code> file. The last step is to convert this to the original <code class="language-plaintext highlighter-rouge">install.esd</code> file:</p>
<div class="language-posh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">PS</span><span class="w"> </span><span class="nx">C:\Temp</span><span class="err">></span><span class="w"> </span><span class="nx">Export-WindowsImage</span><span class="w"> </span><span class="nt">-SourceImagePath</span><span class="w"> </span><span class="nx">C:\Temp\install.wim</span><span class="w"> </span><span class="nt">-SourceName</span><span class="w"> </span><span class="s2">"Windows 11 Pro"</span><span class="w"> </span><span class="nt">-DestinationImagePath</span><span class="w"> </span><span class="nx">C:\Temp\install.esd</span><span class="w"> </span><span class="nt">-CompressionType</span><span class="w"> </span><span class="nx">max</span><span class="w">
</span><span class="n">LogPath</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="nx">C:\Windows\Logs\DISM\dism.log</span><span class="w">
</span></code></pre></div></div>
<p>The <code class="language-plaintext highlighter-rouge">install.esd</code> can now be placed back into the extracted ISO folder in the <code class="language-plaintext highlighter-rouge">Sources</code> folder. An ISO can be created from this folder and used to build a Windows 11 Pro machine.</p>
<h3 id="commands-used">Commands Used</h3>
<p>For reference, the commands used in this post with the links to the Microsoft documentation are:</p>
<ul>
<li><a href="https://learn.microsoft.com/en-us/powershell/module/dism/get-windowsimage">Get-WindowsImage</a></li>
<li><a href="https://learn.microsoft.com/en-us/powershell/module/dism/export-windowsimage">Export-WindowsImage</a></li>
<li><a href="https://learn.microsoft.com/en-us/powershell/module/dism/mount-windowsimage">Mount-WindowsImage</a></li>
<li><a href="https://learn.microsoft.com/en-us/powershell/module/dism/add-windowspackage">Add-WindowsPackage</a></li>
<li><a href="https://learn.microsoft.com/en-us/powershell/module/dism/repair-windowsimage">Repair-WindowsImage</a></li>
<li><a href="https://learn.microsoft.com/en-us/powershell/module/dism/dismount-windowsimage">Dismount-WindowsImage</a></li>
<li><a href="https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/new-item">New-Item</a></li>
</ul>
<h2 id="wrap-up">Wrap Up</h2>
<p>Having a Windows 11 installation image with the latest Cumulative Update has two benefits:</p>
<ol>
<li>More secure Windows installation from build time</li>
<li>Less time spent patching the new machine after installation</li>
</ol>
<p>As I said most guides use the dism commands to accomplish the steps above, but for me, PowerShell FTW!</p>
<p>Watch out for Part 2 where I detail now to patch the WinRE image.</p>Colin Westwatercwestwater+blog@gmail.comHow to apply Windows Updates to an image file using PowerShell cmdletsPuTTY Setup2022-12-14T00:00:00+00:002022-12-14T00:00:00+00:00https://www.vgemba.net/other/putty-settings<h2 id="introduction">Introduction</h2>
<p><a href="https://www.putty.org/">PuTTY</a> is one of those invaluable tools that every Operations person has used. I personally pay for <a href="https://www.vandyke.com/products/securecrt/">SecureCRT</a> to run on my own machine but I always keep a copy of PuTTY available on the other machines I use. I always used a particular link to customise PuTTY setup to how I like it, but the website is now dead.</p>
<p>Luckily I use the fantastic <a href="https://getpocket.com/en/">Pocket</a> and it had a cached version of the site there. I’m going to document the settings here mainly for my own reference but I’m sure everyone can use this to set up PuTTY optimally.</p>
<h3 id="default-settings">Default Settings</h3>
<p>Before any customisation is made, make sure to apply the settings to the <code class="language-plaintext highlighter-rouge">Default Settings</code> saved sessions profile. Click on <code class="language-plaintext highlighter-rouge">Category: Sessions...Default Settings</code> and then <code class="language-plaintext highlighter-rouge">Load</code>:</p>
<p><img src="https://www.vgemba.net/assets/images/putty-default-settings.png" alt="PuTTY Default Settings" /></p>
<p>This will ensure any new sessions going forward will inherit the settings we are going to set.</p>
<h2 id="the-settings">The Settings</h2>
<p><strong>Make SSH the default.</strong> The first one may seem obvious, but make sure SSH is the default protocol. Go to <code class="language-plaintext highlighter-rouge">Category: Session</code> and select <code class="language-plaintext highlighter-rouge">SSH</code>.</p>
<p><strong>Log your session.</strong> Always log your session so you can go back and see what happened. If you don’t do this once you close the window your work is gone forever. Go to <code class="language-plaintext highlighter-rouge">Category: Session...Logging</code>. Under <code class="language-plaintext highlighter-rouge">Session logging</code> select <code class="language-plaintext highlighter-rouge">Printable output</code>. You also need to set a <code class="language-plaintext highlighter-rouge">Log file name</code>. Choose a path but set the file name to <code class="language-plaintext highlighter-rouge">&H_&Y-&M-&D_putty.log</code>. This will set the file name to <code class="language-plaintext highlighter-rouge">hostname_year_month_day_putty.log</code>. I also choose <code class="language-plaintext highlighter-rouge">Always append to the end of it</code>.</p>
<p><strong>Keep windows around.</strong> By default when a session closes, PuTTY closes the window too. Sometimes I want to scroll back to look at the session output. To keep the window open go to <code class="language-plaintext highlighter-rouge">Category: Session</code> and select <code class="language-plaintext highlighter-rouge">Close window on exit</code> to <code class="language-plaintext highlighter-rouge">Never</code>.</p>
<p><strong>Annoying PC bell.</strong> Some systems have an annoying PC speaker bell. Instead, enable visual bell. Go to <code class="language-plaintext highlighter-rouge">Category: Terminal..Bell</code> and select <code class="language-plaintext highlighter-rouge">Visual bell (flash window)</code>. I also set taskbar to flash on a bell. Go to <code class="language-plaintext highlighter-rouge">Category: Terminal..Bell</code> and select <code class="language-plaintext highlighter-rouge">Flashing</code>.</p>
<p><strong>Increase scrollback buffer.</strong> By default Putty buffers 200 lines of output which is way too little. I usually go to 20,000. Go to <code class="language-plaintext highlighter-rouge">Category: Window</code> and under <code class="language-plaintext highlighter-rouge">Lines of scrollback</code> change to 20000.</p>
<p><strong>Scrollback behaviour</strong> It’s annoying when you are scrolling back output while the system still producing output, the terminal jumps back to the bottom. Go to <code class="language-plaintext highlighter-rouge">Category: Window</code> and disable <code class="language-plaintext highlighter-rouge">Reset scrollback on display activity</code>. Also, enable <code class="language-plaintext highlighter-rouge">Reset scrollback on keypress</code>.</p>
<p><strong>Choose a good font.</strong> By default, PuTTY will use a ClearType font, but I personally like <a href="https://learn.microsoft.com/en-us/windows/terminal/cascadia-code">Cascadia Code</a>. Go to <code class="language-plaintext highlighter-rouge">Category: Window...Appearance</code>, choose <code class="language-plaintext highlighter-rouge">ClearType</code> and your preferred font.</p>
<p><strong>Use proper character encoding.</strong> Nowadays all Linux systems can use Unicode (UTF-8) so to make sure that the output in Putty (especially everything non-ascii) looks fine, go to <code class="language-plaintext highlighter-rouge">Category: Window...Translation</code> and change the <code class="language-plaintext highlighter-rouge">Remote character set</code> to <code class="language-plaintext highlighter-rouge">UTF-8</code>. Make sure to also select <code class="language-plaintext highlighter-rouge">Use Unicode line drawing code points</code>.</p>
<p><strong>Actions of mouse buttons.</strong> I use a Windows system so make Putty work with Windows better. Go to <code class="language-plaintext highlighter-rouge">Category: Window...Selection</code> and under <code class="language-plaintext highlighter-rouge">Action of mouse buttons</code> choose <code class="language-plaintext highlighter-rouge">Windows (Middle extends, Right brings up menu)</code>.</p>
<p><strong>Copy and paste.</strong> If you like output copied from PuTTY to keep the formatting when pasting into Word, you can do that as well as plain text. Go to <code class="language-plaintext highlighter-rouge">Category: Window...Selection...Copy</code> and select <code class="language-plaintext highlighter-rouge">Copy to clipboard in RTF as well as plain text</code>.</p>
<p><strong>Change dark colours on a black background.</strong> One of the more annoying things with terminal applications is that by default dark-blue is too dark to be visible on a black background. go to <code class="language-plaintext highlighter-rouge">Category: Window...Colours</code> and select <code class="language-plaintext highlighter-rouge">ANSI Blue</code> under <code class="language-plaintext highlighter-rouge">Select a colour to adjust</code>. Change RGB values to <code class="language-plaintext highlighter-rouge">Red:74, Green:74, Blue:255</code>. Change <code class="language-plaintext highlighter-rouge">ANSI Blue Bold</code> to <code class="language-plaintext highlighter-rouge">Red:140, Green:140, Blue:255</code>.</p>
<p><strong>Keeping idle sessions active.</strong> It’s annoying when your sessions are too long idle and time out if the remote device kicks you off. Send keep-alive packets. Go to <code class="language-plaintext highlighter-rouge">Category: Connection</code> and set <code class="language-plaintext highlighter-rouge">Seconds between keepalives (0 to turn off)</code> to <code class="language-plaintext highlighter-rouge">25</code>.</p>
<p><strong>Enable X11 forwarding.</strong> Together with <a href="https://web.archive.org/web/20200805110739/http://www.straightrunning.com/XmingNotes/">Xming</a>, PuTY allows you to run graphical Linux applications on your Windows system, so enabling X11 forwarding by default can be useful. Go to: <code class="language-plaintext highlighter-rouge">Connection...SSH...X11</code> and check <code class="language-plaintext highlighter-rouge">Enable X11 forwarding</code>.</p>
<h2 id="wrap-up">Wrap Up</h2>
<p>Once all the customisation is set make sure you save them to the default session. Go to <code class="language-plaintext highlighter-rouge">Category: Session</code> and select <code class="language-plaintext highlighter-rouge">Default Settings</code> and then <code class="language-plaintext highlighter-rouge">Save</code>.</p>
<blockquote>
<p>Bonus tip: Save your setup so if you need to use it on another computer you can just merge it into the registry file. Open a command prompt and use <code class="language-plaintext highlighter-rouge">regedit /e "%USERPROFILE%\desktop\putty.reg" HKEY_CURRENT_USER\Software\Simontatham</code> to export all your settings to the Desktop.</p>
</blockquote>
<p>Any other settings you recommend? Please let me know and I will add them to this post.</p>Colin Westwatercwestwater+blog@gmail.comMy optimal PuTTY settings on WindowsScottish VMUG Leader2022-11-10T00:00:00+00:002022-11-10T00:00:00+00:00https://www.vgemba.net/vmug/scottish-vmug-leader<h2 id="introduction">Introduction</h2>
<p>I am very pleased to have been asked to become one of the leaders at the <a href="https://www.scottishvmug.com/about/">Scottish VMUG</a>. The Scottish VMUG is very much a highlight of my calendar when the meetings happen and I’m incredibly happy to facilitate the amazing community we have here in Scotland.</p>
<h2 id="sandy">Sandy</h2>
<p>I have to pay tribute to the outgoing Leader <a href="https://twitter.com/sandybryce">Sandy Bryce</a>. He is was one of the founding members of the VMUG 14 years ago and has been instrumental in making it a success.</p>
<p>I’m sure anyone that has met Sandy at the VMUG will be thankful for his efforts. Luckily for us he is not disappearing completely now he has gone DevOps as he is part of the newly formed Steering Committee.</p>
<h2 id="what-the-vmug-means-to-me">What the VMUG means to me</h2>
<p>I’m pretty sure my first VMUG was back in 2009/2010 and I got value from attending from the beginning just from the sessions. Back then I would listen to the sessions, not speak to anyone, stand at the back of the room during breaks, disappear at lunch, then go home right after.</p>
<p>I never saw the real value in the VMUG - the community. I think the real turning point was after a few years of consuming content Sandy made a plea for members of the community to speak. I had just finished a project at work, so against all my instincts I said I would talk about it at the next meeting. I’d never spoken in public before so it was a big jump for me.</p>
<p>I did the (terrible) presentation and afterward people came up to speak to me. It was a revelation and I got the bug to talk to others. Now I never miss a vBeers, I sit with someone at lunch and have made friends (and now even work colleagues) all because of the VMUG.</p>
<h2 id="scottish-vmug-leaders">Scottish VMUG Leaders</h2>
<p>So how is the Scottish VMUG Leadership made up now?</p>
<ul>
<li><a href="https://twitter.com/vmartincam">Martin Campbell</a></li>
<li><a href="https://twitter.com/vCrooky">James Cruickshank</a></li>
<li><a href="https://twitter.com/Balmeri">Iain Balmeri</a></li>
<li><a href="https://twitter.com/chrisstorrie">Chris Storrie</a></li>
<li><a href="https://twitter.com/cwestwater">Me!</a></li>
</ul>
<p>and not forgetting the first member of the Steering Committee <a href="https://twitter.com/sandybryce">Sandy Bryce</a>.</p>
<p>Looking forward to learning from the team and seeing what I can do to help. I do however have a goal for myself to get more community speakers at the VMUGs, and grow the vExpert numbers in Scotland.</p>
<h2 id="wrap-up">Wrap Up</h2>
<p>Again, I am honoured to have been asked to step up. Thanks Martin, James, Iain, Chris and Sandy!</p>Colin Westwatercwestwater+blog@gmail.comI am delighted to become one of the Co-Leaders for the Scottish VMUGMy Top {code} Sessions to see at VMware Explore Europe 20222022-10-18T00:00:00+01:002022-10-18T00:00:00+01:00https://www.vgemba.net/vmware/vmware-explore-europe-code-2022-top-5-sessions<h2 id="introduction">Introduction</h2>
<p><a href="https://developer.vmware.com/home">VMware {code}</a> is a set of tools and content to help you develop tools and scripts against the VMware suite of products. Pre-covid {code} had it’s own online conference which was excellent. In 2021 the {code} event was rolled up into the main VMworld event as a separate track of sessions.</p>
<p>I really enjoyed the {code} sessions I have seen in previous years as they are always practical, enjoyable and interesting. In this year there are <a href="https://event.vmware.com/flow/vmware/explore2022eu/content/page/catalog?search=&tab.contentcatalogtabs=1627421929827001vRXW&search.sessiontype=15616668244540019F6Y">14 {code} sessions</a> and I have picked out the top 5 I would love to attend.</p>
<h3 id="automating-your-home-with-gitops-and-project-keswick-code3013eur">Automating your home with GitOps and Project Keswick [CODE3013EUR]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022eu/content/page/catalog?tab.contentcatalogtabs=1627421929827001vRXW&search.sessiontype=15616668244540019F6Y&search=CODE3013EUR">CODE3013EUR</a></p>
<p>Excerpt:</p>
<blockquote>
<p>In this session you will learn how you can insert a USB key into one of your home lab servers and watch as your entire system is built out and enabled in front of your eyes through GitOps desired state deployments, Kubernetes and Project Keswick, this will allow you to provide a resilient home automation system allowing you to automate your devices and your life. Learn more about Project Keswick, a new xLabs project from the Office of the CTO in VMware. Don’t have a home lab server? You will want one after this session!</p>
</blockquote>
<p>Speaker:</p>
<ul>
<li><a href="https://twitter.com/alanrenouf">Alan Renouf</a></li>
</ul>
<p>As a home lab enthusiast this session has really excited me. I am trying to automate my lab using Terraform and Ansible but this sounds like a potential path forward. It has buzzwords in there like GitOps and Kubernetes that could provide a good practical project to learn them which will also help in my career. Alan has a track record of cool projects so I am looking forward to this one.</p>
<h3 id="build-and-publish-a-powershell-module-to-the-powershell-gallery-code1877eur">Build and Publish a PowerShell Module to the PowerShell Gallery [CODE1877EUR]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022eu/content/page/catalog?tab.contentcatalogtabs=1627421929827001vRXW&search=CODE1877EUR">CODE1877EUR</a></p>
<p>Excerpt:</p>
<blockquote>
<p>Have you ever created a PowerShell module and needed to share it and didn’t know how? The PowerShell gallery is a great place to do this. Join this session and learn how to build and publish a PowerShell module to the PowerShell gallery, and allow your contribution to be shared with the VMware community.</p>
</blockquote>
<p>Speaker:</p>
<ul>
<li><a href="https://twitter.com/davidstamen">David Stamen</a></li>
</ul>
<p>Most of my PowerShell is written for me and my use. However as I go on I sometimes think I should be making the code available for my team at work or the wider community. This session will show how to properly use the PowerShell Gallery to make a contribution to help others.</p>
<h3 id="powercli-and-rest-apis--a-new-beginning-code2689eur">PowerCLI and REST APIs – A New Beginning [CODE2689EUR]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022eu/content/page/catalog?tab.contentcatalogtabs=1627421929827001vRXW&search=CODE2689EUR">CODE2689EUR</a></p>
<p>Excerpt:</p>
<blockquote>
<p>VMware PowerCLI is the most popular VMware admin tool, used by thousands of admins every day to automate different aspects of their VMware infrastructure. In addition to calling the cmdlets, which are included in the PowerCLI product modules, you can now use PowerCLI to make direct calls to VMware product APIs. In the latest PowerCLI versions, we developed a new, more intuitive approach to calling VMware REST APIs. We also built integration with the VMware REST API documentation database, so you can fetch PowerCLI samples directly from the API documentation portal. Join our session and see a demo of how you can easily automate workflows by using VMware vSphere and VMware NSX REST APIs with PowerShell.</p>
</blockquote>
<p>Speaker:</p>
<ul>
<li><a href="https://twitter.com/KamenNikolov">Kamen Nikolov</a></li>
</ul>
<p>I love using PowerCLI for automating my vSphere work but I know I need to start to ‘learn’ using the vSphere APIs to do further integration with other automation. I’ve used Swagger interfaces and Postman to play with the vSphere APIs so I’d like to learn how using PowerCLI can do this too. The Documentation database integration sounds like it would be a useful feature when learning.</p>
<h3 id="powercli-users-guide-to-terraform-code1872eur">PowerCLI Users Guide to Terraform [CODE1872EUR]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022eu/content/page/catalog?tab.contentcatalogtabs=1627421929827001vRXW&search=CODE1872EUR">CODE1872EUR</a></p>
<p>Excerpt:</p>
<blockquote>
<p>Ensuring your toolbox includes a diverse set of languages, skills and tools is incredibly important to a successful career. Over the years, Terraform has basically become synonymous with infrastructure as code and proven to be a terrific tool to have available. This session will look at how easy it is to transfer existing VMware PowerCLI knowledge to become familiar with Terraform’s lingo, coding and overall usage.</p>
</blockquote>
<p>Speaker:</p>
<ul>
<li><a href="https://twitter.com/kmruddy">Kyle Ruddy</a></li>
</ul>
<p>PowerShell/PowerCLI were the first scripting languages I learnt to use like I’m sure is the same for most Sys Admins. I have spent a lot of time learning Packer and now re-learning Terraform. This session will benefit us who are trying to go from an imperative style of scripting to declarative. Terraform is the hotness just now, so worth learning.</p>
<h3 id="developing-and-operating-with-tanzu-community-edition-and-carvel-code1866eur">Developing and Operating with Tanzu Community Edition and Carvel [CODE1866EUR]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022eu/content/page/catalog?search=CODE1866EUR&tab.contentcatalogtabs=1627421929827001vRXW">CODE1866EUR</a></p>
<p>Excerpt:</p>
<blockquote>
<p>If you are just approaching the cloud-native world or are running a production-grade infrastructure on Kubernetes with Tanzu you will need to have the right environment for experimenting the infrastructure evolutions or just to give a sandbox for Developers. Moreover, to make easy the CI/CD experience with Application in Tanzu, the community suggest Carvel which provides a set of reliable, single-purpose, composable tools that aid DevOps in application building, configuration, and deployment to Kubernetes. In this talk, we will see how to automate the deployment of Tanzu CE and how the set of tools in the Carvel suite with Tanzu will simplify the day-by-day workflow of truly a DevOps team via standardized templating, building and packaging methodologies ready for the GitOps/Continuous Delivery philosophy adopted in production.</p>
</blockquote>
<p>Speakers:</p>
<ul>
<li><a href="https://twitter.com/linotelera">Lino Telera</a></li>
<li><a href="https://twitter.com/manuel_coppo">Manuel Coppotelli</a></li>
</ul>
<p>Tanzu Community Edition is something that is on my to-do list to explore as my Container/Kubernetes knowledge is sadly lacking. Tanzu CE is the platform I will start to learn on this journey. I’d like to learn more about Tanzu CE in this session and how third party tools might make my learning journey easier, or develop my skills.</p>
<h2 id="wrap-up">Wrap Up</h2>
<p>If you can’t find a session in that list you would be interested in I would be amazed. Well done the VMware {code} team - great sessions again. What are your must see {code} sessions? I’d love to know in case I’m missing something good.</p>Colin Westwatercwestwater+blog@gmail.comVMware {code} is back as part of VMware Explore Europe 2022. Here are my Top 5 sessions I think you should attendMy Top 5 Breakout Sessions to see at VMware Explore Europe 20222022-10-17T00:00:00+01:002022-10-17T00:00:00+01:00https://www.vgemba.net/vmware/vmware-explore-europe-top-5-sessions<h2 id="introduction">Introduction</h2>
<p>In a <a href="/vmware/vmware-explore-2022-top-10-sessions/">recent post</a>, I detailed the VMware Explore US 2022 Content Catalog and picked out the top 10 sessions I would attend.</p>
<p>This post is specific to the top 5 VMware Explore Europe sessions breakout sessions I have picked out. For each session I detail a link to the session, the speaker(s), the excerpt and finally why I would see that session.</p>
<h3 id="extreme-performance-series-performance-best-practices-ceib1624eurd">Extreme Performance Series: Performance Best Practices [CEIB1624EURD]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022eu/content/page/catalog?search=CEIB1624EURD&tab.contentcatalogtabs=1627421929827001vRXW">CEIB1624EURD</a></p>
<p>Excerpt:</p>
<blockquote>
<p>Are users complaining of poor application performance? Demanding more resources to compensate? Do you know where to start looking for issues? Are you confident you have the right configuration in place? Attend this breakout session, delivered by VMware’s most experienced performance gurus, to answer these questions and more. This session will explain the most important performance practices that need to be applied across the stack, from application to hardware. Based on real customer case studies, the goal of this session is to empower you to identify the most common performance issues and remediate them by applying best practices. Leave with the tools, methodologies, configurations, and confidence you can provide maximum performance to all your users and their applications.</p>
</blockquote>
<p>Speaker:</p>
<ul>
<li><a href="https://twitter.com/vBondzio">Valentin Bondzio</a></li>
</ul>
<p>You have invested a lot of money, time and energy into your vSphere environment, so why wouldn’t you want it to perform to the best it could? This session looks like it can give you recommendations to get the best performance, but also troubleshoot when you are having performance issues. I will 100% be watching is session back.</p>
<h3 id="project-monterey-behind-the-scenes-a-technical-deep-dive-ceib1576eur">Project Monterey Behind the Scenes: A Technical Deep Dive [CEIB1576EUR]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022eu/content/page/catalog?search=CEIB1576EUR&tab.contentcatalogtabs=1627421929827001vRXW">CEIB1576EUR</a></p>
<p>Excerpt:</p>
<blockquote>
<p>In this session, we will explore how Project Monterey offloads traffic to the data processing unit (DPU), allowing for additional workload resources, Zero Trust security, as well as enhanced performance. But what goes on behind the scenes that allows Project Monterey to be so good at enhanced performance? Is it just adding a DPU? Join this session to find the answer and more technical nuggets to help you see the power of DPUs with Project Monterey.</p>
</blockquote>
<p>Speakers:</p>
<ul>
<li><a href="https://twitter.com/GreatWhiteTec">Dave Morera</a></li>
<li><a href="https://www.linkedin.com/in/samuelkommu/">Samuel Kommu</a></li>
</ul>
<p>DPUs are an exciting development in the vSphere ecosystem. Basically ESXi can offload work such as NSX firewalling, security scanning, etc away from the host CPU to free up resources for your workloads. Like all innovations it seems like it might not be relevant to you but I can see DPUs becoming common in servers in the future. Get ahead of the curve and learn about DPUs in this session.</p>
<h3 id="reduce-it-downtime-and-maximize-productivity-with-proactive-intelligence-cmb2525eur">Reduce IT Downtime and Maximize Productivity with Proactive Intelligence [CMB2525EUR]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022eu/content/page/catalog?search=CMB2525EUR&tab.contentcatalogtabs=1627421929827001vRXW">CMB2525EUR</a></p>
<p>Excerpt:</p>
<blockquote>
<p>Join a VMware Skyline customer to learn tips and tricks for avoiding IT issues and maximizing productivity with VMware Skyline proactive intelligence. Our customer will share how they’re using VMware Skyline to keep their environment stable and healthy, optimize lifecycle management, and automate key tasks. With VMware Skyline as a member of their team, our customer uses the time they save fixing problems to focus on business priorities.</p>
</blockquote>
<p>VMware Skyline is a great tool available for all customers that have a valid support contract. It actively monitors your environment and alerts you to issues and more impotently potential issues. Imagine being alerted on a problem before it escalates. If you do need to open a support case VMware Skyline can take care of the hassle of uploading the necessary logs to GSS. This is a must have tools so attend this session to learn what it can do for you.</p>
<h3 id="technical-overview-of-vsan-8-and-vsan-express-storage-architecture-ceib2172eur">Technical Overview of vSAN 8 and vSAN Express Storage Architecture [CEIB2172EUR]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022eu/content/page/catalog?search=CEIB2172EUR&tab.contentcatalogtabs=1627421929827001vRXW">CEIB2172EUR</a></p>
<p>Excerpt:</p>
<blockquote>
<p>Hyperconverged Infrastructure (HCI) powered by VMware vSAN 8 with vSAN Express Storage Architecture enhances performance, efficiency, data protection, and management of vSAN running on the latest NVMe storage devices. You will get a detailed explanation of the features and benefits of vSAN’s next-generation architecture that delivers lower TCO, improved space efficiency, RAID-5/6 at the performance of RAID-1, higher availability, and better data protection with native snapshots.</p>
</blockquote>
<p>Speaker:</p>
<ul>
<li><a href="https://twitter.com/vmpete">Pete Koehler</a></li>
<li><a href="https://twitter.com/DuncanYB">Duncan Epping</a></li>
</ul>
<p>vSAN has come a long way since it was released. I think it’s fair to say it had some growing pains, but is now a stable, performant, and useful storage platform. More features are added with each release and vSAN 8 is a big one. In particular the vSAN Express Storage Architecture is a leap in the capabilities of vSAN. Part of ESA is getting RAID5/6 space efficiency with RAID1 performance. Amazing!</p>
<h3 id="vsphere-bringing-cloud-benefits-to-on-premises-ceib1820eur">vSphere+: Bringing Cloud Benefits to On-Premises [CEIB1820EUR]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022eu/content/page/catalog?search=CEIB1820EUR&tab.contentcatalogtabs=1627421929827001vRXW">CEIB1820EUR</a></p>
<p>Excerpt:</p>
<blockquote>
<p>vSphere+ is the next evolution of vSphere, a multi-cloud workload platform that brings the benefits of the cloud to on-premises. vSphere+ combines industry-leading virtualization technology, an enterprise-ready Kubernetes environment, and high-value cloud services to transform existing on-prem deployments into a SaaS-enabled infrastructure. Interested to know all about vSphere+, the customer challenges addressed and how it can future-proof your environment? Then this is the session to attend.</p>
</blockquote>
<p>Speaker:</p>
<ul>
<li><a href="https://twitter.com/JamesDMcCord">James McCord</a></li>
</ul>
<p>One of the reasons Cloud has become such an important part of the IT landscape is that it is easy to consume infrastructure and services. On-premises needs to catch up in providing and easy to consume platform for operations and developers. vSphere+ is being postilioned as a way to provide those services.</p>
<h3 id="advanced-troubleshooting-of-esxi-server-7x-for-vsphere-gurus-cxs2145eur">Advanced Troubleshooting of ESXi Server 7.x for vSphere Gurus [CXS2145EUR]</h3>
<p>Content Catalog Link: <a href="">CXS2145EUR</a></p>
<p>Excerpt:</p>
<blockquote>
<p>With ESXi Server forming the base foundation for your VMware multi-cloud environment, are you interested to ensure that your Day 2 operations are made easy and stabilized? As ESXi Server has evolved, our tools and managing techniques have transformed. Gain a deep dive understanding on what is new with ESXi Architecture, Management, Storage, Networking and troubleshooting some of the most common issues. Come and hear from the experts on some of the common problems identified and the ways to mitigate them. We will also discuss on how we can generalize our troubleshooting approaches for other products and services within vSphere and an introduction to VMware Skyline Health Diagnostics (SHD).</p>
</blockquote>
<p>Speaker:</p>
<ul>
<li><a href="https://www.linkedin.com/in/lance-oxley-a18658b4/">Lance Oxley</a></li>
</ul>
<p>When it hits the fan troubleshooting and diagnosing performance issues in your VMware environment is a vital skill. This sessions looks like it would give a great grounding in the techniques to help you, which in stressful situations would reap dividends. If you are hands on with vSphere, attend this session.</p>
<h2 id="wrap-up">Wrap Up</h2>
<p>I am sure you will find something in this list that appeals to you, and if not spend some time browsing the <a href="https://event.vmware.com/flow/vmware/explore2022eu/content/page/catalog?tab.contentcatalogtabs=1627421929827001vRXW">Content Catalog</a> to find what interests you. With almost 500 sessions I guarantee you will. What are your must see sessions? I’d love to know in case I’m missing something good.</p>
<p>In my next post I will focus on my must see VMware {code} sessions at VMware Explore Europe 2022.</p>Colin Westwatercwestwater+blog@gmail.comThere are hundreds of sessions available at VMware Explore Europe 2022 but what do I see as the Top 5 must seeTop 5 VMware Tools/Utilities/Applications2022-09-15T00:00:00+01:002022-09-15T00:00:00+01:00https://www.vgemba.net/vmware/top-5-tools<h2 id="introduction">Introduction</h2>
<p>There is a large ecosystem of tools, utilities and applications in and around the VMware suite of products. When I think about the range of software available I immediately think of a few top items. In this blog post I will cover what I think every current and aspiring virtualisation admin should know about and use.</p>
<h2 id="1-powercli">1. PowerCLI</h2>
<p>PowerCLI is the main scripting tool in VMware. Based on PowerShell, PowerCLI is a set of modules to interact with many different VMware products:</p>
<ul>
<li>VMware vSphere and vSAN</li>
<li>VMware Cloud Director</li>
<li>vRealize Operations Manager</li>
<li>VMware Cloud Services</li>
<li>VMware Cloud on AWS</li>
<li>VMware HCX</li>
<li>VMware Horizon</li>
<li>VMware NSX-T Data Center</li>
<li>VMware Site Recovery Manager</li>
</ul>
<p>Using PowerCLI you can pretty much automate your entire vSphere stack. Learn more about PowerCLI on <a href="https://developer.vmware.com/powercli">VMware Developer Documentation</a>.</p>
<h2 id="2-rvtools">2. RVTools</h2>
<p>RVTools is an essential, free application that can give you every detail about your vSphere environment. Pointing RVTools at a vCenter displays every scrap of information:</p>
<blockquote>
<p>VMs, CPU, Memory, Disks, Partitions, Network, CD drives, USB devices, Snapshots, VMware tools, vCenter, Resource pools, Clusters, ESX hosts, HBAs, Nics, Switches, Ports, Distributed Switches, Distributed Ports, Service consoles, VM Kernels, Datastores, multipath info, license info and health checks.</p>
</blockquote>
<p>You can then export that information to csv/xlsx which is invaluable when troubleshooting or inventorying your environment.</p>
<p>Download <a href="https://www.robware.net/rvtools/">RVTools</a> now.</p>
<h2 id="3-vmware-skyline-pro">3. VMware SkyLine Pro</h2>
<p>If you have a valid support agreement (see the <a href="https://kb.vmware.com/s/article/55928">FAQs</a>) VMware Skyline Pro is a no brainer. Once the VMware Skyline Collector appliance is installed telemetry is sent to the VMware cloud and in return you can gain the following benefits:</p>
<ul>
<li>Proactively identify and prevent problems</li>
<li>Solve problems, not just symptoms</li>
<li>Increase security, reliability and productivity</li>
</ul>
<p>The tool will alert you of not just current problems, but predicted problems in your environment. Using the collated data from VMware customers VMware can see patterns of issues and let you know if your setup could experience the same. It can also check for best practices and alert you if you are not following them.</p>
<p>Lastly a very underrated feature is VMware Skyline Log Assist. Every time I’ve had to collect logs for any vendor and upload them to a portal it has been a major pain. With Skyline Pro you can automatically upload support log bundles to VMware Support.</p>
<p>Go check out Skyline Pro <a href="https://www.vmware.com/uk/support/services/skyline.html">here</a>.</p>
<h2 id="4-vmware-remote-console">4. VMware Remote Console</h2>
<p>In the vCenter interface, when looking at a VM, you have two options to launch a console:</p>
<p><img src="https://www.vgemba.net/assets/images/remote-console-01.png" alt="Remote Console" /></p>
<p>The Web Console is fine in a pinch, but you get a much better experience with the installed Remote Console:</p>
<p><img src="https://www.vgemba.net/assets/images/remote-console-02.png" alt="Remote Console" /></p>
<p>From this console you can perform standard actions such as power operations, edit the settings, mount removable media, etc. It is so much more convenient when using the last resort of a VM console.</p>
<p>It is a free download, but a VMware Customer Connect account is required. You can download <a href="https://www.vmware.com/go/download-vmrc">here</a>.</p>
<h2 id="5-vmware-workstation-player">5. VMware Workstation Player</h2>
<p>Do you want to try virtualization from VMware for free? <a href="https://www.vmware.com/products/workstation-player.html">VMware Workstation Player</a> is free for personal use. Player is a stripped down version of VMware Workstation Pro that allows to you run a single VM at a time on your Windows or Linux PC.</p>
<p>It does not have some features it such as snapshots, complex virtual networks, encrypted VMs, etc. but if you want a way to dip your toes into the world of virtualisation with hardware you already have for no cost this is a great option.</p>Colin Westwatercwestwater+blog@gmail.comI have five pieces of software anyone that is interested in the VMware ecosystem should know about. Learn about them hereMy Top 5 {code} Sessions to see at VMware Explore 20222022-08-04T00:00:00+01:002022-08-04T00:00:00+01:00https://www.vgemba.net/vmware/vmware-explore-code-2022-top-5-sessions<h2 id="introduction">Introduction</h2>
<p><a href="https://developer.vmware.com/home">VMware {code}</a> is a set of tools and content to help you develop tools and scripts against the VMware suite of products. Pre-covid {code} had it’s own online conference which was excellent. In 2021 the {code} event was rolled up into the main VMworld event as a separate track of sessions.</p>
<p>I really enjoyed the {code} sessions I have seen in previous years as they are always practical, enjoyable and interesting. In this year there are <a href="https://event.vmware.com/flow/vmware/explore2022us/content/page/catalog?tab.contentcatalogtabs=1627421929827001vRXW&search=&search.sessiontype=15616668244540019F6Y">22 {code} sessions</a> and I have picked out the top 5 I would love to attend.</p>
<h3 id="automating-your-home-with-gitops-and-a-new-octo-xlabs-project-code2981us">Automating Your Home with GitOps and a new OCTO xLabs Project [CODE2981US]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022us/content/page/catalog?tab.contentcatalogtabs=1627421929827001vRXW&search=CODE2981US">CODE2981US</a></p>
<p>Excerpt:</p>
<blockquote>
<p>In this session you will learn how you can insert a USB key into one of your home lab servers and watch as your entire system is built out and enabled in front of your eyes through GitOps desired state deployments, Kubernetes and a new OCTO xLabs project, this will allow you to provide a resilient home automation system allowing you to automate your devices and your life. Learn more about this exciting new xLabs Project from the Office of the CTO in VMware. Don’t have a home lab server? You will want one after this session!</p>
</blockquote>
<p>Speaker:</p>
<ul>
<li><a href="https://twitter.com/alanrenouf">Alan Renouf</a></li>
</ul>
<p>As a home lab enthusiast this session has really excited me. I am trying to automate my lab using Terraform and Ansible but this sounds like a potential path forward. It has buzzwords in there like GitOps and Kubernetes that could provide a good practical project to learn them which will also help in my career. Alan has a track record of cool projects so I am looking forward to this one.</p>
<h3 id="powercli-and-rest-apis--a-new-beginning-code2689us">PowerCLI and REST APIs – A New Beginning [CODE2689US]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022us/content/page/catalog?tab.contentcatalogtabs=1627421929827001vRXW&search=CODE2689US">CODE2689US</a></p>
<p>Excerpt:</p>
<blockquote>
<p>VMware PowerCLI is the most popular VMware admin tool, used by thousands of admins every day to automate different aspects of their VMware infrastructure. In addition to calling the cmdlets, which are included in the PowerCLI product modules, you can now use PowerCLI to make direct calls to VMware product APIs. In the latest PowerCLI versions, we developed a new, more intuitive approach to calling VMware REST APIs. We also built integration with the VMware REST API documentation database, so you can fetch PowerCLI samples directly from the API documentation portal. Join our session and see a demo of how you can easily automate workflows by using VMware vSphere and VMware NSX REST APIs with PowerShell.</p>
</blockquote>
<p>Speaker:</p>
<ul>
<li><a href="https://twitter.com/KamenNikolov">Kamen Nikolov</a></li>
</ul>
<p>I love using PowerCLI for automating my vSphere work but I know I need to start to ‘learn’ using the vSphere APIs to do further integration with other automation. I’ve used Swagger interfaces and Postman to play with the vSphere APIs so I’d like to learn how using PowerCLI can do this too. The Documentation database integration sounds like it would be a useful feature when learning.</p>
<h3 id="powercli-users-guide-to-terraform-code1872us">PowerCLI Users Guide to Terraform [CODE1872US]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022us/content/page/catalog?tab.contentcatalogtabs=1627421929827001vRXW&search=CODE1872US">CODE1872US</a></p>
<p>Excerpt:</p>
<blockquote>
<p>Ensuring your toolbox includes a diverse set of languages, skills and tools is incredibly important to a successful career. Over the years, Terraform has basically become synonymous with infrastructure as code and proven to be a terrific tool to have available. This session will look at how easy it is to transfer existing VMware PowerCLI knowledge to become familiar with Terraform’s lingo, coding and overall usage.</p>
</blockquote>
<p>PowerShell/PowerCLI were the first scripting languages I learnt to use like I’m sure is the same for most Sys Admins. I have spent a lot of time learning Packer and now re-learning Terraform. This session will benefit us who are trying to go from an imperative style of scripting to declarative. Terraform is the hotness just now, so worth learning.</p>
<h3 id="vmware-code-vmware-tanzu-on-intel-nuc-lab-environment-setup-and-application-building-code2770us">VMware {code}: VMware Tanzu on Intel NUC Lab Environment Setup and Application Building [CODE2770US]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022us/content/page/catalog?tab.contentcatalogtabs=1627421929827001vRXW&search=CODE2770US">CODE2770US</a></p>
<p>Excerpt:</p>
<blockquote>
<p>This more serious lab gives you hands-on, sit-down time with an Intel NUC x86 platform to teach you how to install and configure VMware Tanzu on an Intel NUC. The Intel NUC system is a super-quiet, low-cost system that will allow you to set up and run VMware Tanzu at home. This lab will show you how to run Kubernetes workloads on the NUC’s lab environment. The applications are C based sensor code labs that collect I2C and GPIO sensor data from attached and display the data on a small OLED display. Learn the basics of YMAL files for workload control on your home lab environment. At the end, you can spend 250.00 and create your own home VMware Tanzu on Intel NUC environment.</p>
</blockquote>
<p>Speaker:</p>
<ul>
<li><a href="https://twitter.com/BillRothVMware">William Roth</a></li>
</ul>
<p>This is a session you will only get to see if you attend VMware Explore, but it sounds super interesting. A NUC is a great home lab platform and it is powerful enough to run many applications. This lab would teach you a lot of products/technologies which we all need to learn such as Tanzu and Kubernetes. If you are at VMware Explore sign up for this one.</p>
<h3 id="try-this-catch-that-finally--an-explanation-on-powercli-error-handling-code1865us">Try This, Catch That, Finally – An Explanation on PowerCLI Error Handling [CODE1865US]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022us/content/page/catalog?tab.contentcatalogtabs=1627421929827001vRXW&search=CODE1865US">CODE1865US</a></p>
<p>Excerpt:</p>
<blockquote>
<p>Automation is impossible if your VMware PowerCLI scripts cannot run through to completion. Handling errors properly can greatly improve your code writing skills. Whether the script is a few lines or a few hundred lines, there are great efficiencies to be gained from using try/catch/finally blocks. During this session, I will cover the main differences between terminating and non-terminating errors. Examples of each type of error will be shown so you can see the code in action. This session will also cover the ErrorAction parameter. This presentation will have plenty of live code examples interacting with APIs and custom functions to ensure you can see the real-world application of these PowerShell tools.</p>
</blockquote>
<p>Speaker:</p>
<ul>
<li><a href="https://twitter.com/jpsider">Justin Sider</a></li>
</ul>
<p>My PowerClI scripting is not elegant. It’s very imperative and everything in one script. Error handling is something I always have in the back of my mind I should be using, but in the past my scripts have basically been for me. As I publish more code to platforms such as GitHub I need to start developing my scripts with things like error handling. I would like to see this session as it will give some practical examples of it plus some bonus content of working with APIs.</p>
<h2 id="wrap-up">Wrap Up</h2>
<p>If you can’t find a session in that list you would be interested in I would be amazed. Well done the VMware {code} team - great sessions again. What are your must see {code} sessions? I’d love to know in case I’m missing something good.</p>Colin Westwatercwestwater+blog@gmail.comVMware {code} is back as part of VMware Explore 2022. Here are my Top 5 sessions I think you should attendMy Top 10 Breakout Sessions to see at VMware Explore 20222022-08-02T00:00:00+01:002022-08-02T00:00:00+01:00https://www.vgemba.net/vmware/vmware-explore-2022-top-10-sessions<h2 id="introduction">Introduction</h2>
<p>In whats becoming an annual post, I have gone through the VMware Explore US 2022 Content Catalog and picked out the top 10 sessions I would attend. For each session I detail a link to the session, the speaker(s), the excerpt and finally why I would see that session.</p>
<h3 id="from-se-to-vp-amandas-journey-to-the-americas-cto-at-vmware-pcb1232us">From SE to VP: Amanda’s Journey to the Americas CTO at VMware [PCB1232US]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022us/content/page/catalog?tab.contentcatalogtabs=1627421929827001vRXW&search=PCB1232US">PCB1232US</a></p>
<p>Excerpt:</p>
<blockquote>
<p>Join this fun career session to learn about the technical and soft skills Amanda learned to become VMware’s first woman CTO. Learning the fundamentals of any position is necessary to be successful. However, the career path and the skills required to move from systems engineer to chief technology officer have never been documented—until now.</p>
</blockquote>
<p>Speaker:</p>
<ul>
<li><a href="https://twitter.com/amandablev">Amanda Blevins</a></li>
</ul>
<p>If there is one session from one person I would always make time to see it’s Amanda’s. In previous years her sessions have provided practical knowledge to help your career. Amanda’s career is one to watch, and this session will show you how she did it. This is the session you must see.</p>
<h3 id="learning-from-log4j-getting-ahead-of-the-next-incident-osb1813us">Learning from Log4j: Getting Ahead of the Next Incident [OSB1813US]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022us/content/page/catalog?tab.contentcatalogtabs=1627421929827001vRXW&search=OSB1813US">OSB1813US</a></p>
<p>Excerpt:</p>
<blockquote>
<p>Log4j caught nearly everyone by surprise. And the first questions on everyone’s minds were do we have an exposure, and are we using it? It’s often been said that the open source you know about isn’t the open source you should worry about. In this session, you will hear from Brian Behlendorf, the OpenSSF executive director, about some of the lessons learned from Log4j and the changes triggered. Discover how you can be better prepared for the next time.</p>
</blockquote>
<p>Speaker:</p>
<ul>
<li><a href="https://twitter.com/brianbehlendorf">Brian Behlendorf</a></li>
</ul>
<p>Log4j was a nightmare for Sys Admins. I remember hearing about it on a Saturday night and by 8pm we were already working on it. Not how I want to spend my weekends. Anything that will help me and my organisation prepare for the next big incident is a session worth watching - your future self will thank you for it.</p>
<h3 id="5-ways-vsphere-can-transform-your-on-premises-workloads-and-your-business-ceib1573us">5+ Ways vSphere+ Can Transform Your On-Premises Workloads and Your Business [CEIB1573US]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022us/content/page/catalog?tab.contentcatalogtabs=1627421929827001vRXW&search=CEIB1573US">CEIB1573US</a></p>
<p>Excerpt:</p>
<blockquote>
<p>You trust vSphere to run your business critical workloads, whether on-premises or in the cloud. Your on-premises apps get the benefits of economics, locality, performance, latency, and more, but they can benefit significantly from innovations available in the cloud. Moreover, in a distributed environment, your IT teams have to manage in siloes, which can be challenging and inefficient. And your developers and DevOps teams need all the support they can get to drive up productivity and velocity to market. Join this session and learn how vSphere+, the multi-cloud workload platform, can help transform your on-premises infrastructure and your business by delivering the benefits of cloud services, without disrupting your workloads.</p>
</blockquote>
<p>Speaker:</p>
<ul>
<li><a href="https://twitter.com/himanshuks">Himanshu Singh</a></li>
</ul>
<p>vSphere+ has recently been announced and this is one of a few sessions on the product. I only have experience of vSphere on premises so I am interested to find out how the cloud based component of vSphere+ can assist the vSphere admin.</p>
<h3 id="acquiring-practical-cloud-native-kubernetes-and-open-source-skills-osb1812us">Acquiring Practical Cloud Native, Kubernetes and Open Source Skills [OSB1812US]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022us/content/page/catalog?search=OSB1812US&tab.contentcatalogtabs=1627421929827001vRXW">OSB1812US</a></p>
<p>Excerpt:</p>
<blockquote>
<p>Open source skills opens doors, and expands your resume. Join Linux Foundation’s General Manager of Training & Certification, Clyde Seepersad as he discusses the results from the recent Linux Foundation Survey on Job Skills and Hiring. You’ll hear about who’s hiring for what, the skills and certifications that are in top demand, and what’s on the horizon. Learning paths, certifications, and courses to boost your skills in open source, especially cloud native applications, Kubernetes and cloud architect.</p>
</blockquote>
<p>Speaker:</p>
<ul>
<li><a href="https://www.linkedin.com/in/clydeseepersad/">Clyde Seepersad</a></li>
</ul>
<p>I remember many years ago I had a manager that hated Open Source software and banned it from the organisation. Oh how times have changed! My skills in Open Source, Cloud native, Kubernetes are pretty much non existant but I know I need to skill up. This session will help all those ‘traditional’ Windows/VMware admins.</p>
<h3 id="adventures-in-technical-career-progression-vib1558us">Adventures in Technical Career Progression [VIB1558US]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022us/content/page/catalog?tab.contentcatalogtabs=1627421929827001vRXW&search=VIB1558US">VIB1558US</a></p>
<p>Excerpt:</p>
<blockquote>
<p>Winner of the VMware Explore People’s Choice Awards. A career in the tech industry can have many entry points. The path forward for an individual isn’t necessarily a straight line. Let go of the feeling that you are trapped, and realize you have options. If you are not considering what is next for your career, today is the day to begin learning from the experience of others. After interviewing almost 50 guests through 170+ episodes since July 2018, hosts of the Nerd Journey podcast bring you a digest of lessons learned from their career storytellers. We’ll discuss topics such as determining if people leadership is for you, becoming a top-level individual contributor, value in making lateral moves, determining if you’re burned out and what to do about it, communicating with your management, and using relatable experience to get that next job you didn’t realize was possible.</p>
</blockquote>
<p>Speakers:</p>
<ul>
<li><a href="https://twitter.com/Networknerd_">Nick Korte</a></li>
<li><a href="https://twitter.com/vJourneyman">John White</a></li>
</ul>
<p>Hosts of the excellent podcast <a href="https://nerd-journey.com/">Nerd Journey</a> (seriously go add it to your podcast list) host a session distilling all the learnings they have gather in over 170 shows. I find the information from the podcast to be of excellent value to me personally in my career. If you want to further your career, watch this session.</p>
<h3 id="the-multi-cloud-universe-bold-innovations-and-insights-to-accelerate-your-business-gen2906us">The Multi-Cloud Universe: Bold Innovations and Insights to Accelerate Your Business [GEN2906US]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022us/content/page/catalog?tab.contentcatalogtabs=1627421929827001vRXW&search=GEN2906US">GEN2906US</a></p>
<p>Excerpt:</p>
<blockquote>
<p>Whether you are a creator embarking on a new path of discovery, or a decision-maker aiming for the outer reaches, your journey starts here.</p>
</blockquote>
<p>Speakers:</p>
<ul>
<li><a href="https://twitter.com/RaghuRaghuram">Raghu Raghuram</a></li>
<li><a href="https://twitter.com/sumit_dhawan">Sumit Dhawan</a></li>
<li><a href="https://twitter.com/kitcolbert">Kit Colbert</a></li>
<li><a href="https://twitter.com/amandablev">Amanda Blevins</a></li>
<li><a href="https://twitter.com/kelseyhightower">Kelsey Hightower</a></li>
<li><a href="https://twitter.com/jacobm">Jacob Morgan</a></li>
<li><a href="https://twitter.com/dashaun">DaShaun Carter</a></li>
<li><a href="https://www.linkedin.com/in/teresayunchen/">Teresa Chen</a></li>
<li><a href="https://twitter.com/GreatWhiteTec">Dave Morera</a></li>
</ul>
<p>It’s the General Session where we hear from Raghu and senior staff at VMware. The General Session is where we will hear about VMware’s vision for for next 12 months and hopefully upcoming technology. A must see!</p>
<h3 id="10-new-and-exciting-things-about-vsphere-that-you-absolutely-need-to-know-ceib1574us">10 New and Exciting Things About vSphere That You Absolutely Need to Know [CEIB1574US]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022us/content/page/catalog?tab.contentcatalogtabs=1627421929827001vRXW&search=CEIB1574US">CEIB1574US</a></p>
<p>Excerpt:</p>
<blockquote>
<p>Yes, this is the vSphere session you’ve been looking for. Join us to get the latest and greatest on ‘What’s New with vSphere’. We will share the latest news and timelines, and give you an overview of what’s coming, as well as technical details with the newest demos, to cover 10 new and exciting things about vSphere that you absolutely, positively need to know.</p>
</blockquote>
<p>Speakers:</p>
<ul>
<li><a href="https://twitter.com/himanshuks">Himanshu Singh</a></li>
<li><a href="https://twitter.com/GreatWhiteTec">Dave Morera</a></li>
</ul>
<p>Tanzu, Carbon Black, NSX, all the buzzwords, but the bedrock to VMware is vSphere. It may not be cool or a hot technology but it is a critical part of your infrastructure. I personally get excited with new vSphere releases but keeping track of the details in the flood of news is difficult. I hope this session gets me up to date.</p>
<h3 id="advanced-troubleshooting-of-esxi-server-7x-for-vsphere-gurus-cxs2145us">Advanced Troubleshooting of ESXi Server 7.x for vSphere Gurus [CXS2145US]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022us/content/page/catalog?search=CXS2145US&tab.contentcatalogtabs=1627421929827001vRXW">CXS2145US</a></p>
<p>Excerpt:</p>
<blockquote>
<p>With the VMware ESXi server forming the base foundation for your VMware multi-cloud environment, are you interested to ensure that your Day 2 operations are made easy and stabilized? As the ESXi server has evolved, our tools and managing techniques have transformed. Gain a deep-dive understanding on what is new with ESXi architecture, management, storage and networking, and troubleshoot some of the most common issues. Hear from the experts on some of the common problems identified and the ways to mitigate them. We will also discuss how we can generalize our troubleshooting approaches for other products and services within VMware vSphere and provide an introduction to VMware Skyline Health Diagnostics.</p>
</blockquote>
<p>Speakers:</p>
<ul>
<li><a href="https://www.linkedin.com/in/ragavendrakumar/">Ragavendra Kumar</a></li>
<li><a href="https://www.linkedin.com/in/abhilash-kunhappan/">Abhilash Kunhappan</a></li>
<li><a href="https://www.linkedin.com/in/andrew-stiff-573207aa/">Andrew Stiff</a></li>
</ul>
<p>Another session on ESXi - who said hypervisors are boring? When ESXi has problems you can have a bad day, so this session should help you when that day comes. I’m interested to hear the common issues that GSS face as the basics are sometimes overlooked. It’s important to keep te foundation of your environment in good order and technologies like VMware SkyLine can help you find those problems sometimes before they can even cause a problem. Go see this session if you look after core vSphere.</p>
<h3 id="vsphere-and-vsan-the-next-evolution-of-vmware-enterprise-workload-platform-cmk2208us">vSphere+ and vSAN+: The Next Evolution of VMware Enterprise Workload Platform [CMK2208US]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022us/content/page/catalog?search=CMK2208US&tab.contentcatalogtabs=1627421929827001vRXW">CMK2208US</a></p>
<p>Excerpt:</p>
<blockquote>
<p>VMware vSphere+ and VMware vSAN+ bring the benefits of cloud to your on-premise workloads by delivering high-value cloud services for IT admins and developers to supercharge IT productivity and accelerate developer velocity for existing and next-gen applications. VMware is unleashing this compelling value without teams having to move or make any changes to existing workloads or hosts. It’s completely non-disruptive to the business and designed for easy adoption. This session will introduce new product innovations in vSphere+ and vSAN+ that help customers improve workload performance, enhance operational efficiency, and increase time to value for DevOps. The subscription offerings enable VMware to deliver new value to customers faster via the VMware Cloud Console, such as advanced use cases like disaster recovery as a service, ransomware protection, vRealize integration, and many others as they become available. During the session, you will also hear from Lexmark – a long-time vSphere customer and early vSphere+ adopter – who will share about their transformation journey.</p>
</blockquote>
<p>Speakers:</p>
<ul>
<li><a href="https://www.linkedin.com/in/krish-prasad-414b13/">Krish Prasad</a></li>
<li><a href="https://twitter.com/jgilmart">John Gilmartin</a></li>
<li><a href="https://www.linkedin.com/in/ppadmanabhan/">Purnima Padmanabhan</a></li>
</ul>
<p>VMware vSphere+ and VMware vSAN+ are the future of how we will consume core vSphere services. I understand the core value add is the cloud management of both your on premises and cloud based vSphere installs so I’d like to understand what specifically it can bring to on premises customers. I’m also looking forward to seeing how a customer is already leveraging these new capabilities.</p>
<h3 id="career-growth-fireside-chat-devops-path-pcb2364us">Career Growth Fireside Chat: DevOps Path [PCB2364US]</h3>
<p>Content Catalog Link: <a href="https://event.vmware.com/flow/vmware/explore2022us/content/page/catalog?search=PCB2364US&tab.contentcatalogtabs=1627421929827001vRXW">PCB2364US</a></p>
<p>Excerpt:</p>
<blockquote>
<p>Join us to discover how to take your DevOps career to the next level. Hear firsthand from a senior DevOps professional about their personal career journey. The guest speaker will share lessons learned, tips for success, and unexpected surprises they encountered along their career path.</p>
</blockquote>
<p>Speaker:</p>
<ul>
<li><a href="https://twitter.com/Networknerd_">Nick Korte</a></li>
<li><a href="https://www.linkedin.com/in/ngook-kong-83b2aa/">Ngook Kong</a></li>
</ul>
<p>You get a DevOps, Everybody gets a DevOps! DevOps isn’t a tool, software product, job title, culture, etc. Depending on which podcast, blog post, job posting, the definition changes. In this session you will hear from someone ‘doing’ DevOps and how they got there. I’m personally not convinced that DevOps is ‘right’ for the traditional vSphere admin (Platform Engineering is the way) but there is no denying DevOps practices can benefit us.</p>
<h2 id="wrap-up">Wrap Up</h2>
<p>I am sure you will find something in this list that appeals to you, and if not spend some time browsing the <a href="https://bit.ly/3RI1YUV">Content Catalog</a> to find what interests you. With over 800 sessions I guarantee you will. What are your must see sessions? I’d love to know in case I’m missing something good.</p>
<p>In my next post I will focus on my top 5 VMware {code} sessions at VMware Explore 2022.</p>Colin Westwatercwestwater+blog@gmail.comThere are hundreds of sessions available at VMware Explore 2022 but what do I see as the Top 10 must seeWindows Docker Terraform Provider Error2022-07-05T00:00:00+01:002022-07-05T00:00:00+01:00https://www.vgemba.net/terraform/terraform-docker-provider-windows-issue<h2 id="introduction">Introduction</h2>
<p>The <a href="https://learn.hashicorp.com/">HashiCorp Learn</a> is a great resource for learning how to use the suite of HashiCorp products. It provides clear, step by step tutorials, videos and interactive sessions on products such as Terraform, Packer, etc. Seriously good stuff.</p>
<p>I was going through the tutorials on the <a href="https://learn.hashicorp.com/collections/terraform/cli">Terraform CLI</a> and could not get the example running due to this error:</p>
<div class="language-terraform highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">C</span><span class="err">:\</span><span class="nx">repos</span><span class="err">\</span><span class="nx">learn</span><span class="err">-</span><span class="k">terraform</span><span class="err">-</span><span class="nx">plan</span><span class="err">></span><span class="k">terraform</span> <span class="nx">plan</span> <span class="err">-</span><span class="nx">out</span> <span class="nx">tfplan</span>
<span class="err">│</span>
<span class="err">│</span> <span class="nx">Error</span><span class="err">:</span> <span class="nx">Error</span> <span class="nx">initializing</span> <span class="nx">Docker</span> <span class="nx">client</span><span class="err">:</span> <span class="nx">protocol</span> <span class="nx">not</span> <span class="nx">available</span>
<span class="err">│</span>
<span class="err">│</span> <span class="nx">with</span> <span class="k">provider</span><span class="p">[</span><span class="s2">"registry.terraform.io/kreuzwerker/docker"</span><span class="p">]</span><span class="err">,</span>
<span class="err">│</span> <span class="nx">on</span> <span class="nx">main</span><span class="err">.</span><span class="nx">tf</span> <span class="nx">line</span> <span class="mi">1</span><span class="err">,</span> <span class="nx">in</span> <span class="k">provider</span> <span class="s2">"docker"</span><span class="err">:</span>
<span class="err">│</span> <span class="mi">1</span><span class="err">:</span> <span class="k">provider</span> <span class="s2">"docker"</span> <span class="p">{}</span>
</code></pre></div></div>
<p>This is a quick post on how to fix this issue, which may be particular to me running Docker Desktop on Windows.</p>
<p>This error occurred when using:</p>
<div class="language-terraform highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">C</span><span class="err">:\</span><span class="nx">repos</span><span class="err">\</span><span class="nx">learn</span><span class="err">-</span><span class="k">terraform</span><span class="err">-</span><span class="nx">plan</span><span class="err">></span><span class="k">terraform</span> <span class="err">--</span><span class="nx">version</span>
<span class="nx">Terraform</span> <span class="nx">v1</span><span class="err">.</span><span class="mf">2.4</span>
<span class="nx">on</span> <span class="nx">windows_amd64</span>
<span class="err">+</span> <span class="k">provider</span> <span class="nx">registry</span><span class="err">.</span><span class="k">terraform</span><span class="err">.</span><span class="nx">io</span><span class="err">/</span><span class="nx">hashicorp</span><span class="err">/</span><span class="nx">random</span> <span class="nx">v3</span><span class="err">.</span><span class="mf">1.0</span>
<span class="err">+</span> <span class="k">provider</span> <span class="nx">registry</span><span class="err">.</span><span class="k">terraform</span><span class="err">.</span><span class="nx">io</span><span class="err">/</span><span class="nx">kreuzwerker</span><span class="err">/</span><span class="nx">docker</span> <span class="nx">v2</span><span class="err">.</span><span class="mf">16.0</span>
</code></pre></div></div>
<p>using the examples in the Terraform CLI tutorials. Finally thi was on a Windows 10 install running WSL2 and <a href="https://www.docker.com/products/docker-desktop/">Docker Desktop</a> v4.10.1.</p>
<h3 id="the-error">The Error</h3>
<p>The code example I am using is from the particular tutorial <a href="https://learn.hashicorp.com/tutorials/terraform/plan?in=terraform/cli">Create a Terraform Plan</a>. It uses the following providers and versions:</p>
<ul>
<li>kreuzwerker/docker v2.16.0</li>
<li>hashicorp/random v3.1.0</li>
</ul>
<p>Looking at the <code class="language-plaintext highlighter-rouge">main.tf</code> file:</p>
<div class="language-terraform highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">provider</span> <span class="s2">"docker"</span> <span class="p">{}</span>
<span class="k">provider</span> <span class="s2">"random"</span> <span class="p">{}</span>
<span class="k">resource</span> <span class="s2">"docker_image"</span> <span class="s2">"nginx"</span> <span class="p">{</span>
<span class="nx">name</span> <span class="p">=</span> <span class="s2">"nginx:latest"</span>
<span class="nx">keep_locally</span> <span class="p">=</span> <span class="kc">false</span>
<span class="p">}</span>
<span class="k">resource</span> <span class="s2">"docker_container"</span> <span class="s2">"nginx"</span> <span class="p">{</span>
<span class="nx">image</span> <span class="p">=</span> <span class="nx">docker_image</span><span class="p">.</span><span class="nx">nginx</span><span class="p">.</span><span class="nx">latest</span>
<span class="nx">name</span> <span class="p">=</span> <span class="s2">"hello-terraform"</span>
<span class="nx">ports</span> <span class="p">{</span>
<span class="nx">internal</span> <span class="p">=</span> <span class="mi">80</span>
<span class="nx">external</span> <span class="p">=</span> <span class="mi">8000</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">resource</span> <span class="s2">"random_pet"</span> <span class="s2">"dog"</span> <span class="p">{</span>
<span class="nx">length</span> <span class="p">=</span> <span class="mi">2</span>
<span class="p">}</span>
<span class="k">module</span> <span class="s2">"nginx-pet"</span> <span class="p">{</span>
<span class="nx">source</span> <span class="p">=</span> <span class="s2">"./nginx"</span>
<span class="nx">container_name</span> <span class="p">=</span> <span class="s2">"hello-</span><span class="k">${</span><span class="nx">random_pet</span><span class="p">.</span><span class="nx">dog</span><span class="p">.</span><span class="nx">id</span><span class="k">}</span><span class="s2">"</span>
<span class="nx">nginx_port</span> <span class="p">=</span> <span class="mi">8001</span>
<span class="p">}</span>
<span class="k">module</span> <span class="s2">"hello"</span> <span class="p">{</span>
<span class="nx">source</span> <span class="p">=</span> <span class="s2">"joatmon08/hello/random"</span>
<span class="nx">version</span> <span class="p">=</span> <span class="s2">"3.0.1"</span>
<span class="nx">hello</span> <span class="p">=</span> <span class="nx">random_pet</span><span class="p">.</span><span class="nx">dog</span><span class="p">.</span><span class="nx">id</span>
<span class="nx">secret_key</span> <span class="p">=</span> <span class="kd">var</span><span class="p">.</span><span class="nx">secret_key</span>
<span class="p">}</span>
</code></pre></div></div>
<p>Pretty straightforward. However when running plan:</p>
<div class="language-terraform highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">C</span><span class="err">:\</span><span class="nx">repos</span><span class="err">\</span><span class="nx">learn</span><span class="err">-</span><span class="k">terraform</span><span class="err">-</span><span class="nx">plan</span><span class="err">></span><span class="k">terraform</span> <span class="nx">plan</span> <span class="err">-</span><span class="nx">out</span> <span class="nx">tfplan</span>
<span class="err">│</span>
<span class="err">│</span> <span class="nx">Error</span><span class="err">:</span> <span class="nx">Error</span> <span class="nx">initializing</span> <span class="nx">Docker</span> <span class="nx">client</span><span class="err">:</span> <span class="nx">protocol</span> <span class="nx">not</span> <span class="nx">available</span>
<span class="err">│</span>
<span class="err">│</span> <span class="nx">with</span> <span class="k">provider</span><span class="p">[</span><span class="s2">"registry.terraform.io/kreuzwerker/docker"</span><span class="p">]</span><span class="err">,</span>
<span class="err">│</span> <span class="nx">on</span> <span class="nx">main</span><span class="err">.</span><span class="nx">tf</span> <span class="nx">line</span> <span class="mi">1</span><span class="err">,</span> <span class="nx">in</span> <span class="k">provider</span> <span class="s2">"docker"</span><span class="err">:</span>
<span class="err">│</span> <span class="mi">1</span><span class="err">:</span> <span class="k">provider</span> <span class="s2">"docker"</span> <span class="p">{}</span>
</code></pre></div></div>
<h3 id="the-fix">The Fix</h3>
<p>Googling the error and a few rabbit holes leads to this <a href="https://github.com/hashicorp/terraform-provider-docker/issues/180">GitHub Issue</a> from 2019 which describes my issue. The fix is to add to the <code class="language-plaintext highlighter-rouge">provider "docker" {}</code> section the following:</p>
<div class="language-terraform highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">provider</span> <span class="s2">"docker"</span> <span class="p">{</span>
<span class="nx">host</span> <span class="p">=</span> <span class="s2">"npipe:////.//pipe//docker_engine"</span>
<span class="p">}</span>
</code></pre></div></div>
<p>Running a plan now:</p>
<div class="language-terraform highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">C</span><span class="err">:\</span><span class="nx">repos</span><span class="err">\</span><span class="nx">learn</span><span class="err">-</span><span class="k">terraform</span><span class="err">-</span><span class="nx">plan</span><span class="err">></span><span class="k">terraform</span> <span class="nx">plan</span> <span class="err">-</span><span class="nx">out</span> <span class="nx">tfplan</span>
<span class="nx">Terraform</span> <span class="nx">used</span> <span class="nx">the</span> <span class="nx">selected</span> <span class="nx">providers</span> <span class="nx">to</span> <span class="nx">generate</span> <span class="nx">the</span> <span class="nx">following</span> <span class="nx">execution</span> <span class="nx">plan</span><span class="err">.</span> <span class="nx">Resource</span> <span class="nx">actions</span> <span class="nx">are</span> <span class="nx">indicated</span> <span class="nx">with</span> <span class="nx">the</span>
<span class="nx">following</span> <span class="nx">symbols</span><span class="err">:</span>
<span class="err">+</span> <span class="nx">create</span>
<span class="nx">Terraform</span> <span class="nx">will</span> <span class="nx">perform</span> <span class="nx">the</span> <span class="nx">following</span> <span class="nx">actions</span><span class="err">:</span>
<span class="c1"># docker_container.nginx will be created</span>
<span class="nx">Plan</span><span class="err">:</span> <span class="mi">7</span> <span class="nx">to</span> <span class="nx">add</span><span class="err">,</span> <span class="mi">0</span> <span class="nx">to</span> <span class="nx">change</span><span class="err">,</span> <span class="mi">0</span> <span class="nx">to</span> <span class="nx">destroy</span><span class="err">.</span>
<span class="err">───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────</span>
<span class="nx">Saved</span> <span class="nx">the</span> <span class="nx">plan</span> <span class="nx">to</span><span class="err">:</span> <span class="nx">tfplan</span>
<span class="nx">To</span> <span class="nx">perform</span> <span class="nx">exactly</span> <span class="nx">these</span> <span class="nx">actions</span><span class="err">,</span> <span class="nx">run</span> <span class="nx">the</span> <span class="nx">following</span> <span class="nx">command</span> <span class="nx">to</span> <span class="nx">apply</span><span class="err">:</span>
<span class="k">terraform</span> <span class="nx">apply</span> <span class="s2">"tfplan"</span>
</code></pre></div></div>
<p>I have truncated this output, but plan now works.</p>
<h3 id="the-explanation">The Explanation</h3>
<p>I’m no expert in Docker but from research I think what is happening is the provider is looking for the Docker Endpoint on a Linux install. On an Ubuntu machine running <a href="https://docs.docker.com/engine/context/working-with-contexts/">docker context ls</a>:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cwestwater@docker01:~<span class="nv">$ </span>docker context <span class="nb">ls
</span>NAME DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default <span class="k">*</span> Current DOCKER_HOST based configuration unix:///var/run/docker.sock swarm
</code></pre></div></div>
<p>compared to the same on my Windows machine:</p>
<div class="language-dosbatch highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">C</span>:\repos\learn<span class="na">-terraform-plan</span><span class="o">></span><span class="kd">docker</span> <span class="kd">context</span> <span class="kd">ls</span>
<span class="kd">NAME</span> <span class="kd">TYPE</span> <span class="kd">DESCRIPTION</span> <span class="kd">DOCKER</span> <span class="kd">ENDPOINT</span>
<span class="kd">default</span> <span class="o">*</span> <span class="kd">moby</span> <span class="kd">Current</span> <span class="kd">DOCKER_HOST</span> <span class="kd">based</span> <span class="kd">configuration</span> <span class="kd">npipe</span>:////./pipe/docker_engine
</code></pre></div></div>
<p>Looking at the <a href="https://registry.terraform.io/providers/kreuzwerker/docker/latest/docs">Docker Provider documentation</a> the <code class="language-plaintext highlighter-rouge">host</code> parameter is:</p>
<blockquote>
<p>host (String) The Docker daemon address</p>
</blockquote>
<p>So by adding the Windows Docker Endpoint to the providers block I am forcing it to the Windows Endpoint instead of the Linux one, implying the provider defaults to Linux.</p>
<h2 id="wrap-up">Wrap Up</h2>
<p>I’m probably in the minority of people using Docker on Windows so I’m hoping this post helps anyone else out there in the same situation. An easy fix but for the beginner to Docker and Terraform not an obvious one. If you are using Docker on Windows and Terraform make sure you define the Docker Endpoint.</p>Colin Westwatercwestwater+blog@gmail.comWhen using Docker for Windows and the Terraform Docker Provider there is a necessary step needed when following the HashiCorp Learn tutorials.