PowerShell, REST и Excel

Обнаружили проблему: командлет Get-OrgVdcNetwork почему-то не выводит часть сетей orgVDC. Опытным путем выяснили, что ему не нравятся Shared-сети, то есть сети доступные из нескольких orgVDC.

Для решения проблемы решили воспользоваться REST API от vCloud Director.

А чтобы было не скучно, решили вывод сетей делать сразу в файл Excel, чтобы уменьшить количество ручной работы.

Оригинал PoSH-скрипта я положил на гитхаб, тут его приведу для наглядности (хотя с отступами при копипасте беда).

Скрипту понадобится список vCloud Director’ов в файле vcd_list.txt.

  1. скрипт запрашивает учетные данные для подключения к vCD;
  2. скрипт считывает список vCloud Director’ов из текстового файла;
  3. создает Excel-файл, а на нем одноименный лист по каждому vCD;
  4. заполняет список сетей по vCD на листе;
  5. сохраняет результат в файле orgvdcnet.xlsx

Что стоило бы доделать – проверку на наличие установленного Excel (например, тут – $ExcelApplication = new-object -comobject excel.application). Если Excel нет, то делать вывод в CSV-файлы по старинке…

Как уменьшить размер базы NTDS.DIT в четыре раза

Спойлер – никак.

Как-то мне довелось админить большой домен на несколько тысяч пользователей. После того как база NTDS.DIT выросла до 14ГБ, поднятие нового контроллера домена без использования функционала Install From Media (IFM) стало занимать несколько часов.

Я создал новый тестовый домен, создал в нем сходное количество пользователей, групп и компьютеров. Назначил каждому пользователю картинку на 100к и…

Получил размер базы меньше 1ГБ. Это «Ж-ж-ж» неспроста! – подумал я и обратился в MS Premier Support.

Continue reading “Как уменьшить размер базы NTDS.DIT в четыре раза”

VEBA и Python

Уже пару лет Уильям Лам развивает проект под названием vCenter Event Broker Appliance (VEBA), позволяющий выполнять скрипт при наступлении какого-либо события у “Event Provider”. В качестве Event Provider может выступать как vCenter, так и другие системы. В текущей версии 0.7.1 VEBA умеет выступать даже в качестве Webhook-системы для других систем. В качестве языков поддерживаются Python, Go и PowerShell.

Развертывание апплайнса выполняется стандартно. Из обязательных настроек тут только указание адреса vCenter (если вам интересен он), логин и пароль на чтение (для считывания событий). Опционально можно указать учетную запись для регистрации веб-плагина управления к VEBA, но у меня это не взлетело 🙂

Continue reading “VEBA и Python”

Python и ESXcli

Если вы захотите собирать информацию о версии драйвера и прошивки сетевого интерфейса ESXi, то можете воспользоваться пакетом от VMware, который нужно поставить на Linux. Есть отдельные версии для 7.0 и 6.7.

После этого Вам потребуется:

  1. подключить к Python библиотеку Subprocess;
  2. если vCenter использует недоверенный сертификат, то вам потребуется игнорировать эту ошибку. Один из вариантов – указать в команде отпечаток (thumbprint) сертификата vCenter, к которому подключены сервера ESXi (оптимально собирать информацию через него). Можно выполнить “esxcli -s <vcenter> -u <vcenter_login> -p <vcenter_password> -h <esxi>”, чтобы получить отпечаток.

Для вывода списка сетевых адаптеров с используемым драйвером и красивым названием воспользуемся командой esxcli -s <vcenter> -u <vcenter_login> -p <vcenter_password> -h <esxi> --thumbprint <vcenter_thumbprint> network nic list
Для вывода подробной информации по адаптеру, из которой можно взять версию драйвера и прошивки воспользуемся похожей командой ESXCLI network nic get -n vmnic7, например.

Вот пример скрипта, который делает “что-то похожее”:

Continue reading “Python и ESXcli”

Как вкатиться в ИТ и стать Python-кодером

Как делать не стоит 🙂

    1. проучиться в ВУЗе на программиста/математика 5 лет, изучив C, Pascal, Prolog, List (хотя это-то нормальный пункт);
    2. 15 лет проработать Wind0ws-администратором, карабкаясь по профессиональной лестнице от переустановки рабочих станций – до дирижирования виртуальными серверами;
    3. последние лет пять писать постепенно усложняющиеся скрипты на PowerShell;
    4. года три назад начать занятия на курсе https://dlcourse.ai и бросить их из-за сложностей в математике (Back Propagation, например) и программировании (классы в Python ну вообще не зашли);
    5. начать изучение программирования на Coursera курса по Go… И бросить его из-за чрезвычайной сложности для начинающего программиста.
    6. посмотреть вдохновляющие лекции Ивана Бибилова (еще хвалят Хирьянова, но для меня изучение языка программирования по видеолекциям – так себе затея, имхо);
    7. вписаться в бесплатное соревнование для студентов от Яндекса – Тренировку по алгоритмам (вот это было самым крутым);
    8. написать на питоне свой скрипт синхронизации хостов и виртуальных машин из vSphere в Netbox (пока через Pyvmomi).

