Zautomatyzuj hybrydowy serwer Exchange na platformie Azure

Serwer hybrydowy Exchange

Wiele organizacji przeprowadziło migrację wszystkich skrzynek pocztowych programu Exchange do usługi Exchange Online, ale nie są gotowe na pozbycie się usługi Active Directory. Ponieważ zarządzanie adresatami nadal odbywa się lokalnie, do zarządzania właściwościami i obiektami programu Exchange w usłudze Active Directory potrzebny jest serwer Exchange.

Uruchamianie serwera Exchange na platformie Azure nie jest niezwykle trudne. Po wdrożeniu zasobów instalacja i konfiguracja serwera Exchange przebiega niemal identyczną ścieżką, jak w przypadku dowolnej platformy wirtualizacji. Wyzwanie polega na tym, że platforma Azure jest subskrypcją opartą na zużyciu, a program Exchange lubi zużywać zasoby, co oznacza, że ​​koszty szybko rosną!

Oferty PaaS, takie jak konta automatyzacji, funkcje bezserwerowe i aplikacje logiki, ułatwiają obecnie automatyzację. Czy automatyzacja może rozwiązać problem kosztów? Ten artykuł przedstawia kilka różnych opcji, zaczynając od podstaw i przechodząc do czegoś bardziej szytego na miarę. Ale zanim utkniemy w sedno sprawy, zastanówmy się, co chcemy osiągnąć.

Oszczędność kosztów dzięki automatyzacji Exchange Hybrid Server

Automatyzacja może wyłączyć zasoby obliczeniowe, gdy nie są one potrzebne. Rysunek 1 przedstawia różnicę w kosztach uruchomienia typowej maszyny wirtualnej Exchange Hybrid Server na platformie Azure w trzech różnych scenariuszach:

24/7 – brak automatyzacji; pozostawić maszynę wirtualną włączoną przez cały czasGodziny pracy — online 8 godzin dziennie, 5 dni w tygodniu Konserwacja cotygodniowa — online 4 godziny w tygodniu, aby umożliwić konserwację.

Opcja 1 – Start/Stop automatyzacji

Zacznijmy od podstawowego podejścia. Zacznij od otwarcia wstępnie zapakowanego rozwiązania firmy Microsoft Start/Stop VMs v2 w portalu Azure Marketplace. Kliknij Tworzyć i wypełnij pola, a następnie kliknij Przejrzyj + utwórz i wtedy Tworzyć.

zautomatyzuj wymianę hybrydowego serwera

Udaj się do określonej grupy zasobów, w której rozwiązanie utworzyło kilka nowych zasobów. Logic Apps działają jako wyzwalacze i są nazwane zgodnie z typem wyzwalacza i akcją. Musimy skonfigurować odpowiednie Logic Apps z harmonogramem ukierunkowanym na maszynę wirtualną Exchange Hybrid Server (Rysunek 3:)

zautomatyzuj wymianę hybrydowego serwera

Otwórz nazwę aplikacji logiki ststv2_vms_Scheduled_start i przejdź do Projektant aplikacji logiki. Następnie rozwiń Wznowienie sekcji i skonfiguruj żądany harmonogram. Następnie rozwiń Funkcja-Wypróbuj oraz Zaplanowany Sekcja. Tutaj musimy zaktualizować Treść zapytania kierować maszynę wirtualną; będziemy potrzebować identyfikatora zasobu naszej maszyny wirtualnej, dostępnego na stronie Właściwości maszyny wirtualnej, a następnie musimy zmienić Zakresy żądań tak, że Treść zapytania pasuje do poniższych:

{ “Action”: “start”, “EnableClassic”: false, “RequestScopes”: { “VMLists”: [
“[VM Resource ID]” ]} }

{

“Akcja”: “start”,

„EnableClassic”: fałsz,

„Zakresy żądań”: {

“Listy VM”: [

      “[VM Resource ID]”

]

}

}

Treść żądania Projektanta aplikacji logiki.  zautomatyzuj wymianę hybrydowego serwera

Ratować Twoje zmiany, przełącz się na Przegląd strona i kliknij Włączyć.

