Атоматизация адміністрування систем, огляд проблем і варіант рішення. З книги «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 за адресою blogs.msdn.com/b/powershell зробіть пошук за словом «semantic gap» і ви натрапите на цю статтю.

У другій частині книги ви знайдете безліч прикладів практичного застосування цього концепту в дії, але зараз давайте розглянемо PowerShell детальніше і обговоримо чому це ідеальна платформа для автоматизації.

прим перекладача тут мною пропущено кілька розділів


1.3.3 Зламати криву зростання
На малюнку 1.1. ми бачили, що є безперервного зростання складності організації і вартість адміністрування. Це безперервне збільшення вартості адміністрування рано чи пізно призведе до втрати балансу і зупинки зростання організації із-за витрат на адміністрування, нам потрібен спосіб, щоб зламати зростання кривої.

PowerShell може допомогти розірвати цю криву, забезпечуючи наступне:
  • Набір інструментів для інтерактивного адміністрування серверів і додатків
  • двигун автоматизації, яка працює у всіх станах Windows (примітка перекладача: в оригіналі застосовано слово estate точний переклад – маєтки, володіння. Мається на увазі, що це core технологія Microsoft і всі системи так чи інакше мають командлети (навіть Symantec BackupExec і Veeam випускають свої командлети))
  • здатність застосовувати універсальний підхід і методи до великого числа систем і додатків (прим перекладача: вам не потрібно вивчати список команд консольної утиліти, всі командлети одноманітні)
  • движок віддаленого дозволяє керувати безліччю машин однією командою
  • асинхронні і заплановані завдання для подальшого підвищення автоматизації
PowerShell пропонує підвищення продуктивності та ефективності, що дозволяє легко погасити час, витрачений на навчання покращеної технології. А з допомогою PowerShell і WMI ви можете розраховувати на подальші підвищення вашого росту продуктивності.

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

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.