Od jakiegoś czasu szarpała mną nostalgia, poczułem potrzebę powrotu do korzeni… Odmówiłem sexu kobiecie, założyłem perukę długimi włosami, glany, porwane jeansy i odpaliłem „Nothing Else Matters” Metaliki. Po kilku godzinach w pokoju zawisł delikatny, lekko słodkawy aromat walki z systemem – ekstatyczna mieszanka potu, alkoholu i dziewictwa. Atmosfera wprost idealna do rzeźbienia w konsoli.

Zawsze kiedy nachodziło mnie to uczucie, które zwę – „back to the roots, dża mon!” instaluje sobie pierwszego z brzegu Slackware’a i biczuje się rekompilując pakiety, zmieniając kernela itp. Po kilku godzinach tej terapii, rodem z laboratorium dr. Mengele zawsze mam dość konsoli przez kolejne pół roku. Tym razem jednak odrzuciłem średniowieczne metody i zainstalowałem sobie PowerCLI. Stwierdziłem bowiem, że przy okazji samobiczowania zautomatyzuje trochę zadania które zawsze doprowadzały mnie do furii.

Czego potrzebujemy do rozpoczęcia słodkiej przygody z PowerCLI? Otóż na pewno samego PowerCLI, polecam w wersji 5.0, PowerShella do Windows’a, oraz PowerGUI które jest bardzo przyjemnym edytorem skryptów z auto uzupełnianiem składni (jak sie zainstaluje VMware.VIToolkit.powerpack). Ok po instalacji tego wszystkiego odpalamy sobie power shella i wykonujemy komendę:

Set-ExecutionPolicy RemoteSigned

Dzięki której będziemy mogli wywoływać nasze skrypty. Jest to zabezpieczenie przez wykonywaniem niepodpisanych programów. Jest ono dosyć uciążliwe, wiec warto je wyłączyć, przynajmniej na początku. Bardzo pomocny przy programowaniu w PowerCLI jest stworzony przez społeczność VMware plakat zawierający wszelkie komendy:

Tak więc moje pierwsze kroki podążyły do tego jak się w ogóle do ESX’a/vCenter podłączyć. Sprawa jest prosta robi się to jedną komendą:

Connect-VIServer -Server [ip-naszego-serwera] -User [login] -Password [haslo]

Po tym dostajemy dostęp do naszego ESX’a i możemy robić rożne cuda, o których za chwilę. Teraz zajmijmy się pimpowaniem tego superskryptu. Dorzućmy zmienne z loginem i hasłem:

$user=”root”;
$pass=”cmentarnapolka”

Connect-VIServer -Server [ip-naszego-serwera] -User $user -Password $pass

Teraz jest zdecydowanie bardziej profesjonalnie. Mamy zmienne i poczucie że to już jest poważny program. Jednak, nie robi on za dużo. Jego działanie to tylko podłączenie do ESX/vCenter i nic poza tym. Dorzućmy zatem trochę szaleństwa! Wypiszmy maszyny wirtualne… ach, to takie ekscytujące, już nie mogę się doczekać 😉

$user=”root”;
$pass=”cmentarnapolka”

Connect-VIServer -Server [ip-naszego-serwera] -User $user -Password $pass
Get-VM

Hell yeaa! Nasz skrypt to potęga, jednak mam wrażenie że nie zrewolucjonizował on mojego życia. Najwyższy czas zachować się jak kobieta i mimo, że wszytko jest w jak najlepszym porządku stworzyć jakiś abstrakcyjny problem. Tak więc przyjmijmy, że musimy wyłączyć wszytkie maszyny wirtualne które są w stanie „Suspended”. Są ich setki i klikanie na każdą by ją włączyć a potem wyłączyć jest po prostu upiornie, obrzydliwie nudne. Tak wiec trzeba by przede wszystkim dowiedzieć się jak wy listować wszystkie VM w stanie „Suspended”. Otóż robimy to modyfikując, lub jak kto woli dopisując do komendy Get-VM kilka parametrów:

Get-VM | Where-Object {$_.PowerState -eq „Suspended”}

Dzięki tej modyfikacji możemy z listy Get-VM wyłuskać wszystkie VM których paramter $_.PowerState jest -eq (równy) Suspended. Oczywiście możemy to dowolnie modyfikować, np na „Power Off”, „Power On” itp. aby uzyskać interesującą nas listę. Dobrze, mamy już listę maszyn które są uśpione. Tak wiec należało by je odpalić a potem wyłączyć. Trzeba tak zrobić gdyż nie można wyłączyć maszyny która jest uśpiona. Tak wiec rodzi się pytanie jak włączyć wszystkie uśpione maszyny. Służy do tego komenda Start-VM, czyli:

Start-VM | Get-VM | Where-Object {$_.PowerState -eq „Suspended”}

Tylko pytanie co żeśmy teraz uczynili? Odpaliliśmy wszystkie VM które były w stanie uśpienia i teraz nie będzmiemy w stanie ich połapać o wyłączyć. Tak wiec najprościej będzie przekazać wynik polecenia  „Get-VM | Where-Object {$_.PowerState -eq „Suspended”}” do zmiennej i użyć jej do uruchomienia VM a następnie do ich zgaszenia. Tak więc pozwoli to na stowrzyć prosty, kompletny skrypt który rozwiąże nasz problem:

$user=”root”;
$pass=”cmentarnapolka”

Connect-VIServer -Server [ip-naszego-serwera] -User $user -Password $pass
$susvm = Get-VM | Where-Object {$_.PowerState -eq „Suspended”}
Start-VM $susvm
Stop-VM $susvm

Tak więc pierwsze kroki za nami. Nie jest to może skrypt z którego można być dumnym, ale początki zawsze są mało epickie. Podejrzewam że PowerCLI będzie powracać w następnych artykułach. Dlatego, że po pierwsze było to zdecydowanie przyjemniejsze doświadczenie niż rekompilacja połowy Slackware. Po drugie PowerCLI jest potężnym narzędziem które może zautomatyzować wiele uciążliwych dla nas prac, dając tym samym więcej czasu na czerpanie radości z życia… a o to przecież właśnie chodzi.

About the author

Bloger i niezależny konsultant z wieloletnim doświadczeniem w branży IT. Specjalizujący się w wirtualizacji i cloud computingu. Posiada tytuły MCP, MCTS, VCP oraz VMware vExpert.
1 Response

Leave a Reply