Azure Bulut Hizmeti için başlangıç görevlerini yapılandırma ve çalıştırma (klasik)

Önemli

Cloud Services (klasik), 1 Eylül 2024 itibarıyla tüm müşteriler için kullanım dışı bırakılmıştır. Mevcut tüm çalışan dağıtımlar Microsoft tarafından durdurulacak ve kapatılacak ve Veriler Ekim 2024'den itibaren kalıcı olarak kaybolacaktır. Yeni dağıtımlarda yeni Azure Resource Manager tabanlı dağıtım modeli Azure Cloud Services (genişletilmiş destek) kullanılmalıdır.

Bir rol başlamadan önce işlemleri gerçekleştirmek için başlangıç görevlerini kullanabilirsiniz. Gerçekleştirmek isteyebileceğiniz işlemler arasında bileşen yükleme, Bileşen Nesne Modeli (COM) bileşenlerini kaydetme, kayıt defteri anahtarlarını ayarlama veya uzun süre çalışan bir işlem başlatma sayılabilir.

Not

Başlangıç görevleri Sanal Makineler için geçerli değildir, yalnızca Bulut Hizmeti Web ve Çalışan rolleri için geçerlidir.

Başlangıç görevleri nasıl çalışır?

Başlangıç görevleri, rolleriniz başlamadan önce yapılan eylemlerdir. ServiceDefinition.csdef dosyası, Başlangıç öğesi içindeki Task öğesini kullanarak başlangıç görevlerini tanımlar. Genellikle başlangıç görevleri toplu iş dosyalarıdır, ancak konsol uygulamaları veya PowerShell betiklerini başlatan toplu iş dosyaları da olabilir.

Ortam değişkenleri bilgileri bir başlangıç görevine geçirir ve yerel depolama bir başlangıç görevinden bilgi geçirmek için kullanılabilir. Örneğin, bir ortam değişkeni yüklemek istediğiniz programın yolunu belirtebilir ve dosyalar yerel depolama alanına yazılabilir. Buradan, rolleriniz dosyaları okuyabilir.

Başlangıç göreviniz TEMP ortam değişkeni tarafından belirtilen dizinde bilgileri ve hataları günlüğe kaydedebilir. Başlangıç görevi sırasında TEMP ortam değişkeni C:\Resources\temp\[guid].[ olarak çözümlendi rolename]\RoleTemp dizini bulutta çalışırken.

Başlangıç görevleri, yeniden başlatmalar arasında birçok defa da yürütülebilir. Örneğin, başlangıç görevi rol her geri dönüşümde çalıştırılır ve rol geri dönüşümleri her zaman yeniden başlatma içermeyebilir. Başlangıç görevleri, sorunsuz bir şekilde birkaç kez çalışmalarına olanak tanıyan bir şekilde yazılmalıdır.

Başlangıç işlemlerinin tamamlanması için başlangıç görevlerinin hata düzeyi (veya çıkış kodu) sıfır olmalıdır. Başlangıç görevi sıfır olmayan bir hata düzeyiyle biterse rol başlatılamaz.

Rol başlatma sırası

Aşağıda Azure'daki rol başlatma yordamı listelenmektedir:

  1. Örnek Başlatılıyor olarak işaretlenir ve trafik almaz.

  2. Tüm başlangıç görevleri taskType özniteliğine göre yürütülür.

    • Basit görevler tek tek zaman uyumlu olarak yürütülür.

    • Arka plan ve ön plan görevleri, başlangıç görevine paralel olarak zaman uyumsuz olarak başlatılır.

      Uyarı

      IIS, başlangıç işlemindeki başlangıç görevi aşamasında tam olarak yapılandırılmamış olabilir, bu nedenle role özgü veriler kullanılamayabilir. Role özgü veriler gerektiren başlangıç görevleri Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint.OnStart kullanmalıdır.

  3. Rol ana bilgisayar işlemi başlatılır ve site Internet Information Services'te (IIS) oluşturulur.

  4. Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint.OnStart yöntemi çağrılır.

  5. Örnek Hazır olarak işaretlenir ve trafik örneğe yönlendirilir.

  6. Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint.Run yöntemi çağrılır.

Başlangıç görevi örneği

Başlangıç görevleri, Görev öğesindeki ServiceDefinition.csdef dosyasında tanımlanır. commandLine özniteliği başlangıç toplu iş dosyasının veya konsol komutunun adını ve parametrelerini, executionContext özniteliği başlangıç görevinin ayrıcalık düzeyini ve taskType özniteliği görevin nasıl yürütülür olduğunu belirtir.

Bu örnekte, başlangıç görevi için MyVersionNumber adlı bir ortam değişkeni oluşturulur ve "1.0.0.0" değerine ayarlanır.

ServiceDefinition.csdef:

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

Aşağıdaki örnekte, Startup.cmd toplu iş dosyası TEMP ortam değişkeni tarafından belirtilen dizindeki StartupLog.txt dosyasına "Geçerli sürüm 1.0.0.0" satırını yazar. Satır, EXIT /B 0 başlangıç görevinin sıfır hata düzeyiyle sona ermesini sağlar.

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

Not

Visual Studio'da, başlangıç toplu iş dosyanızın Azure'daki projenize (Web rolleri için approot\bin ve çalışan rolleri için approot) düzgün dağıtıldığından emin olmak için, başlangıç toplu iş dosyanızın Çıkış Dizinine Kopyala özelliği Her Zaman Kopyala olarak ayarlanmalıdır.

