Jak skonfigurować i uruchomić zadania uruchamiania dla usługi Azure Cloud Service (klasycznej)

Ważne

Cloud Services (wersja klasyczna) jest teraz przestarzała dla nowych klientów i zostanie wycofana 31 sierpnia 2024 r. dla wszystkich klientów. Nowe wdrożenia powinny korzystać z nowego modelu wdrażania opartego na usłudze Azure Resource Manager Azure Cloud Services (rozszerzona obsługa)."

Zadania uruchamiania umożliwiają wykonywanie operacji przed rozpoczęciem roli. Operacje, które można wykonać, obejmują instalowanie składnika, rejestrowanie składników COM, ustawianie kluczy rejestru lub uruchamianie długotrwałego procesu.

Uwaga

Zadania uruchamiania nie mają zastosowania do Virtual Machines tylko do ról sieci Web i procesu roboczego usługi w chmurze.

Jak działają zadania uruchamiania

Zadania uruchamiania to akcje wykonywane przed rozpoczęciem ról i są definiowane w pliku ServiceDefinition.csdef przy użyciu elementu Task w elemecie Startup . Często zadania uruchamiania to pliki wsadowe, ale mogą to być również aplikacje konsolowe lub pliki wsadowe uruchamiające skrypty programu PowerShell.

Zmienne środowiskowe przekazują informacje do zadania uruchamiania, a magazyn lokalny może służyć do przekazywania informacji z zadania uruchamiania. Na przykład zmienna środowiskowa może określić ścieżkę do programu, który chcesz zainstalować, a pliki mogą być zapisywane w magazynie lokalnym, który następnie może być odczytywany później przez role.

Zadanie uruchamiania może rejestrować informacje i błędy w katalogu określonym przez zmienną środowiskową TEMP . Podczas zadania uruchamiania zmienna środowiskowa TEMP jest rozpoznawana jako C:\Resources\temp\[guid].[ rolename]\Katalog RoleTemp podczas uruchamiania w chmurze.

Zadania uruchamiania mogą być również wykonywane kilka razy między ponownymi uruchomieniami. Na przykład zadanie uruchamiania będzie uruchamiane przy każdym odtworzeniu roli, ale odtwarzanie roli nie zawsze obejmuje ponowne uruchomienie. Zadania uruchamiania powinny być zapisywane w sposób, który umożliwia ich uruchamianie kilka razy bez problemów.

Zadania uruchamiania muszą kończyć się błędem (lub kodem zakończenia) zera, aby proces uruchamiania został ukończony. Jeśli zadanie uruchamiania kończy się niepowodzeniem bez zera, rola nie zostanie uruchomiona.

Kolejność uruchamiania roli

Poniżej wymieniono procedurę uruchamiania roli na platformie Azure:

  1. Wystąpienie jest oznaczone jako Uruchamianie i nie odbiera ruchu.

  2. Wszystkie zadania uruchamiania są wykonywane zgodnie z atrybutem taskType .

    • Proste zadania są wykonywane synchronicznie, pojedynczo.

    • Zadania w tle i pierwszym planie są uruchamiane asynchronicznie, równolegle do zadania uruchamiania.

      Ostrzeżenie

      Usługi IIS mogą nie być w pełni skonfigurowane podczas etapu zadania uruchamiania w procesie uruchamiania, więc dane specyficzne dla roli mogą być niedostępne. Zadania uruchamiania wymagające danych specyficznych dla roli powinny używać polecenia Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint.OnStart.

  3. Proces hosta roli jest uruchamiany i witryna jest tworzona w usługach IIS.

  4. Wywoływana jest metoda Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint.OnStart .

  5. Wystąpienie jest oznaczone jako Gotowe , a ruch jest kierowany do wystąpienia.

  6. Wywoływana jest metoda Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint.Run .

Przykład zadania uruchamiania

Zadania uruchamiania są definiowane w pliku ServiceDefinition.csdef w elemecie Task . Atrybut commandLine określa nazwę i parametry pliku wsadowego uruchamiania lub polecenia konsoli, atrybut executionContext określa poziom uprawnień zadania uruchamiania, a atrybut taskType określa sposób wykonywania zadania.

W tym przykładzie zmienna środowiskowa MyVersionNumber jest tworzona dla zadania uruchamiania i ustawiona na wartość "1.0.0.0".

ServiceDefinition.csdef:

<Startup>
    <Task commandLine="Startup.cmd" executionContext="limited" taskType="simple" >
        <Environment>
            <Variable name="MyVersionNumber" value="1.0.0.0" />
        </Environment>
    </Task>
</Startup>

W poniższym przykładzie plik wsadowy Startup.cmd zapisuje wiersz "Bieżąca wersja to 1.0.0.0" do pliku StartupLog.txt w katalogu określonym przez zmienną środowiskową TEMP. Wiersz EXIT /B 0 gwarantuje, że zadanie uruchamiania kończy się z błędem zerowym .

ECHO The current version is %MyVersionNumber% >> "%TEMP%\StartupLog.txt" 2>&1
EXIT /B 0

Uwaga

W programie Visual Studio właściwość Copy to Output Directory dla pliku wsadowego uruchamiania powinna być ustawiona na Wartość Kopiuj zawsze , aby upewnić się, że plik wsadowy startowy został prawidłowo wdrożony na platformie Azure (folder approot\bin dla ról sieci Web i katalog aplikacji dla ról procesów roboczych).

Opis atrybutów elementu Task

