vSphere Launch Remote Console — сменить Workstation на Player в Linux

После переустановки VMware Workstation возникла проблема — ссылка «Launch Remote Console» в web-интерфейсе vSphere стала открываться при помощи основного Workstation вместо более легкого и не требующего аутентификации Player-приложения. Чинится в линуксе очень просто:

 
 
xdg-mime default vmware-player.desktop  x-scheme-handler/vmrc

 

Не проверял, но по идее аналогично можно переключить на непосредственно VMware Remote Console, поставив название его ярлыка вместо «vmware-player.desktop» (ярлыки искать в /usr/local/share/applications/)

 

Централизованное хранилище VMware Tools и тулзы для Windows 2003 на vSphere 6.7

Обновив сферу, столкнулся с ошибкой:

Unable to install VMware Tools. An error occurred while trying to access image file «/usr/lib/vmware/isoimages/winPreVista.iso» needed to install VMware Tools: 2 (No such file or directory). Please refer the product documentation or KB article 2129825 for details about how to get VMware Tools package for this guest operating system

Также ошибка может звучать более лаконично:

The required VMware Tools ISO image does not exist or is inaccessible.

Оказывается, в составе новых ESXI нет исошника с тулзами под старые системы, хотя некоторая обратная совместимость, в виде «знания» какой исошник нужно монтировать — осталась.

Решение этой проблемы — скачать legacy-tools и добавить нужные исошники. Но так как это придется делать для каждого хоста, то проще на общедоступном сторадже выделить папку, свалить туда все исошники и поправить на каждом из серверов параметр, указывающий на папку с тулзами.

Собственно, тулзы качаются с сайта вмвари: легаси и текущие на данный момент.

Оба архива содержат папки «floppies» и «vmtools» — совмещаем их содержимое (для легаси и новых тулзов содержимое не пересекается) и аплоадим эти две папки в отдельную папку в хранилище. Допустим, в папку vmwaretools на сторадже myStorage (таким образом у нас две папки: «myStorage/vmwaretools/floppies» и «myStorage/vmwaretools/vmtools»)

Теперь заходим в «Advanced System Settings» одного из серверов:

Ищем в них параметр «UserVars.ProductLockerLocation«, по дефолту его значение — «/locker/packages/vmtoolsRepo/», меняем его на «/vmfs/volumes/myStorage/vmwaretools/«.

Теперь сервер придется перезагрузить (по крайней мере у меня он не подхватил новое значение без ребута). После перезагрузки тулзы будут корректно ставиться уже из хранилища.

Технически можно повторить процедуру вручную на каждом из серверов, или включить этот параметр в host profile:

 

Настройка хранилища с iSCSI для VMware

Не нашел нормальной статьи как из говна и палок собрать СХД для ESXI от вмвари, так что распишу сам как же это делается.

Для начала нужно СХД.

Подготовка iSCSI-хранилища

Назовем это сервер-хранилище, чтобы не путать с серверами вмвари.

Это может быть любой комп, желательно сервер, желательно с рейдом. Я поставил на него Debian, потому что я люблю дебиан.

Сразу хинт: в рабочей обстановке на сервере скорее всего не будет интернета, поэтому для установки софта лучше развернуть  отдельный дебиан на сервере (виртуалке) с доступом и в инет и в локалку, поставить на него apt-cacher-ng, а на нашей разворачиваемой хранилке создать файл «/etc/apt/apt.conf.d/66proxy» с содержимым

 
 
  1. Acquire::http { Proxy "http://IP:3142"; }

 Тогда конкретно apt будет качать все через этот «прокси» и не придется настраивать настоящую проксю, которая скорее всего не нужна а может и противоречить безопасности.

Однако про iSCSI. Ставим единственный необходимый пакет:

apt update && apt install tgt

После этого добавляем конфиг

/etc/tgt/conf.d/storage_target.conf:
 
  1. <target iqn.2019-10.server1.domain.local:lun1>
  2. scsi_id IET 00010001
  3. controller_tid 1
  4. lun 1
  5. backing-store /dev/mapper/server1-storage
  6. </target>

 

Что тут почем:

iqn.2019-10.server1.domain.local:lun1 — тут iqn.2019-10 — это стандартное начало с указанием даты создания луна  например; storage1.server1.local — адрес нашего сервера; lun1 — первый (и единственный) лун. Фактически во всей этой строке можно писать значения от балды, они несут скорее идентификационное значение для нас.

