Thursday, March 13, 2014

vSAN GA, ESXi 5.5 U1, PowerCli 5.5 R2 and So many things...

This past week was full of announcements from VMware.

Finally vSAN is GA'ed (Generally Available), after so long community Beta testing and pricing is also announced.

ESXi 5.5 Update 1 with other supporting softwares (vCenter & VCSA) is also released with bugfixes and available for download.

In the meantime, PowerCLI 5.5 R2 also released with many new cmdlets, checkout the release details at below URL:-
http://www.virtu-al.net/2014/03/13/powercli-5-5-r2-released/

Free e-Learning for vCAC App services 6.0 from VMware Education at below URL:-
http://mylearn.vmware.com/mgrReg/courses.cfm?ui=www_edu&a=det&id_course=215748

If you want to update your Home Lab/Standalone ESXi to ESXi 5.5 U1, below are the URLs for seeking Help

http://www.tinkertry.com/download-vsphere-5-5-u-1-lab/

http://www.v-front.de/2014/03/issue-after-upgrading-your-vcenter-55.html

One Good Article for Easing your Day-To-Day Tasks

http://www.50mu.net/2014/03/12/how-to-translate-windows-disk-ids-to-storage-arrays-luns/

Another Article on IPv6 Architecture for VMware

http://www.edge-cloud.net/2014/03/architecture-design-vsphere-ipv6/


Tuesday, March 11, 2014

Monday, March 10, 2014

VCP-Level certifications now comes with expiry

As you (now) know, that VCP-level certification need to be renewed every two year or move to next level (VCAP), to keep it new. After hearing this news, i had mixed emotions on this.
http://mylearn.vmware.com/mgrReg/plan.cfm?plan=46667&ui=www_cert


If you have mixed emotions too, share in comments..thanks



Friday, March 7, 2014

Basic Tasks GUI PowerCLi script

This script was created for delegating day-to-day tasks to Junior Vmware Admins.-

copy/paste this code and save as .ps1


