Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.



25.10.2019

Skalowalna infrastruktura

Red Hat OpenStack Platform 15
25.10.2019

Cienki klient 2.0

Windows Virtual Desktop
25.10.2019

Nowy sprzęt Microsoftu

Rodzina Surface się powiększa
24.10.2019

Serwery ARM

Oracle stawia na Ampere Computing
24.10.2019

Wszechstronny i elegancki

Dell XPS 15
10.10.2019

CYBERSEC EXPO - największe w...

Bezpieczeństwo cyfrowe nie jest problemem dotyczącym jedynie działów IT. Obecnie stanowi...
30.09.2019

Nowości w wirtualizacji

VMware World 2019
30.09.2019

Bezpieczeństwo mobile-first

Android 10

PowerShell Desired State Configuration

Data publikacji: 26-09-2019 Autor: Bartosz Bielawski
Zmiana konfiguracji systemu z...

PowerShell Desired State Configuration (DSC) to połączenie dwóch elementów. Przede wszystkim jest to platforma, dzięki której można określać stan systemu, wykorzystując do tego zasoby w większości napisane w PowerShellu. Z drugiej strony oferuje on tworzenie konfiguracji, które łączą zasoby w większą całość, dając kompletny obraz stanu, w jakim powinien znajdować się zarządzany przez nas system. Jednak tworzenie konfiguracji nie musi być przeprowadzone w ramach DSC.

 

Większość narzędzi wykorzystywanych do zarządzania konfiguracją systemów wspiera DSC jako platformę. W czwartej części cyklu przyjrzymy się temu, jak to wsparcie wygląda, czego od nas wymaga i jak wielką swobodę przy tworzeniu definicji systemu będą nam one oferować. Przyjrzymy się najpopularniejszym narzędziom: Chef, Puppet oraz Ansible. W żadnym z tych przypadków nie będziemy skupiać się na tym, jak wygląda składnia wykorzystywana w plikach konfiguracyjnych dla każdego z narzędzi. Zamiast tego przyjrzymy się przykładom zastosowania w ramach tej składni zasobów wspierających PowerShell DSC, ze szczególnym uwzględnieniem tego, jak instalować i wykorzystywać za pomocą tych rozwiązań własne zasoby. W rezultacie będziemy wykorzystywać zasoby tworzone w poprzednich częściach tego cyklu.

> CHEF – WYKORZYSTANIE DSC_SCRIPT

Pierwszym narzędziem, które oficjalnie wspierało PowerShell DSC, był Chef. Wsparcie pojawiło się niemal jednocześnie z premierą samego DSC: wraz z prezentującymi tę technologię przedstawicielami Microsoftu (Jeffrey Snover oraz Kenneth Hansen) w czasie TechEd North America 2013 pojawił się przedstawiciel Opscode (ówczesna nazwa firmy Chef) i demonstrował, jak z DSC korzystać w ramach ich produktu. Podobnie jak samo DSC wsparcie ze strony Chefa ewoluowało. Obecnie DSC możemy używać na jeden z dwóch sposobów.

Przede wszystkim możemy skorzystać ze współpracującego zarówno z nowszymi, jak i ze starszymi platformami zasobu dsc_script. Jedyny wymóg dotyczy konfiguracji Local Configuration Manager (LCM): właściwość RefreshMode musi być ustawiona na Push. Możemy więc użyć tego rozwiązania wszędzie tam, gdzie z różnych względów skazani jesteśmy na PowerShella w wersji 4.

Składnia tego zasobu jest następująca:

dsc_script 'name' do code String
command String
configuration_data String
configuration_data_script String
configuration_name String
cwd String
environment Hash
flags Hash
imports Array
timeout Integer
action Symbol # domyślnie :run
end

Wykorzystując zasoby DSC za pomocą tego zasobu, musimy przede wszystkim wybrać, czy chcemy zastosować kod podany bezpośrednio (za pomocą właściwości code), czy chcemy użyć uprzednio przygotowanego skryptu (za pomocą właściwości command).

Przykładowo jeśli chcielibyśmy za pomocą dsc_script z właściwością code stworzyć zmienną środowiskową mojaZmienna o wartości mojaWartosc, to możemy skorzystać z następującego kodu:

dsc_script 'test' do  code <<-EOH
Environment mojaZmienna {
Name = 'mojaZmienna'
Value = 'mojaWartosc'
}
EOH
end

Dla odmiany jeśli chcielibyśmy kod DSC tworzyć w PowerShellu i jedynie uruchamiać za pomocą Chefa, to musielibyśmy w pierwszej kolejności zastosować odpowiedni skrypt:

configuration mojaZmienna {
Environment mojaZmienna {
Name = 'mojaZmienna'
Value = 'mojaWartosc'
}
}

Zakładając, że skrypt będzie zapisany w pliku c:dsc_scriptsmojaZmienna.ps1, nasz przepis na jego uruchomienie w ramach Chefa wyglądałby następująco:

 



Warto wspomnieć, że jeśli plik będzie zawierać więcej niż jedną konfigurację, to będziemy mogli skorzystać z parametru configuration_name, który pozwoli nam doprecyzować, która konkretnie konfiguracja powinna być zastosowana.

Przykładowy skrypt zawierający więcej niż jedną konfigurację:

configuration stara {
Environment test {
Name = 'test'
Value = 'test'
}
}
configuration nowa {
Environment produkcja {
Name = 'produkcyjny'
Value = 'POC'
}
}

Przepis wykorzystujący jedynie nową konfigurację:

dsc_script 'Prod' do  configuration_name 'nowa'
command 'C:dsc_scriptsdwieKonfiguracje.ps1'
end

W przypadku DSC oprócz samego skryptu często też korzystamy z danych konfiguracji (ConfigurationData). Znów możemy przekazać dane bezpośrednio za pomocą właściwości configuration_data:

configuration_data <<-EOH
@{
AllNodes = @(
NodeName = 'localhost'
PSDscAllowPlainTextPassword = $true
)
}
EOH

Alternatywnie, tak jak to miało miejsce w przypadku polecenia, możemy najpierw stworzyć plik zawierający interesujące nas dane:

@{
AllNodes = @(
NodeName = 'localhost'
PSDscAllowPlainTextPassword = $true
)
}

Następnie możemy skorzystać z właściwości configuration_data_script, przekazując do niej ścieżkę do stworzonego przez nas pliku:

 


 

[...]

 

Autor zawodowo zajmuje się informatyką. Jest Microsoft MVP w dziedzinie PowerShella, blogerem oraz jednym z moderatorów forum dotyczącego skryptów w serwisie TechNet. Autor książki „Windows PowerShell 5.1 Biblia”. 

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2019 Presscom / Miesięcznik "IT Professional"