Контейнеры — стейтлес, говорили они

Возникло давеча у меня желание запустить контейнер SonarQube.

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

Я взял оттуда команду для запуска контейнера:

Запустил контейнер, сменил пароль пользователя admin, зарегистрировал Gitlab и добавил репозиторий с кодом в качестве проекта.

Затем я остановил контейнер:

Когда мне снова потребовался контейнер SonarQube, я запустил его командой

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

Хочу воспользоваться подсказкой «Помощь зала»: как вы считаете, уважаемые читатели — почему контейнер после перезапуска сохранил свое состояние?

Опрос CDP/LLDP с ESXi через PowerShell/Python

Однажды у вас может возникнуть желание составить таблицу портов коммутаторов, к которым подключены ваши хосты.

Если у вас «гомогенное» окружение, состоящее из коммутаторов Cisco, то заморачиваться не нужно совсем (CDP настроен в Virtual Switch Standard/Distributed Virtual Switch по умолчанию).

Но если в окружении не только Cisco, то вам необходимо немного сильнее напрячься:

  • использовать только распределенные коммутаторы;
  • включать на них поддержку LLDP;
  • с удивлением обнаружить, что в API опрос CDP и LLDP происходит по-разному.

Читать далее «Опрос CDP/LLDP с ESXi через PowerShell/Python»

Заметочка про Custom Attributes

Потребовалось проставить Custom Attribute для виртуальных машин.

На помощь, как обычно, пришел Google и подсказал следующее решение:

PowerShell, SCSILunPath и Datastore Name

Обратился ко мне за советом постоянный читатель: помоги, говорит, с моим iSCSI-массивом NetApp. Пытаюсь вывести Get-SCSILunPath, так там ни имени датастора, ни IP-адреса «таргета» в SanId нет 🙁

Посмотрел — и действительно так: в отличие, например, от Huawei, NetApp не выводит IP-адрес IQN-Target в выводе атрибутов Get-SCSILunPath. Да и привязать CanonicalName вида naa.thebeststoragearray к датастору с первого взгляда не удается…

Читать далее «PowerShell, SCSILunPath и Datastore Name»

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.

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

VEBA и Python

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

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

Читать далее «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, например.

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

Читать далее «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). Количество ОЗУ на ядро перестало расти в последние годы, а вскоре, возможно, начнет падать;
  • немаловажным аспектом также является и цена за гигабайт — в стоимости современного сервера ОЗУ дороже всего остального вместе взятого.

Читать далее «Big Memory or Project Capitola»