#Generated Form Function
function GenerateForm {
########################################################################
# Code Generated By: SAPIEN Technologies PrimalForms (Community Edition) v1.0.10.0
# Generated On: 6/20/2013 10:16 AM
# Generated By: ts-harshavardh.gupta
########################################################################

#region Import the Assemblies
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
#endregion

#region Generated Form Objects
$form1 = New-Object System.Windows.Forms.Form
$label3 = New-Object System.Windows.Forms.Label
$tgt_datastore = New-Object System.Windows.Forms.TextBox
$disconnect_btn = New-Object System.Windows.Forms.Button
$eagerzero_btn = New-Object System.Windows.Forms.Button
$pvscsi_btn = New-Object System.Windows.Forms.Button
$bootdelay_btn = New-Object System.Windows.Forms.Button
$IOPS_btn = New-Object System.Windows.Forms.Button
$label2 = New-Object System.Windows.Forms.Label
$tgt_vm = New-Object System.Windows.Forms.TextBox
$Login_btn = New-Object System.Windows.Forms.Button
$vCenter_txt = New-Object System.Windows.Forms.TextBox
$label1 = New-Object System.Windows.Forms.Label
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState
#endregion Generated Form Objects

#----------------------------------------------
#Generated Event Script Blocks
#----------------------------------------------
#Provide Custom Code for events specified in PrimalForms.
$disconnect_btn_OnClick=
{
#TODO: Place custom script here
#Disconnect from vCenter server
Disconnect-VIServer -Confirm:$false

#Close Form
$form1.close()
}

$IOPS_btn_OnClick=
{
#TODO: Place custom script here NOW WORKING
$DiskLimitIOPerSecond = 500
# $DiskLimitIOPerSecond = -1 # Unlimited

$vm = Get-VM -Name $tgt_vm.text
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$vm.ExtensionData.Config.Hardware.Device |
 where {$_ -is [VMware.Vim.VirtualDisk]} | %{
  $dev = New-Object VMware.Vim.VirtualDeviceConfigSpec
  $dev.Operation = "edit"
  $dev.Device = $_
  $dev.Device.StorageIOAllocation.Limit = $DiskLimitIOPerSecond
  $spec.DeviceChange += $dev
}
$vm.ExtensionData.ReconfigVM_Task($spec)
}

$Login_btn_OnClick=
{
#TODO: Place custom script here NOW WORKING
if ((Get-PSSnapin "VMware.VimAutomation.Core" -ErrorAction SilentlyContinue) -eq $null) {
Add-PSSnapin "VMware.VimAutomation.Core"
}

#Connect to vCenter
Connect-VIServer $vCenter_txt.Text
}

$handler_label1_Click=
{
#TODO: Place custom script here

}

$eagerzero_btn_OnClick=
{
#TODO: Place custom script here

}

$bootdelay_btn_OnClick=
{
#TODO: Place custom script here NOW WORKING
$vm = Get-VM -Name $tgt_vm.text
$BootDelay = 10000
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$spec.BootOptions = New-Object VMware.Vim.VirtualMachineBootOptions
$spec.BootOptions.BootDelay = $BootDelay
$vm.Extensiondata.ReconfigVM_Task($spec)
}

$pvscsi_btn_OnClick=
{
#TODO: Place custom script here
#Change scsi to paravirtualized NOW WORKING
$vm = Get-VM -Name $tgt_vm.text
$scsiController = Get-HardDisk -VM $vm | Select -First 1 | Get-ScsiController
Set-ScsiController -ScsiController $scsiController -Type ParaVirtual
}

$OnLoadForm_StateCorrection=
{#Correct the initial state of the form to prevent the .Net maximized form issue
$form1.WindowState = $InitialFormWindowState
}

#----------------------------------------------
#region Generated Form Code
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 204
$System_Drawing_Size.Width = 529
$form1.ClientSize = $System_Drawing_Size
$form1.DataBindings.DefaultDataSourceUpdateMode = 0
$form1.Name = "form1"
$form1.Text = "Basic Tasks"

$label3.DataBindings.DefaultDataSourceUpdateMode = 0

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 26
$System_Drawing_Point.Y = 173
$label3.Location = $System_Drawing_Point
$label3.Name = "label3"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 20
$System_Drawing_Size.Width = 88
$label3.Size = $System_Drawing_Size
$label3.TabIndex = 11
$label3.Text = "Datastore Name"

$form1.Controls.Add($label3)

$tgt_datastore.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 114
$System_Drawing_Point.Y = 174
$tgt_datastore.Location = $System_Drawing_Point
$tgt_datastore.Name = "tgt_datastore"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 20
$System_Drawing_Size.Width = 153
$tgt_datastore.Size = $System_Drawing_Size
$tgt_datastore.TabIndex = 10

$form1.Controls.Add($tgt_datastore)


$disconnect_btn.DataBindings.DefaultDataSourceUpdateMode = 0

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 405
$System_Drawing_Point.Y = 12
$disconnect_btn.Location = $System_Drawing_Point
$disconnect_btn.Name = "disconnect_btn"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 21
$System_Drawing_Size.Width = 118
$disconnect_btn.Size = $System_Drawing_Size
$disconnect_btn.TabIndex = 9
$disconnect_btn.Text = "Disconnect"
$disconnect_btn.UseVisualStyleBackColor = $True
$disconnect_btn.add_Click($disconnect_btn_OnClick)

$form1.Controls.Add($disconnect_btn)


$eagerzero_btn.DataBindings.DefaultDataSourceUpdateMode = 0

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 289
$System_Drawing_Point.Y = 171
$eagerzero_btn.Location = $System_Drawing_Point
$eagerzero_btn.Name = "eagerzero_btn"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 25
$System_Drawing_Size.Width = 83
$eagerzero_btn.Size = $System_Drawing_Size
$eagerzero_btn.TabIndex = 8
$eagerzero_btn.Text = "Eager Zeroed"
$eagerzero_btn.UseVisualStyleBackColor = $True
$eagerzero_btn.add_Click($eagerzero_btn_OnClick)

$form1.Controls.Add($eagerzero_btn)


$pvscsi_btn.DataBindings.DefaultDataSourceUpdateMode = 0

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 285
$System_Drawing_Point.Y = 131
$pvscsi_btn.Location = $System_Drawing_Point
$pvscsi_btn.Name = "pvscsi_btn"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 27
$System_Drawing_Size.Width = 88
$pvscsi_btn.Size = $System_Drawing_Size
$pvscsi_btn.TabIndex = 7
$pvscsi_btn.Text = "PV SCSI"
$pvscsi_btn.UseVisualStyleBackColor = $True
$pvscsi_btn.add_Click($pvscsi_btn_OnClick)

$form1.Controls.Add($pvscsi_btn)


$bootdelay_btn.DataBindings.DefaultDataSourceUpdateMode = 0

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 285
$System_Drawing_Point.Y = 93
$bootdelay_btn.Location = $System_Drawing_Point
$bootdelay_btn.Name = "bootdelay_btn"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 23
$System_Drawing_Size.Width = 88
$bootdelay_btn.Size = $System_Drawing_Size
$bootdelay_btn.TabIndex = 6
$bootdelay_btn.Text = "Boot Delay"
$bootdelay_btn.UseVisualStyleBackColor = $True
$bootdelay_btn.add_Click($bootdelay_btn_OnClick)

$form1.Controls.Add($bootdelay_btn)


$IOPS_btn.DataBindings.DefaultDataSourceUpdateMode = 0

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 285
$System_Drawing_Point.Y = 56
$IOPS_btn.Location = $System_Drawing_Point
$IOPS_btn.Name = "IOPS_btn"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 20
$System_Drawing_Size.Width = 88
$IOPS_btn.Size = $System_Drawing_Size
$IOPS_btn.TabIndex = 5
$IOPS_btn.Text = "Limit IOPS"
$IOPS_btn.UseVisualStyleBackColor = $True
$IOPS_btn.add_Click($IOPS_btn_OnClick)

$form1.Controls.Add($IOPS_btn)

$label2.DataBindings.DefaultDataSourceUpdateMode = 0

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 25
$System_Drawing_Point.Y = 56
$label2.Location = $System_Drawing_Point
$label2.Name = "label2"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 20
$System_Drawing_Size.Width = 81
$label2.Size = $System_Drawing_Size
$label2.TabIndex = 4
$label2.Text = "VM Name"

$form1.Controls.Add($label2)

$tgt_vm.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 106
$System_Drawing_Point.Y = 56
$tgt_vm.Location = $System_Drawing_Point
$tgt_vm.Name = "tgt_vm"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 20
$System_Drawing_Size.Width = 159
$tgt_vm.Size = $System_Drawing_Size
$tgt_vm.TabIndex = 3

$form1.Controls.Add($tgt_vm)


$Login_btn.DataBindings.DefaultDataSourceUpdateMode = 0

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 285
$System_Drawing_Point.Y = 13
$Login_btn.Location = $System_Drawing_Point
$Login_btn.Name = "Login_btn"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 20
$System_Drawing_Size.Width = 89
$Login_btn.Size = $System_Drawing_Size
$Login_btn.TabIndex = 2
$Login_btn.Text = "Login"
$Login_btn.UseVisualStyleBackColor = $True
$Login_btn.add_Click($Login_btn_OnClick)

$form1.Controls.Add($Login_btn)

$vCenter_txt.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 106
$System_Drawing_Point.Y = 14
$vCenter_txt.Location = $System_Drawing_Point
$vCenter_txt.Name = "vCenter_txt"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 20
$System_Drawing_Size.Width = 162
$vCenter_txt.Size = $System_Drawing_Size
$vCenter_txt.TabIndex = 1

$form1.Controls.Add($vCenter_txt)

$label1.DataBindings.DefaultDataSourceUpdateMode = 0

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 26
$System_Drawing_Point.Y = 18
$label1.Location = $System_Drawing_Point
$label1.Name = "label1"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 16
$System_Drawing_Size.Width = 88
$label1.Size = $System_Drawing_Size
$label1.TabIndex = 0
$label1.Text = "vCenter Server"
$label1.add_Click($handler_label1_Click)

$form1.Controls.Add($label1)

#endregion Generated Form Code

#Save the initial state of the form
$InitialFormWindowState = $form1.WindowState
#Init the OnLoad event to correct the initial state of the form
$form1.add_Load($OnLoadForm_StateCorrection)
#Show the Form
$form1.ShowDialog()| Out-Null

} #End Function

