PowerCLI: Configuring an All-Flash vSAN

From my understanding all-flash vSAN works like this:
  1. Caching Tier is 100% Writes. (Write Buffer)
  2. Capacity Tier is Mixed-Use
With this in mind, I ordered Dell R730's w/ two types of drives.  Two high write endurance SSD's and Four Mixed Use SSD's.

Short Story:
Here is the script I created to 'tag' the mix-use drives as flash capacity:
#Enable All Flash vSAN Intelligently
Add-PSSnapIn -Name VMware.VimAutomation.Core -ErrorAction SilentlyContinue
$TargetHosts = Get-VMHost
$CacheDiskVendor = "TOSHIBA"
$CacheDiskModel = "PX02SSF040"
$CapacityDiskVendor = "TOSHIBA"
$CapacityDiskModel = "PX02SMF040"

Foreach ($VMhost in $TargetHosts)
    $ESXCLI = $VMHost | Get-ESXCLI
    $Storage = $VMhost | Get-VMHostStorage
    Foreach ($SCSILUN in $Storage.ScsiLun)
        If ($SCSILUN.Vendor -match $CapacityDiskVendor -and $SCSILUN.Model -match $CapacityDiskModel)
I'm simply listing cache disk model and vendor as variables for my own sanity.  They are not used in the script to do anything.
Long Story:
The conundrum I ran into while going to configure my all-flash vSAN was that all my SSD's were from the same vendor and only differed by model number.  The part that sucked, the GUI doesn't reflect the model number and vSAN 6 defaults to detecting all SSD's as caching disks.  To top it off, the disks w/ their canonical names do not enumerate in the same physical order.

So, using the script above, I was able to find out the vendor and model numbers of all the detected disks and then apply the 'capacityFlash' tag to the correct disks.  If all my disks were the same, then I wouldn't have had specify models, but hopefully this is helpful to anyone else that might run into this.

References (Other Tools):

PowerCLI: Configure/Enable Remote Syslog

Been spoiled w/ Log Insight, so didn't realize what I needed to do to get logs forwarded to Splunk Cloud from ESXi hosts.  Here is the script I wrote up to do so:

#Gets your list of hosts to configure for remote syslog.
$VMHosts = Get-VMHost
#$VMHosts = Get-Cluster MyCluster | Get-VMHost #Uncomment and comment line above if you want to target hosts in a cluster only.
#The remote sys log destination
$SyslogValue = "tcp://"
#If Replace is set to true, will simply overwrite whatever is populated currently.  If False, then it will append.
$Replace = $true
#If ConfirmPreference is set to true, this script will ask you on every single host whether you want to make the change.  Set to $False, if you just want it to do it.
$ScriptConfirmPreference = $false

## Don't modify from here ##
$AdvancedSettings= $VMHosts | Get-AdvancedSetting| where {$_.name -match "syslog.global.loghost"}
Foreach ($AdvancedSetting in $AdvancedSettings)
    If (!$AdvancedSetting.Value) {$AdvancedSetting| Set-AdvancedSetting-Value $SyslogValue-Confirm:$ScriptConfirmPreference}
    $CLI = $AdvancedSetting.Entity | Get-EsxCli
    Switch ($Replace)
            $AdvancedSetting | Set-AdvancedSetting -Value $SyslogValue -Confirm:$ScriptConfirmPreference
            $AdvancedSetting.Entity | Get-VMHostFirewallException| where {$_.Name -eq "syslog"} | Set-VMHostFirewallException-Enabled $true
            If ($AdvancedSetting.value -match $SyslogValue)
            {Write-Host-ForegroundColor:Orange"$($AdvancedSetting.Entity) has a current value of $($AdvancedSetting.value), which seems to contain this value: $($SyslogValue).  Replace switch is false, so this script will not change it."}
            Else {$AdvancedSetting| Set-AdvancedSetting-Value ($AdvancedSetting.value + "," + $SyslogValue) -Confirm:$ScriptConfirmPreference}
            $AdvancedSetting.Entity | Get-VMHostFirewallException| where {$_.Name -eq "syslog"} | Set-VMHostFirewallException-Enabled $true


SWAG: VMWorld 2015 - MGT4783 - Introduction to Monitoring the Public Cloud with vRealize Operations Manager

Slots still open for our session.  Join us as we walk you through installing, configuring, and utilizing the AWS management pack for vRealize Operations.  During our Q&A we'll be giving away some swag bags from FlexDrive (Stickers, T-Shirt, keychain, and Car Vent cell phone holder).  We'll also have some Cox Automotive power bricks to giveaway to a lucky few.  Maybe some other free stuff too.
Swag Bag
Looking forward to a great session and want to make sure you technical folks leave w/ some useful reference material and general info.  Swag is always good too. \(^o^)/

K. Chris Nakagaki - Technical Lead Engineer
Sonya Ryherd - Sr. Systems Engineer

vROPs: Take Cluster Offline: Status: Removing Slice

Applies to vROPs running in NON-HA mode, below was thanks to help from VMware support.  They have an internal KB on this so it should eventually be published or more likely fixed in the future.  Mostly for my own notes, but interesting for those tinkerers out there.

Attempting to remove remote collector node from vROPs to replace w/ larger remote collector.  Correct way would have been to move 'instances' to other collector or data nodes before putting collector node offline.  Instead, I just removed the collector node from the admin console.  That's when it got stuck in this state.

It's supposed to move the 'instances' to other collectors, but that didn't seem to work and it got stuck in a state of taking the cluster offline.  So to remove the remote collector and get back to a stable state, VMware support walked me through below.

Resolution to Case:

Did you know? Running ESXi on Macs has licensing caveats...

Did you know that according to Apple's OS X EULA, you are only allowed to run 2 OS X VM instances per physical device?

So what does that mean for running ESXi on a Mac Pro?  You can only run, legally, 2 OS X VM's on it.


How's them apples?  Kinda sucks, wondering what other people have done to get around this?  Mac Mini value was much better w/ vSAN when it had two internal disks (for the server version).

Really the only option is to talk to your Apple rep and see how you can license more.