«scsi_id IET 00010001» , «controller_tid 1» и «lun 1» —  айдишник луна,  айдишник контроллера луна и номер луна, все идут в связке и имеют важное значение, если в планах подключение нескольких импровизированных серверов-хранилищ к серверу с вмварью. Чтобы вмварь не подумала что ваши два (три, пять, двадцать два) сервера-хранилища содержат один и тот же лун,  все эти номера должны быть уникальны. Если у вас по одному луну на хранилище — просто нумеруйте их последовательно: 00010001, 1, 1 — для первого сервера-хранилища; 00020001, 2, 2 — для второго; 00030001, 3, 3 — для третьего и т.д.

backing-store — неотформатированное  блочное устройство, в моем случае том LVM. Имя должно быть уникально, разумеется, в пределах сервера-хранилища.

В моем случае я настраиваю два хранилища, так что вот конфиг второго

/etc/tgt/conf.d/storage_target.conf:
 
  1. <target iqn.2019-10.server2.domain.local:lun1>
  2. scsi_id IET 00020001
  3. controller_tid 2
  4. lun 2
  5. backing-store /dev/mapper/server2-storage
  6. </target>

 

Собственно, всё. Стоит только уточнить — сервер-хранилище и esxi-сервер должны быть в одной подсети, по крайней мере если у вас ESXI не одной из последних версий, которые научились в машрутизируемый iSCSI. Я буду использовать старенький уже ESXI 5, так что для моего случая это замечание справедливо.

Настройка сервера ESXI

Итак, у меня отдельно стоящий сервер ESXI без — это важно — железного iSCSI-адаптера. Если у вас они есть и вмварь их видит (как на картинке ниже) — стоит использовать их, если нет — нажимайте синюю ссылку Add над списком:

После нажатия, вам должны предложить добавить софтварный iSCSI-адаптер

Окей, добавили

Заходим в свойства и добавляем интерфейс из виртуального свича. Замечу, что эта штука не поддерживает аггрегированные физические интерфейсы и откажется добавлять виртуальный, если у него в конфиге прописано более одного физического.

Дальше переходим на вкладку Dynamic Discovery и добавляем айпишники серверов-хранилищ (порт по умолчанию)

Закрываем окна, соглашаемся обновить список лунов и вуаля — видим по два имени на одно однолунное хранилище (имя луна имя контроллера). Обратите внимание — айдишники луна и контроллера входят в имя (к id контроллера дописывается «0000»), а номер луна — показывается в графе LUN.

 

Теперь остается через Storage — Add storage превратить луны в хранилища VMware

Как давно выключена эта виртуалка?

Набросал небольшой скриптец для VMware ESXi, чтобы проверять как давно менялось состояние виртуальных машин. При запуске он заполняет кастомное поле «Power» состоянием и датой, когда это состояние было обнаружено. Кинув в шедулер можно с некоторой точностью понимать, что вот эту виртуалку выключили только вчера, а вот та — выключена уже пару лет (конечно после того как этот скрипт пару лет проверял ее состояние =). Скрипт использует VMware PowerCLI

check-vm-powerstate.ps1
 
Add-PSSnapin VMware.VimAutomation.Core
Connect-VIServer -Server localhost
Get-VM  | ForEach-Object { 
                        $vm = $_
                        $date = (Get-Date -UFormat "%Y-%m-%d  %R").ToString()
                        $AnnotationStatus =  (Get-Annotation $_ | Where-Object { $_.Name -eq "Power"}).Value
                        
                        if ( ($_.PowerState -eq 'PoweredOn') -and ($AnnotationStatus -like 'Down*') ) {
                            $vm | Set-Annotation -CustomAttribute "Power" -Value "Up since $date" 
                        }
                        if ( ($_.PowerState -eq 'PoweredOn') -and ($AnnotationStatus -eq '') ) {
                            $vm | Set-Annotation -CustomAttribute "Power" -Value "Up since  < $date" 
                        }
                        if ( ($_.PowerState -eq 'PoweredOff') -and ($AnnotationStatus -like 'Up*') ) {
                            $vm | Set-Annotation -CustomAttribute "Power" -Value "Down since $date" 
                        }
                        if ( ($_.PowerState -eq 'PoweredOff') -and ($AnnotationStatus -eq '') ) {
                            $vm | Set-Annotation -CustomAttribute "Power" -Value "Down since < $date" 
                        }
                    }