#Call the Function
GenerateForm

Wednesday, March 5, 2014

Tuesday, March 4, 2014

VMware 2nd Shot Trouble Saga-now ended

As you're aware from my previous blog post, that i'm facing trouble booking exam using 2nd shot voucher code. Complaint reported on feb 26 and i haven't received even a simple acknowledgement from Pearson VUE customer care. Yesterday and today i followed-up with them regarding this issue and there simple answer was "we're following-up with concerned department". IMHO, there is no coordination between VMware Education and Pearson VUE on VMware Advanced certification, because vmware sends the result to candidate, but doesn't update the same to Testing Organisation. After receiving my result, i cross-checked pearson's site for exam result status, it is not changed till date, still saying 'Taken'. which clears everything that and answers all my queries regarding this voucher issue. For this voucher to work, my status must reflect as 'Failed', which is not the case. Very clever VMware education for keeping my result so confidential. However, i got a reply from Pearson Customer care executive on my mail, for the record. in case this matter won't get solved within defined time-period, i can approach VMware/Pearson for compensation, because i took the exam with this belief in my mind that 2nd shot is there to save my *ss. It is like life/accidental insurance policy. Let's see what will happen, i will follow-up again and share the news, that i'm the first person in india to utilize VMware's 2nd shot exam offer (write on comments, if someone else took the title). in the mean time i'm preparing for the vcap exam and found some more useful links.

