- PVSM.RU - https://www.pvsm.ru -

Автоматизация администрирования систем, обзор проблем и вариант решения. Ed Wilson

Ниже перевод части главы 1 книги Powershell and WMI. Освещается направление развития информационных систем применительно к системному администрированию. Дается взгляд Ed Wilson на проблемы эксплуатационщиков, указывается направление снижения расходов обслуживания инфраструктуры.

Solving administrative challenges

Спросите любого администратора Windows о его проблемах, и в верхней части списка будет большое количество работы и постоянная нехватка времени чтобы сделать ее. Они знают о средствах автоматизации, возможно даже осведомлены о возможностях WMI и Powershell, но у них нет времени чтобы освоить эти технологии. Это позорная ситуация, потому что принято считать, что до 70% бюджета ИТ организации расходуется на то «чтобы все было в рабочем состоянии» (прим переводчика: в оригинале “keep the lights on.”). Автоматизация может сократить расходы из этих 70%, за счет чего освободятся время и деньги для задач дальше по списку «проблем».

Кроме того, возможно, что они интересовались WMI или Powershell и пришли к выводу, что эти инструменты слишком сложны для освоения. Это понятно, особенно учитывая трудоемкость работы с WMI через VBScript, а также отсутствие примеров, которые объясняли бы используемые приемы. Даже меня повергают в ужас некоторые примеры скриптов Powershell размещенные в интернете, что же чувствуют те, кто только начали разбираться с этой темой. Администраторы, отказавшись от использования этих инструментов упускают возможности уменьшить свою рабочую нагрузку, упускаю возможность провести автоматизацию своих процессов.

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

Вместе PowerShell и WMI предоставляют набор проверенных методов, которые позволят вам управлять вашей системой легко и быстро. Вы сможете автоматизировать многие стандартные задачи, которые в настоящее время потребляют слишком много вашего внимания.

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

  • Увеличение количество систем
  • Повышающаяся сложности инфраструктуры
  • Растущая скорость изменений

Во второй части главы я покажу, почему PowerShell и WMI обеспечивают большой набор инструментов для решения этих проблем. Получение отдачи от PowerShell предполагает незначительных первоначальных затрат времени на его изучение, особенно при использовании WMI. Изучив язык и автоматизировав ваши ежедневные процессы вы сможете достичь отличной отдачи от затрат времени на процесс обучения.

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

Давайте начнем с рассмотрения обязанностей современного администратора Windows и проблем с которыми он сталкивается.

1.1 Административные задачи

Администраторы — очень занятые люди. Они, кажется, постоянно должны сделать все больше с меньшим количеством ресурсов. На рисунке 1.1 слева мы видим график снижение стоимости, аппаратного обеспечения. Я, например, недавно приобрел ноутбук с 4х ядерным процессором (HyperThreading позволяет увидеть восемь ядер) и с 16 Гб оперативной памяти, я собираюсь использовать его как свою мобильную лабораторию. Так вот, несколько лет назад, машина с этими параметрами была в среднем сегменте серверов, а не ноутбуков!

image

То же самое верно для серверов с 4, 8, или даже 10ти ядерными процессорами. В компьютеры можно установить все больше относительно дешевой памяти. Это означает, что все большее число компаний может себе позволить запуск приложений и бизнес-процессов, которые ранее использовались только крупными корпорациями с огромными ИТ бюджетами.

Удешевление мощности аппаратуры приводит к двум другим графикам, они отражают крутой рост сложности инфраструктуры и еще быстрее рост административных расходов на поддержание ее в рабочем состоянии. Постоянное усложнение инфраструктуры и рост затрат на нее, является на данный момент основной проблемой ИТ департаментов.

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

1.1.1. Слишком много машин
Действительно ли вам нужен каждый сервер что вы создали? Многие, если не большинство организаций имеют слишком много серверов. Это происходит по ряду причин:

  • Снижение стоимости аппаратной мощности – это приводит к тому что при высокой загрузке проще докупить новый сервер чем искать как оптимизировать имеющиеся.
  • Самостоятельные закупы отделов или закупки под проекты – этот происходит из за вопросов принадлежности сервера, департаменты или «проектники» не хотят чтобы на их серверах кто-то «сидел». Они не желают предоставлять другим свои ресурсы.
  • «Одно приложение – один сервер» — разделение приложений так чтобы проблема в одного не влияла на другого, это правило все еще может действовать для критически важных бизнес-приложений, но это не обязательно для второго или третьего эшелона приложений. И безусловно, это не нужно для целей тестирования и обучения.
  • Медленная реакция или ригидность ИТ отделов – отсутствие контроля и запущенность процессов в ИТ департаменте приводит к разброду в проектах и беспорядочному изменению систем.

