Поиск по сайту:

Что такое тестирование инфраструктуры и как это сделать с помощью PowerShell


Поскольку мы все пытаемся сделать больше с меньшими затратами с помощью автоматизации, иногда мы сталкиваемся с новой проблемой. Сейчас мы запускаем так много скриптов и процессов, что, в конце концов, не уверены, как выглядит «готово».

Если мы запускаем сценарий подготовки пользователя, который создает пользователя AD (Active Directory), почтовый ящик Exchange или домашнюю папку, как мы действительно узнаем, что этот сценарий сделал все, что должен? Мы не знаем. Мы можем заметить, что не было выдано ошибки, а также впоследствии провести выборочную проверку. Но если сценарий охватывает 1000 пользователей, это невозможно. Нам тоже нужно использовать автоматизацию тестирования!

Что такое тестирование инфраструктуры?

Одним из способов автоматизации такого рода тестирования является так называемое тестирование инфраструктуры. Что такое тестирование инфраструктуры? Это означает любой код, который считывает значения конфигурации из различных элементов ИТ-среды и сравнивает их с ожидаемыми значениями.

Вот некоторые примеры тестирования инфраструктуры:

  • Был ли этот пользователь AD создан с правильными атрибутами?
  • Отвечает ли порт 80 на моем веб-сервере?
  • Служба DHCP запущена?

Обсуждение тестирования инфраструктуры намного шире, чем у нас есть время для одной статьи, но я могу дать вам преимущество. Когда вы начнете писать эти тесты, вы начнете замечать закономерности; вы начнете понимать, что постоянно пишете один и тот же код, просто применяя его к разным вещам. Вместо того, чтобы постоянно копировать и вставлять, вы можете поделиться этим кодом в виде скрипта или функции PowerShell.

Давайте рассмотрим пару распространенных примеров сценариев, которые я использую, чтобы убедиться, что моя инфраструктура настроена надлежащим образом.

Тестирование сетевого порта

Одним из типичных примеров тестирования инфраструктуры является тестирование сетевого порта. Поскольку все сетевые службы открываются и прослушивают определенный порт, настоящая проверка того, «работает» ли эта служба, заключается в подтверждении того, что определенный порт доступен для удаленных компьютеров. Однако для создания этого теста требуются достаточные знания о TCP, UDP и .NET. К счастью, вы можете использовать существующий скрипт сообщества под названием Test-NetworkPort.ps1. Этот сценарий можно загрузить из галереи PowerShell, запустив Install-Script -Name Test-NetworkPort.

После загрузки просто вызовите его с помощью Test-NetworkPort.ps1 и передайте имя компьютера и порт для тестирования.

PS > Test-NetworkPort.ps1 -ComputerName DC -Port 389
True

В зависимости от того, прослушивается порт или нет, этот скрипт вернет True или False. Вы можете изучить другие параметры этого скрипта, прочитав связанную с ним справку через Get-Help Test-NetworkPort.ps1.

Этот скрипт выполняет тест в инфраструктуре, прослушивая определенный порт.

Тестирование разрешения DNS-имен

При запуске новой машины, независимо от того, полагаетесь ли вы на динамическую DNS для регистрации имени или явно создаете запись DNS, вам необходимо убедиться, что ее имя может быть разрешено. С помощью PowerShell вы можете использовать сценарий, который пытается разрешить конкретное имя и вернуть True или False, если оно может быть разрешено или нет.

Как и в нашем примере тестирования порта, мы также можем загрузить этот скрипт из галереи PowerShell через Install-Script -Name Test-DnsNameResolution.

Когда загрузка завершится, просто вызовите Test-DnsNameResolution.ps1, указав имя и DNS-сервер, который вы хотите запросить.

PS> Test-DnsNameResolution.ps1 -Name DC.mylab.local -Server DC
False

Если сценарий возвращает True, DNS-сервер DC может разрешить имя DC.mylab.local. В противном случае он вернул бы False.

Заключение

Приведенные здесь примеры — лишь два из тысячи. Цель этой статьи не в том, чтобы показать вам, как выполнять тесты инфраструктуры, а в том, чтобы помочь вам создать свои собственные.

Чтобы создать хорошо разработанные тесты инфраструктуры, необходимо сначала определить, что значит быть «работающим» или «ожидаемым», создать сценарий PowerShell для определения текущего и ожидаемого состояния и принятия решения исходя из этого.

Не продолжайте вручную подтверждать, что ваша инфраструктура работает так, как вы ожидаете. Приступайте к созданию сценариев PowerShell и автоматизируйте эти рутинные процессы!