Na koniec wróć do grupy zasobów i wprowadź te same zmiany w ststv2_vms_Scheduled_stop Aplikacja logiki. Tym razem upewnij się, że Treść zapytania używa stop Akcja:

{ “Action”: “stop”, “EnableClassic”: false, “RequestScopes”: { “VMLists”: [
“[VM Resource ID]” ]} }

{

„Akcja”: „stop”,

„EnableClassic”: fałsz,

„Zakresy żądań”: {

“Listy VM”: [

      “[VM Resource ID]”

]

}

}

Nie zapomnij Ratować Twoje zmiany, przełącz się na Przegląd strona i kliknij Włączyć.

Twoja automatyzacja jest teraz uruchomiona, a maszyna wirtualna Exchange Hybrid Server zostanie zamknięta i uruchomiona zgodnie z harmonogramem. Oczywiście w razie potrzeby zawsze możesz uruchomić maszynę wirtualną ręcznie w Azure Portal, przechodząc do strony Przegląd maszyny wirtualnej i klikając przycisk Początek przycisk.

Opcja 2 — Exchange Server Automation Runbook

Elementy Runbook automatyzacji Azure umożliwiają tworzenie procesów automatyzacji opartych na PowerShell lub Pythonie. Jest tu ogromny potencjał, na przykład używanie elementów Runbook do przetwarzania danych Exchange Online lub tworzenie plików w SharePoint Online. W tym scenariuszu używamy elementu runbook programu PowerShell do uruchamiania i zatrzymywania maszyny wirtualnej Exchange oraz do uruchamiania skryptów konserwacji na maszynie wirtualnej.

Korzystamy również z tożsamości zarządzanych platformy Azure, w szczególności tożsamości zarządzanej przypisanej do systemu; eliminuje to potrzebę przechowywania poświadczeń, a tożsamość utrzymuje współużytkowany cykl życia z zasobem. Rezultatem jest mniejszy wysiłek związany z zabezpieczeniem i utrzymaniem dostępu do zasobów.

Najpierw utwórzmy konto automatyzacji do hostowania elementu runbook. Przejdź do bloku kont automatyzacji i kliknij Tworzyć. Uzupełnij pola na Podstawy strona, kliknij Przejrzyj + Utwórzi kliknij Tworzyć.

Następnie utwórz konto magazynu. Przejdź do bloku Konta magazynu i kliknij Tworzyć. Uzupełnij pola na Podstawy strona, kliknij Przejrzyj + Utwórzi kliknij Tworzyć.

Następnym krokiem jest uporządkowanie tożsamości używanej podczas uruchamiania zasobów. Podczas tworzenia konta automatyzacji platforma Azure tworzy przypisaną do systemu tożsamość zarządzaną do reprezentowania konta. Musimy przyznać uprawnienia tożsamości do zasobów potrzebnych do automatycznego zarządzania Exchange.

Najpierw przejdź do wyboru maszyny wirtualnej Kontrola dostępu (IAM)następnie Dodać, Dodaj przypisanie roli. Wybierz Współtwórca maszyny wirtualnej rola i kliknięcie Następny. Wybierz Zarządzana tożsamośći dodaj swoje konto automatyzacji jako członka, kliknij Przejrzyj + przypisz.

Następnie przejdź do swojego konta magazynu wybierz Kontrola dostępu (IAM)następnie Dodać, Dodaj przypisanie roli. Wybierz Odczytujący dane obiektów blob pamięci rola i kliknięcie Następny. Wybierz Zarządzana tożsamośći dodaj swoje konto automatyzacji jako członka, kliknij Przejrzyj + przypisz.

Podsumowując, przypisaliśmy następujące uprawnienia do naszego konta automatyzacji:

Maszyna wirtualna: „Współautor maszyny wirtualnej” Konto pamięci: „Czytnik danych obiektów blob pamięci”

Teraz dodajmy nasz skrypt konserwacyjny do naszego magazynu. Przejdź do swojego konta magazynu i wybierz Konteneryutwórz nowy kontener o nazwie „skrypty” i ustaw poziom dostępu na Prywatny. Otworzyć skrypty kontenera i prześlij swój skrypt konserwacyjny. Ten skrypt zwraca nazwę komputera to dobry test:

Teraz stwórzmy nasz Runbook. Przejdź do swojego konta automatyzacji i wybierz RunbookiKliknij Utwórz element runbook. Nadaj mu nazwę „ExMaintenance”, ustaw typ na „PowerShell”, a wersję na „5.1”. Kliknij na Edytować przycisk i skopiuj poniższy kod:

Param(
[Parameter (Mandatory = $true)] [String] $VMName,

[Parameter (Mandatory = $true)] [String] $ResourceGroup,

[Parameter (Mandatory = $true)] [String] $StorageAccount,

[Parameter (Mandatory = $true)] [String] $StorageContainer,

[Parameter (Mandatory = $true)] [String] $Script ) try { “Logowanie do platformy Azure…” Connect-AzAccount -Identity “Uruchamianie $VMName” Start-AzVM -ResourceGroupName $ResourceGroup -Name $VMName “Sprawdzanie agenta maszyny wirtualnej” $VMNameStatus = Get-AzVM -ResourceGroupName $ResourceGroup -Name $VMName if ($VMNameStatus.OSProfile.WindowsConfiguration.ProvisionVMAgent -ne $true) { “Oczekiwanie, aż agent VM będzie gotowy” while ($VMNameStatus.OSProfile.WindowsConfiguration.ProvisionVMAgent -ne $true) { Start-Sleep -Sekundy 5 $VMNameStatus = Get-AzVM -ResourceGroupName $ResourceGroup -Name $VMName } } „Agent VM jest gotowy” „Pobieranie skryptu konserwacji z $StorageAccount” $StorageContext = Nowy-AzStorageContext -StorageAccountName $StorageAccount Get-AzStorageBlobContent -Blob $Script -Container StorageContainer -Destination ($Env:temp+”/ExMaintenance.ps1″) -Context $StorageContext “Uruchamianie skryptu konserwacji” $MaintenanceScriptOutput = Wywołanie-AzVMRunCommand -ResourceGroupName $ResourceGroup -VMName $VMName -CommandId ‘RunPowerShellScript$Env’-:Pateth mp+”/ExMaintenance.ps1″) „Wyjście skryptu konserwacji:” Write-Output $MaintenanceScriptOutput.Value[0].Message } catch { Write-Error -Message $_.Exception throw $_.Exception }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

Param(

[Parameter (Mandatory = $true)]

[String] $VMName,

[Parameter (Mandatory = $true)]

[String] $ResourceGroup,

[Parameter (Mandatory = $true)]

[String] $StorageAccount,

[Parameter (Mandatory = $true)]

[String] $StorageContainer,

[Parameter (Mandatory = $true)]

[String] $Skrypt

)

próbować {

„Logowanie się do platformy Azure…”

Connect-AzAccount-tożsamość

„Uruchamianie $VMName”

Start-AzVM -ResourceGroupName $ResourceGroup -Name $VMName

„Sprawdzanie agenta maszyny wirtualnej”

$VMNameStatus = Get-AzVM -ResourceGroupName $ResourceGroup -Name $VMName

if ($VMNameStatus.OSProfile.WindowsConfiguration.ProvisionVMAgent -ne $true) {

„Czekam, aż agent VM będzie gotowy”

while ($VMNameStatus.OSProfile.WindowsConfiguration.ProvisionVMAgent -ne $true) {

Start-Sleep -Sekundy 5

$VMNameStatus = Get-AzVM -ResourceGroupName $ResourceGroup -Name $VMName

}

}

„Agent maszyny wirtualnej jest gotowy”

“Pobieranie skryptu konserwacji z $StorageAccount”

$StorageContext = Nowy-AzStorageContext -StorageAccountName $StorageAccount

Get-AzStorageBlobContent-Blob $Script-Container $StorageContainer-Destination ($Env:temp+”/ExMaintenance.ps1″)-Context $StorageContext

„Uruchamianie skryptu konserwacyjnego”

$MaintenanceScriptOutput = Invoke-AzVMRunCommand -ResourceGroupName $ResourceGroup -VMName $VMName -CommandId ‘RunPowerShellScript’ -ScriptPath ($Env:temp+”/ExMaintenance.ps1″)

„Wyjście skryptu konserwacji:”

Zapis wyjściowy $MaintenanceScriptOutput.Value[0].Wiadomość

}