ESXCLI 5.0
http://paulgrevink.wordpress.com/2012/06/24/mindmapping-the-esxcli-command/

ESXCLI 5.1
http://www.virten.net/2013/03/esxcli-command-mindmap/

UPDATE:- today morning i received a phone call from Pearson vue representative from California and they provided me a different voucher code for booking exam as the advertised code 'ADV103' is not working at all, i don't want to get into technicalities but i'm happy now after receiving and booking the exam. My advice to people in india who are thinking of availing the 2nd shot offer, please call pearson vue support mentioned in my previous post and ask for complaint number and send your result.pdf to them.

Monday, March 3, 2014

VCAP5-DCA Mock Exam Experience

On Sunday i took Mock VCAP5-DCA Lab exam, hosted by Joshua Andrews @sostechblog.com fame.

I requested Joshua using twitter for accessing 'Test Track', this was my first acquaintance with Joshua and he responded very quickly, he is really nice person and very helpful. Supporting VMware community in such a way is really awesome because not everyone has a nice lab and experience in setting-up such troubleshooting scenarios. I really like those tricky scenarios from Joshua, some are really mind-storming. Another thing that i wanted to mention is about 'Test Track' project, which is hosted in VMworld consecutively for some time by Joshua. But, not everyone can experience it firsthand by visiting vmworld (even my company doesn't sponsor me for vmworld 2014).

I want request Joshua and other respective vmware community members for Convincing VMware Education or VMware HOL to host such labs for students/professionals for practicing/troubleshooting such scenario for achieving certification and career advancement.

The Test Track Details can be found out at http://sostechblog.com/2014/02/10/vcap-test-track-connection-information/

Another Great VCAP5-DCA scenario resource is available at http://www.seancrookston.com/blog/2010/10/29/vcap-dca-mock-lab-q1/ there are almost 10 scenarios prepared by Sean.

By doing mind-storming with such scenarios will prepare you for VCAP5-DCA in no time.

Have a happy training.