Poniżej opisano atrybuty elementu Task w pliku ServiceDefinition.csdef :

commandLine — określa wiersz polecenia dla zadania uruchamiania:

  • Polecenie z opcjonalnymi parametrami wiersza polecenia, które rozpoczyna zadanie uruchamiania.
  • Często jest to nazwa pliku cmd lub .bat pliku wsadowego.
  • Zadanie jest powiązane z folderem AppRoot\Bin dla wdrożenia. Zmienne środowiskowe nie są rozwinięte w określaniu ścieżki i pliku zadania. Jeśli wymagane jest rozszerzenie środowiska, możesz utworzyć mały skrypt cmd, który wywołuje zadanie uruchamiania.
  • Może to być aplikacja konsolowa lub plik wsadowy, który uruchamia skrypt programu PowerShell.

executionContext — określa poziom uprawnień dla zadania uruchamiania. Poziom uprawnień może być ograniczony lub podwyższony:

  • Ograniczone
    Zadanie uruchamiania jest uruchamiane z tymi samymi uprawnieniami co rola. Gdy atrybut executionContext dla elementu Runtime jest również ograniczony, używane są uprawnienia użytkownika.
  • Podwyższone
    Zadanie uruchamiania jest uruchamiane z uprawnieniami administratora. Dzięki temu zadania uruchamiania mogą instalować programy, wprowadzać zmiany konfiguracji usług IIS, wykonywać zmiany rejestru i inne zadania na poziomie administratora bez zwiększania poziomu uprawnień samej roli.

Uwaga

Poziom uprawnień zadania uruchamiania nie musi być taki sam jak sama rola.

taskType — określa sposób wykonywania zadania uruchamiania.

  • Prosty
    Zadania są wykonywane synchronicznie( pojedynczo) w kolejności określonej w pliku ServiceDefinition.csdef . Gdy jedno proste zadanie uruchamiania kończy się z błędem zerowym , zostanie wykonane następne proste zadanie uruchamiania. Jeśli nie ma jeszcze prostych zadań uruchamiania do wykonania, zostanie uruchomiona sama rola.

    Uwaga

    Jeśli proste zadanie kończy się niepowodzeniem bez zera, wystąpienie zostanie zablokowane. Kolejne proste zadania uruchamiania i sama rola nie zostaną uruchomione.

    Aby upewnić się, że plik wsadowy kończy się na poziomie błędu zerowym, wykonaj polecenie EXIT /B 0 na końcu procesu pliku wsadowego.

  • background
    Zadania są wykonywane asynchronicznie, równolegle z uruchamianiem roli.

  • Pierwszym planie
    Zadania są wykonywane asynchronicznie, równolegle z uruchamianiem roli. Kluczową różnicą między pierwszym planem a zadaniem w tle jest to, że zadanie pierwszego planu uniemożliwia odtwarzanie lub zamykanie roli do momentu zakończenia zadania. Zadania w tle nie mają tego ograniczenia.

Zmienne środowiskowe

Zmienne środowiskowe to sposób przekazywania informacji do zadania uruchamiania. Można na przykład umieścić ścieżkę do obiektu blob zawierającego program do zainstalowania lub numerów portów, których będzie używać rola, lub ustawień do kontrolowania funkcji zadania uruchamiania.

Istnieją dwa rodzaje zmiennych środowiskowych dla zadań uruchamiania; statyczne zmienne środowiskowe i zmienne środowiskowe na podstawie składowych klasy RoleEnvironment . Oba te elementy znajdują się w sekcji Środowisko pliku ServiceDefinition.csdef i używają atrybutu Zmienna i nazwa .

Zmienne środowiskowe statyczne używają atrybutu wartości elementu Zmienna . Powyższy przykład tworzy zmienną środowiskową MyVersionNumber , która ma wartość statyczną "1.0.0.0". Innym przykładem jest utworzenie zmiennej środowiskowej StagingOrProduction , którą można ręcznie ustawić na wartości "przejściowe" lub "produkcyjne", aby wykonywać różne akcje uruchamiania na podstawie wartości zmiennej środowiskowej StagingOrProduction .

Zmienne środowiskowe oparte na elementach członkowskich klasy RoleEnvironment nie używają atrybutu wartości elementu Zmiennej . Zamiast tego element podrzędny RoleInstanceValue z odpowiednią wartością atrybutu XPath służy do tworzenia zmiennej środowiskowej na podstawie określonego elementu członkowskiego klasy RoleEnvironment . Wartości atrybutu XPath w celu uzyskania dostępu do różnych wartości roleEnvironment można znaleźć tutaj.

Aby na przykład utworzyć zmienną środowiskową o wartości "true", gdy wystąpienie jest uruchomione w emulatorze obliczeniowym i "false" podczas uruchamiania w chmurze, użyj następujących elementów Zmiennej i RoleInstanceValue :

<Startup>
    <Task commandLine="Startup.cmd" executionContext="limited" taskType="simple">
        <Environment>

            <!-- Create the environment variable that informs the startup task whether it is running
                in the Compute Emulator or in the cloud. "%ComputeEmulatorRunning%"=="true" when
                running in the Compute Emulator, "%ComputeEmulatorRunning%"=="false" when running
                in the cloud. -->

            <Variable name="ComputeEmulatorRunning">
                <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
            </Variable>

        </Environment>
    </Task>
</Startup>

Następne kroki

Dowiedz się, jak wykonywać typowe zadania uruchamiania za pomocą usługi w chmurze.

Spakuj usługę w chmurze.