Как лучше, – спросите вы?

  1. “Поколение Python”: курс для начинающих на Степике. Отлично то, что есть онлайн-IDE (среда разработки) с автотестами: то есть, вы не только учите язык, но и проверяете себя на практике. Альтернативно, вы можете сесть за Python Tutorial, но практики не будет.
  2. Теперь вы знаете основы языка и можете вписаться в любую более сложную движуху. Можете выбрать курс “Поколение Python”: курс для продвинутых на Степике, а можете – тренировки Яндекса по алгоритмам. Кстати, у Яндекса есть программы стажировки по разным направлениям, причем они не ограничиваются только студентами (по крайней мере, так утверждают сотрудники Яндекса 🙂 )
    Но там очень жесткий отбор – например, в школу бэкенд разработки надо было за несколько часов решить 6 задач.
  3. Как вариант, вместо дальнейшей прокачки Python вы можете пойти в Go (ссылку на Курсеру кидал выше) или в Java. Есть мнение, что это более перспективные языки с точки зрения вашей будущей з/п.
  4. Нелишним будет подтянуть хотя бы основы Git. Там есть много полезного даже для сисадминов.

Выводы

Если вы – сисадмин и поступите так, как я написал, то ваша жизнь может заиграть новыми красками. О, сколько новых слов я сказал, когда:

  • узнал, что кабели в Netbox могут соединять как два устройства, так и устройство с “circuit”;
  • цвет кабеля в Netbox можно задать неправильно и это будет ломать API-запросы к нему;
  • узнал, что хост ESXi может не содержать vmnic5, но содержать vmnic7 (vmnic0, 1, 2, 3, 6, 7).

Зато помог коллегам вычистить конфликты серийников у хостов в Netbox.

Big Memory or Project Capitola

Одним из грядущих “бутылочных” горлышек гипервизоров называют оперативную память. Это связано с несколькими причинами:

  • кризис производства полупроводников 2021;
  • в предыдущую десятилетку было построено так много заводов по производству DRAM, что их владельцы были вынуждены демпинговать в борьбе за потребителя;
  • оперативная память не успевает вслед за процессорами понижать техпроцесс, вследствие чего количество ОЗУ на сокет ограничено (например, 6 каналами и двумя DIMM-слотами на каждый в Xeon Skylake). Количество ОЗУ на ядро перестало расти в последние годы, а вскоре, возможно, начнет падать;
  • немаловажным аспектом также является и цена за гигабайт – в стоимости современного сервера ОЗУ дороже всего остального вместе взятого.

Continue reading “Big Memory or Project Capitola”

Купил монитор

Виктор давненько подбивал меня купить себе новый монитор.

На UHD я не развелся, однако купил себе QHD.

Зацените картинку БЫЛО-СТАЛО:

До красной линии – 14″ FHD 150% масштаб. После – 27″ QHD 100% масштаб.

Я считаю – оно того стоило, а вы? 🙂

Синхронизация ВМ с хостов

Мы ранее уже писали про тонкости синхронизации времени с хостом.

А сейчас речь пойдет про локальное время на хосте и опцию по синхронизации времени ВМ с хостом, появившуюся в vSphere 7.0.

Для того, чтобы узнать локальное время на сервере ESXi в часовом поясе UTC+0, можно воспользоваться следующим скриптом PowerCLI:

Если захотите побольше узнать про вложенные свойства ConfigManager.DateTimeSystem, то можно воспользоваться фильтром к Get-View и параметром -ExpandProperty (ниже будет приведен пример для виртуальной машины).

Для того, чтобы узнать, синхронизирует ли свое время виртуальная машина через VMware Tools с хостом, можно воспользоваться одним из вариантов ниже.

Для vSphere 7.0U1 и выше:

Для более старых версий:

Отличие 7.0U1 от более старых версий в том, что свойство SyncTimeWithHost переключает разные настройки ВМ. В новой версии появился дополнительный флаг – “Synchronize time periodically”, который отвечает за синхронизацию времени с хостом раз в 60 секунд (по умолчанию отключен).

Соответственно, свойство “SyncTimeWithHost” в 7.0.1 переключает не общую синхронизацию времени, а именно “периодическую” синхронизацию. В более старых версиях это свойство отвечает за общую синхронизацию времени, тогда как в 7.0.1 за общую синхронизацию стал отвечать параметр SyncTimeWithHostAllowed!

P.S. Для того, чтобы узнать больше о содержимом вложенного свойства, например, Config.Tools, можно воспользоваться следующим фильтром:

Как я доменный контроллер переносил

Передо мной стояла достаточно легкая задача по переносу адреса и имени контроллера домена на новый сервер. Её можно разбить на следующие подзадачи:

  1. проверить текущих владельцев FSMO-ролей,  при необходимости – передать их на другой сервер, остающийся в работе;
  2. проверить настройки DNS, чтобы оба сервера использовали в первую очередь рабочий DNS;
  3. проверить статусы репликации NTDS (AD) и SYSVOL;
  4. убедившись, что все работает, понизить контроллер домена, сменить имя и адрес;
  5. назначить имя и адрес новому готовому серверу;
  6. поднять на нем роль контроллера домена.

Как видите, ничего сложного, поэтому я оценил общую трудоемкость задачи в 4 часа, как обычно заложив запас под 100% на работы.

Кстати, в статье заложена пасхалочка-бонус 🙂

Давайте вместе посмотрим, что же из этого вышло…

Continue reading “Как я доменный контроллер переносил”