...

суббота, 28 мая 2016 г.

[Перевод] Атоматизация администрирования систем, обзор проблем и вариант решения. Из книги «PowerShell and WMI»

Ниже перевод части главы 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 легко и быстро. Вы сможете автоматизировать многие стандартные задачи, которые в настоящее время потребляют слишком много вашего внимания, освобождая время, чтобы сделать больше интересные вещи, которые в противном случае не могли быть сделаны в ваш обычный рабочий день.

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

  • Количество систем
  • Повышение сложности инфраструктуры
  • Скорость изменения

Вторая часть главы показывает, почему PowerShell и WMI обеспечивают большой набор инструментов для решения этих проблем. Получение большего от 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 системы которыми нужно управлять. Сложность может резко увеличиться, из за того что платформа виртуализации может ввести другую операционную систему в инфраструктуру. Увеличение общего количества (физических плюс виртуальных) систем, также означает, что возрастает вероятность происшествий, во время эволюции инфраструктуры.

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

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

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

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

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

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

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

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

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

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

PowerShell сам по себе прекрасный инструментом (Да, я фанат PowerShell) (прим. Переводчика Ed Wilson входит в состав команды Scripting Guys, автор книг о PowerShell, автор множества статей по PowerShell). При необходимости вы можете перейти на следующий уровень сложности, и WMI будет на самом верху. (прим переводчика. По словам Richard Siddaway (глава английского сообщества powershell) приведенным в книге «powershell in practice», если вы не используете WMI совместно с powershell то теряете около 60% мощности. Как это посчитано не знаю). Это открывает Вам доступ к стандартному набору инструментария управления системой, которую вы можете использовать на локальной и удаленной машине, потенциально включающую не 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 разработан с нуля, чтобы быть расширяемой, высоко уровневой, задаче ориентированной абстракцией, удешевляющей расходы на задачи администрирования и поддержки.» (прим переводчика. Оригинал: «I firmly believe that economics determine what people do and don’t do so PowerShell is designed from the ground up to make composable, high-level task oriented abstractions be the cheapest things to produce and support») Полный текст его статьи, «Семантический разрыв» («The Semantic Gap») доступен на странице Windows Powershell blog по адресу http://ift.tt/1vzuvOQ сделайте поиск по слову «semantic gap» и вы натолкнетесь на эту статью.

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

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

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

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

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

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

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

Комментарии (0)

    Let's block ads! (Why?)

    Комментариев нет:

    Отправить комментарий