Нагрузка на системного администратора растет быстрее, чем темпы роста мощности машин из-за времени, которое ему нужно затрачивать на переключение внимания между машинами (обычно требуется сделать новое удаленное подключение), дополнительная сложность каждой машины и ее приложений приносятся в жизнь системного администратора.
Виртуализация идущая полным ходом тоже вносит свое. Есть несколько преимуществ виртуализации:

  • Сокращается число физических серверов
  • Снижается требование к ЦОД организаций, в том числе из за пространства, электроэнергии и затрат на кондиционирование
  • Более точное используются мощности физических активов, что ведет к большей отдачи инвестиций

Организация в целом получает выгоду от виртуализации, но нагрузки администратора увеличивается. Если у было 100 серверов до виртуализации, и вы устанавили вместо них 4 физических хоста и завиртуалили на них 100 серверов, то у вас получится 104 системы которыми нужно управлять. Кроме того что их стало на 4 больше, сложность увеличится из-за того что платформа виртуализации может ввести другую операционную систему в инфраструктуру или добавить новые инструменты. Увеличение общего количества (физических плюс виртуальных) систем, также означает, что возрастает вероятность происшествий, во время эволюции инфраструктуры.

1.1.2 слишком много изменений

Изменение можно рассматривать как худшую головную боль администратора. К сожалению среды не статичны, изменения происходят всегда:

  • Операционная система и приложения получают регулярно патчи
  • Выходят новые версии программ
  • Пространство хранения нуждается в перенастройке для соответствия меняющимся типовым задачам пользователей.
  • Типовые сценарии работы приложений требуют изменений аппаратной части или аппаратной модернизации.
  • Виртуализация и другие прорывные технологии изменяют экосистему и создают новые возможности и конфигурации.

Эти проблемы накладываются на десятки, сотни или даже тысячи машин, накладываются на ежедневную активность, такую как мониторинг и резервное копирование.
Эта ситуация не может продолжаться бесконечно. Компании не могут смягчать постоянно растущие расходы на администрирование, сегодняшние экономические реалии запрещают использовать альтернативные механизмы такие как бесконечное увеличение доходов чтобы не замечать рост расходов ИТ отделов. Ситуация должна быть решена за счет сокращения расходов на эксплуатацию, но администраторы не могут сделать это из-за того, что множество изменений приносят новые и новые технологии не снижающие нагрузку и так происходит бесконечно.

1.1.3 Растущая сложность

Сложность — реальная проблема. Она возникает из-за ряда причин:

  • Несколько операционных систем несут различные наборы инструментов и терминологию, разница есть даже между двумя версиями Windows.
  • Различные типы приложений, таких как базы данных, электронная почта, службы каталогов Active Directory, и веб-приложения, требуют различных навыков, различных инструментов, имеют разные требования и создают разную нагрузку на сервера.
  • Многие машины выполняют одинаковые или схожие роли, но незаметные особенности в их реализации, недокументированные возможности увеличивают вероятность ошибки и делают структуру сложнее.

Сложность также нарастает из-за неполноты знаний и навыков самих администраторов. Слишком часто проект вводит новую технологию и от системных администраторов ожидается что они сразу же подхватят и начнут управлять системой. У них есть необходимые навыки? Есть ли у них время, чтобы изучить тонкости привносимой технологии? К сожалению, ответ на оба вопроса часто отрицательный.
Администратор в такой ситуации примет единственно верное решение – он начнет делать так как умеет. Иногда, если новая технология является изменением версии от чего-то уже, администратор продолжит использовать старые методы, даже если в новой версии появился намного лучший способ выполнить задание.

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

1.2 Автоматизация – путь для прорыва вперед

Решением для преодоления этих проблем является автоматизация рутинных операций (прим переводчика: я бы назвал это программные роботы. С английского можно перевести и так и так. Суть в том что мы имеем много разных инструментальных интерфейсов и систему регистрации событий в системе, с помощью одного но мощного движка управления мы можем связать их воедино и наделать программных роботов выполняющих в системе работу. Они будут поднимать коннекты, следить за загрузкой, делать базовый ремонт и обслуживание и т.п., таким образом автоматика в том виде как она рассматривается здесь, становится частью инфраструктуры наряду с железом и софтом. И она может также эволюционировать. Это больше не набор отдельных сценариев действий, не запрограммированая последовательность выполняемая по расписанию, это автоматическая реакция на события конкретно этой инфраструктуры). Поручить машине делать простую, повторяющуюся работу это то ради чего мы делали их!