łapać {

Błąd zapisu — wiadomość $_. Wyjątek

wyrzuć $_.Wyjątek

}

    Połącz się z platformą Azure przy użyciu tożsamości zarządzanej dla konta automatyzacjiUruchom VMPobierz skrypt konserwacji z konta magazynuUruchom skrypt na VMZwróć dane wyjściowe skryptu

Kliknij Ratować oraz Publikować. Następnie naciśnij Początek wpisz parametry i sprawdź dane wyjściowe, aby upewnić się, że wszystko działa (Rysunek 5):

zautomatyzuj wymianę hybrydowego serwera

W tym momencie możesz przesłać skrypt na swoje konto magazynu, aby zrobić wszystko, czego potrzebujesz. Na przykład uruchom aktualizację systemu Windows, wygeneruj raport, wyślij e-mail itp.

Teraz zaplanuj Runbook. Przejdź do Harmonogramy strona i Dodaj harmonogram. Skonfiguruj harmonogram, kiedy chcesz uruchamiać maszynę wirtualną i jak często. Czyli raz dziennie lub raz w tygodniu o 8:00. Następnie skonfiguruj parametry elementu runbook, aby poinformować element runbook, który skrypt wysłać do której maszyny wirtualnej (rysunek 6):

Zautomatyzuj hybrydowy serwer Exchange na platformie Azure

Zwróć uwagę, że ponieważ skrypt jest określony jako parametr elementu runbook w harmonogramie, wiele harmonogramów może używać tego samego elementu runbook do uruchamiania różnych skryptów w różnym czasie.

Ostatnią rzeczą do zrobienia jest utworzenie kolejnego elementu runbook, aby zamknąć maszynę wirtualną. Wykonaj ten sam proces, co w przypadku pierwszego elementu Runbook, ale zamiast tego użyj następującego kodu:

Param(
[Parameter (Mandatory = $true)] [String] $VMName,

[Parameter (Mandatory = $true)] [String] $ ResourceGroup ) try { “Logowanie do platformy Azure…” Connect-AzAccount -Identity “Zamykanie $VMName” Stop-AzVM -ResourceGroupName $ResourceGroup -Name $VMName “Wysłano polecenie zamknięcia” } catch { Write-Error -Message $ _.Wyjątek rzuca $_.Wyjątek }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

Param(

[Parameter (Mandatory = $true)]

[String] $VMName,

[Parameter (Mandatory = $true)]

[String] $ResourceGroup

)

próbować {

„Logowanie się do platformy Azure…”

Connect-AzAccount-tożsamość

„Zamykanie $VMName”

Stop-AzVM -ResourceGroupName $ResourceGroup -Name $VMName

„Wysłano polecenie wyłączenia”

}

łapać {

Błąd zapisu — wiadomość $_. Wyjątek

wyrzuć $_.Wyjątek

}

Tym razem podczas konfigurowania harmonogramu skonfiguruj go tak, aby codziennie wyłączał maszynę wirtualną. W ten sposób, jeśli musisz ręcznie uruchomić maszynę wirtualną i zapomnisz ją później wyłączyć, wyłączy się ona automatycznie o zaplanowanej porze dnia.

Automatyzacja jest najlepszym przyjacielem chmury

Gotowe rozwiązania to świetny sposób na szybkie i łatwe zaoszczędzenie czasu i pieniędzy. Elementy Runbook automatyzacji wykorzystują znane kodowanie programu PowerShell, aby zapewnić ogromną elastyczność. Wbudowane kontrole tożsamości i dostępu na platformie Azure mogą zapewnić bezpieczne i zarządzane uwierzytelnianie, dzięki czemu nie musisz tego robić. Automatyzacja Twojej chmury nigdy nie była łatwiejsza!

0 Shares:
You May Also Like