Görev özniteliklerinin açıklaması

Aşağıda, ServiceDefinition.csdef dosyasındaki Task öğesinin öznitelikleri açıklanmaktadır:

commandLine - Başlangıç görevi için komut satırını belirtir:

  • Başlangıç görevini başlatan isteğe bağlı komut satırı parametreleriyle komut.
  • Bu öznitelik genellikle bir .cmd veya .bat toplu iş dosyasının dosya adıdır.
  • Görev, dağıtım için AppRoot\Bin klasörüne göredir. Ortam değişkenleri, görevin yolunu ve dosyasını belirlerken genişletilmeyen. Ortam genişletme gerekiyorsa, başlangıç görevinizi çağıran küçük bir .cmd betiği oluşturabilirsiniz.
  • Bir konsol uygulaması veya PowerShell betiğini başlatan bir toplu iş dosyası olabilir.

executionContext - Başlangıç görevi için ayrıcalık düzeyini belirtir. Ayrıcalık düzeyi sınırlı veya yükseltilmiş olabilir:

  • sınırlı
    Başlangıç görevi, rolle aynı ayrıcalıklarla çalışır. Runtime öğesinin executionContext özniteliği de sınırlı olduğunda, kullanıcı ayrıcalıkları kullanılır.
  • Yükseltilmiş
    Başlangıç görevi yönetici ayrıcalıklarıyla çalışır. Bu ayrıcalıklar, başlangıç görevlerinin rolün ayrıcalık düzeyini artırmadan programları yüklemesine, IIS yapılandırma değişiklikleri yapmasına, kayıt defteri değişikliklerini ve diğer yönetici düzeyinde görevleri gerçekleştirmesine olanak tanır.

Not

Başlangıç görevinin ayrıcalık düzeyinin rolün kendisiyle aynı olması gerekmez.

taskType - Başlangıç görevinin yürütülürken kullanılaını belirtir.

  • basit
    Görevler, ServiceDefinition.csdef dosyasında belirtilen sırayla zaman uyumlu olarak, birer birer yürütülür. Basit bir başlangıç görevi sıfır hata düzeyiyle sona erdiğinde, sonraki basit başlangıç görevi yürütülür. Yürütülecek başka basit başlangıç görevi yoksa rolün kendisi başlar.

    Not

    Basit görev sıfır olmayan bir hata düzeyiyle biterse, örnek engellenir. Sonraki basit başlangıç görevleri ve rolün kendisi başlatılmaz.

    Toplu iş dosyanızın sıfır hata düzeyiyle sona erdiğinden emin olmak için toplu iş dosyası işleminizin sonunda komutunu EXIT /B 0 yürütür.

  • arka plan
    Görevler, rolün başlatılmasına paralel olarak zaman uyumsuz olarak yürütülür.

  • Ön plan
    Görevler, rolün başlatılmasına paralel olarak zaman uyumsuz olarak yürütülür. Ön plan ve arka plan görevi arasındaki temel fark, ön plan görevinin görev sona erene kadar rolün geri dönüştürülmesini veya kapatılmasını engellemesidir. Arka plan görevlerde bu kısıtlama yoktur.

Ortam değişkenleri

Ortam değişkenleri, bilgileri başlangıç görevine geçirmenin bir yoludur. Örneğin, yüklenecek programı içeren bir blobun yolunu veya rolünüzün kullandığı bağlantı noktası numaralarını ya da başlangıç görevinizin özelliklerini denetlemek için ayarları yerleştirebilirsiniz.

Başlangıç görevleri için iki tür ortam değişkeni vardır; RoleEnvironment sınıfının üyelerine göre statik ortam değişkenleri ve ortam değişkenleri. Her ikisi de ServiceDefinition.csdef dosyasının Ortam bölümündedir ve her ikisi de Variable öğesi ve ad özniteliğini kullanır.

Statik ortam değişkenleri Variable öğesinin value özniteliğini kullanır. Yukarıdaki örnek, statik değeri "1.0.0.0" olan MyVersionNumber ortam değişkenini oluşturur. Başka bir örnek, StagingOrProduction ortam değişkeninin değerine göre farklı başlangıç eylemleri gerçekleştirmek için el ile "hazırlama" veya "üretim" değerlerine ayarlayabileceğiniz bir StagingOrProduction ortam değişkeni oluşturmaktır.

RoleEnvironment sınıfının üyelerine dayalı ortam değişkenleri Variable öğesinin value özniteliğini kullanmaz. Bunun yerine, uygun XPath öznitelik değerine sahip RoleInstanceValue alt öğesi, RoleEnvironment sınıfının belirli bir üyesini temel alan bir ortam değişkeni oluşturmak için kullanılır. Çeşitli RoleEnvironment değerlerine erişmek için XPath özniteliğinin değerlerine buradan ulaşabilirsiniz.

Örneğin, örnek işlem öykünücüsunda çalışırken "true" ve bulutta çalışırken "false" olan bir ortam değişkeni oluşturmak için aşağıdaki Variable ve RoleInstanceValue öğelerini kullanın:

<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>

Sonraki adımlar

Bulut Hizmetinizle bazı yaygın başlangıç görevlerini gerçekleştirmeyi öğrenin.

Bulut Hizmetinizi paketle .