Автоматизация понимается по разному. В иерархии автоматизации выстроены разные уроврни автоматизации.

image

Чтобы перейт на уровень выше по этой иерархии нужно ответить на вопрос – «будет ли польза от перехода на более сложный уровень?». (прим переводчика работа в PowerShell часто проще чем парсинг в командной строке. Поэтому сложность на самом деле не увеличится) Я знаю целый ряд организаций, которым хватает возможностей стандартного инструментарий Windows и несколько инструментов массовой рассылки команд (прим. переводчика: можно перевести как «инструменты массового редактирования». Ориг: «a few bulk-editing tools»). Другие пытаются максимально использовать планировщик зада или даже создают автоматизированные ответы на события. Автоматизация для большинства организаций представляет из себя смесь инструментов командной строки, сценариев, и задач в планировщике.

Следующий вопрос — «Как мы можем автоматизировать мои административные задачи?». PowerShell предоставляет набор инструментов командной строки (называемых «командлеты») которые можно использовать интерактивно вводя в консоль. По мере того как сложность решаемых задач становится больше и амбициознее, происходит появление скриптов. В PowerShell вы можете использовать одни команды, одно написание и один стиль для командной строки и при написании сценариев.

PowerShell прекрасный инструмент (Да, я фанат PowerShell). При необходимости вы можете легко перейти на следующий уровень сложности, и так далее, а WMI будет на самом верху этой лестнцы. (прим переводчика. Richard Siddaway в книге «powershell in depth» написал «если вы не используете WMI в связке с powershell то теряете да 60% мощности»). WMI откроет Вам доступ к стандартному набору инструментария управления системой, которую вы сможете использовать локально или на удаленной машине, потенциально вы сможете работать даже с не Windows системами (прим. Переводчика Имеется в ввиду использование CIM). Сценарии могут быть запущены интерактивно или могут быть запланированы на время. Но прежде чем мы углубимся в подробности нам нужно осмотреть автоматизацию в целом.

В этой книге, мы будем концентрироваться на сценариях как основном средстве автоматизации. Конечно, вы могли бы сделать много из командной строки подключаясь к удаленным машинам. Однако, преимущество сценариев в том что вы можете использовать код повторно, каждый раз экономя время на написание и отладку кода. Эта тема подробно рассматривается в главе 4 книги «PowerShell in practice» издательства Manning 2010. Запланированные задачи и «автоматические реакции на события» слишком сильно зависят от вашей конкретной инфраструктуры, в главе 3 мы начнем рассматривать как вы можете сделать автоматические ответы на события происходящие в вашей системе.

Давайте рассмотрим пример. Предположим вам нужно определить количество свободного пространства на диске С нескольких машин в вашей среде. Один из способов это прийти в ЦОД, подключится к каждой машине по очереди и посмотреть свободное пространство диска С. Записать ответ и повторить для следующей машины.
Немного проще вариант – использовать RDP для подключения к каждой машине и вручную сгружать информацию. Таким образом вы не будете выходить из за своего стола. Но вы по прежнему должны сделать очень много маленьких действий, вы по прежнему теряете слишком много времени.
И решение которое мне нравится – использовать для этой цели PowerShell, код приведен в листинге 1.1. Не волнуйтесь если вы прямо сейчас не понимаете его. Мы вернемся к этому сценарию в главе 6 когда будем рассматривать как управлять дисковой подсистемой.

Стандарт написания сценариев

Техники применяемы в этой книге для работы с серверами могут быть применены для работы с клиентскими машинами.

PowerShell команды (командлеты и функции) могут иметь сокращения, известные как алиасы. Я обычно не использую алиасы в сценариях, т.к. хочу чтобы мои скрипты было легко читать, понимать спустя время. Также будет использоваться полное название параметров командлетов.

Существует одно исключение из этого правила для некоторых командлетов:

  • Вместо Where-Object используется алиас where, но никогда не используется сокращение ?
  • Вместо ForEach-Object используется алиас foreach, но никогда сокращение %
  • Вместо Select-Object используется алиас select
  • Вместо Sort-Object используется алиас sort

В ходе дискуссии я всегда использую полное имя командлета.

Я принял эту конвенцию по целому ряду причин:

  • По совету команды PowerShell.
  • Потому что она представляет собой общепринятую практику и использование.
  • Потому что это читаемо.
  • Это экономит немного места на странице.

Пример начинается со списка имен компьютер моей лаборатории. Этот список передается по конвееру в командлет ForEach-Object (foreach) который вызывает Get-WmiObject для каждого сервера из списка с запросом данных о логическом диске С. Затем полученная информация форматируется и выводится в виде таблицы

Листинг 1.1 Определить свободное место на диске:

"dc02", "W08R2CS01", "W08R2CS02", "W08R2SQL08", "W08R2SQL08A", "WSS08" | foreach {
Get-WmiObject -Class Win32_LogicalDisk -ComputerName $_ -Filter "DeviceId='C:'" } |
Format-Table SystemName, @{Name="Free"; Expression={[math]::round($($_.FreeSpace/1GB), 2)}} -auto 

Свободное пространство пересчитывается из байтов в гигабайты, чтобы сделать результаты более понятными. Обратите внимание что PowerShell понимает сокращение GB, а также KB, MB, TB и PB.

Результат работы скрипта выглядит следующим образом:

SystemName Free
---------- ----
W08R2CS01 119.04
W08R2CS02 118.65
W08R2SQL08 114.8
W08R2SQL08A 115.17
WSS08 111.41
DC02 118.53

Примечание. Я не буду показывать вам вывод работы каждого сценария. Но иногда буду показывать когда нужно для понимания конкретного вопроса.

Ряд усовершенствований можно внести в этот сценарий:

  • Поместить имена компьютеров в CSV файл (как мы будем делать в листинге 1.4)
  • Добавить результат работы в Excel, или базу данных чтобы можно было видеть тенденцию изменения места на диске
  • Запланировать выполнение задачи в планировщике

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

Мне понадобилось всего несколько минут чтобы написать его и я экономлю время когда я запускаю его снова и снова. Именно таким способом PowerShell помогает сэкономить время. Jeffrey Snover, архитектор PowerShell написал — «Я твердо верю, что экономика определяет, что люди делают и что они не делают. PowerShell разработан с нуля, чтобы быть расширяемой, высоко уровневой, задаче ориентированной абстракцией, удешевляющей расходы на администрирование и поддержку.» Полный текст его статьи, (тут уже переведено) «Семантический разрыв» [1] доступен на странице Windows Powershell blog по адресу blogs.msdn.com/b/powershell [2] сделайте поиск по слову «semantic gap» и вы натолкнетесь на эту статью.

прим переводчика здесь мной пропущено несколько разделов

1.3.3 Сломать кривую роста

На рисунке 1.1. мы видели, непрерывный рост сложности организации и затрат на администрирование. Это непрерывное увеличение сложности и расходов рано или поздно приведет к потере баланса и остановке роста из-за расходов на управление, нужен способ чтобы сломать этот рост.

PowerShell может помочь остановить рост расходов, обеспечивая следующее:

  • предоставляет набор инструментов интерактивной работы с сервером и приложениями
  • Работает во всех системах Windows (прим переводчика: в оригинале применено слово estate точный перевод – поместья, владения. Подразумевается, что это core технология Microsoft и все системы так или иначе имеют командлеты)
  • Предоставляет один универсальный подход работы с разными системами (прим переводчика: все командлеты однообразы, не нужно изучать список ключей консольной утилиты)
  • Встроенные возможности удаленного управления
  • Встроенные возможности для дальнейшего усложнения автоматизации

PowerShell методы повышающие производительность и эффективность. А с помощью PowerShell и WMI вы можете рассчитывать на дальнейшие повышения вашего роста контроля над системой.

P/S/ Итог: если ваша инфраструктура стоит перед лицом все большего усложнения, то стоит задуматься о переходе на новый уровень автоматизации. Я много слышу от друзей о усложнении инфраструктуры, постоянное давление от маркетинговых отделов, постоянное изменение систем. Лично я такое давление ощущаю, сейчас ищу способ создать автоматических ботов для админских задач.

Автор: pak-nikolai

Источник [3]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/powershell/123223

Ссылки в тексте:

[1] (тут уже переведено) «Семантический разрыв»: https://habrahabr.ru/post/301834/

[2] blogs.msdn.com/b/powershell: http://blogs.msdn.com/b/powershell/

[3] Источник: https://habrahabr.ru/post/301242/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best