Az Azure Custom Script Extension 1. verziójának használata Linux rendszerű virtuális gépekkel

Fontos

Ez a bővítmény elavult, és itt csak tájékoztatás céljából dokumentáljuk. Nem javasoljuk, hogy továbbra is használja ezt a bővítményt az üzemelő példányban.

Az egyéni szkriptbővítmény 1. verziója szkripteket tölt le és futtat Azure-beli virtuális gépeken. Ez a bővítmény telepítés utáni konfigurációhoz, szoftvertelepítéshez vagy bármilyen más konfigurációs/felügyeleti feladathoz hasznos. A szkripteket letöltheti az Azure Storage vagy más elérhető internetes helyről, vagy meg is használhatja őket a bővítmény-futtatás számára.

Az egyéni szkriptbővítmény integrálható az Azure Resource Manager sablonokkal. Futtathatja az Azure CLI, a PowerShell, a Azure Portal vagy az Azure Virtual Machines REST API.

Ez a cikk részletesen bemutatja, hogyan használhatja az egyéni szkriptbővítményt az Azure CLI-ről, és hogyan futtatja a bővítményt egy Azure Resource Manager használatával. Ez a cikk linuxos rendszerek hibaelhárítási lépéseit is beemeli.

Két egyéni Linux-szkriptbővítmény van:

  • 1-es verzió – Microsoft.OSTCExtensions.CustomScriptForLinux

  • 2. verzió – Microsoft.Azure.Extensions.CustomScript

Váltson új és meglévő üzemelő példányokat az új verzió (Microsoft.Azure.Extensions.CustomScript) használatára. Az új verzió a régi kiváltására készült. A migrálásához így elég megváltoztatni a nevet és a verziót, nincs szükség a bővítménykonfiguráció módosítására.

Operációs rendszer

Támogatott Linux-disztribúciók:

  • CentOS 6.5 és újabb verziók
  • Debian 8 és újabb
    • A Debian 8.7 nem tartalmazza a Python2-t a legújabb képeken, ami megszakítja a CustomScriptForLinux használatát.
  • FreeBSD
  • OpenSUSE 13.1 és újabb verziók
  • Oracle Linux 6.4-es vagy újabb verzió
  • SUSE Linux Enterprise Server 11 SP3 vagy újabb verzió
  • Ubuntu 12.04 és újabb verziók

Szkript helye

A bővítmény használatával az Azure Blob Storage hitelesítő adatait használhatja az Azure Blob Storage eléréséhez. Másik lehetőségként a szkript helye lehet bármely olyan hely, ahol a virtuális gép az adott végponthoz irányítható, például GitHub, belső fájlkiszolgáló stb.

Internetkapcsolat

Ha külsőleg kell letöltenie egy szkriptet, például a GitHub vagy az Azure Storage, további tűzfal-/hálózati biztonsági csoportportokat kell megnyitnia. Ha például a szkript az Azure Storage-ban található, engedélyezheti a hozzáférést az Azure NSG-szolgáltatáscímkék használatával a Storage.

Ha a szkript egy helyi kiszolgálón található, akkor előfordulhat, hogy további tűzfal-/hálózati biztonsági csoportportokat kell megnyitnia.

Tippek és trükkök

  • A bővítmény meghibásodásai legnagyobb arányban a szkriptben található szintaktikai hibák miatt jelentkeznek. Tesztelje, hogy a szkript fut-e hiba nélkül, és lássa el további naplózással a szkriptet, hogy könnyebb legyen a hiba helyét azonosítani.
  • Írjon idempotens szkripteket, hogy ne okozzanak változásokat a rendszerben, ha véletlenül többször is futtatják őket.
  • Győződjön meg arról, hogy a szkriptek futtatásakor nincs szükség felhasználói adatbevitelre.
  • A szkript futása 90 perc alatt lefuthat, ami a továbbiakban a bővítmény sikertelen kiépítését eredményezi.
  • Ne helyezzen újraindításokat a szkriptbe, ez más telepített bővítményekkel kapcsolatos problémákat okoz, és az újraindítás után a bővítmény nem folytatódik az újraindítás után.
  • Ha olyan szkriptje van, amely újraindítást okoz, telepítse az alkalmazásokat, és futtatassa a szkripteket stb. Az újraindítást Cron-feladat használatával, vagy olyan eszközökkel kell ütemezni, mint a DSC, a Chef vagy a Puppet bővítmény.
  • A bővítmény csak egyszer fog futtatni egy szkriptet, ha minden rendszerindításkor futtatni szeretne egy szkriptet, akkor használhatja a cloud-init rendszerképet és a Scripts Per Boot modult . Másik lehetőségként a szkript használatával is létrehozhat egy Systemd szolgáltatási egységet.
  • Ha ütemezni szeretné egy szkript futtatásának ütemezését, a bővítmény használatával hozzon létre egy Cron-feladatot.
  • Amikor a szkript fut, az Azure Portalon vagy a CLI-n a bővítmény „átmeneti” állapotát fogja látni. Ha egy futó szkript gyakoribb állapotfrissítéseit szeretné, létre kell hoznia egy saját megoldást.
  • Az egyéni szkriptbővítmény nem támogatja natív módon a proxykiszolgálókat, de használhat olyan fájlátviteli eszközt, amely támogatja a proxykiszolgálókat a szkriptben, például a Curlet.
  • Vegye figyelembe a nem alapértelmezett könyvtárhelyeket, amelyekre a szkriptek vagy parancsok támaszkodhatnak, és amelyek logikával kezelik ezt.

Bővítményséma

Az egyéni szkriptbővítmény konfigurációja olyan adatokat ad meg, mint a szkript helye és a futtatandó parancs. Ezt a konfigurációt tárolhatja konfigurációs fájlokban, megadhatja a parancssorban, vagy megadhatja egy Azure Resource Manager sablonban.

A bizalmas adatokat védett konfigurációban tárolhatja, amely titkosítva van, és csak a virtuális gépen belül van visszafejtve. A védett konfiguráció akkor hasznos, ha a végrehajtási parancs titkos okat, például jelszót tartalmaz.

Ezeket az elemeket bizalmas adatként kell kezelni, és meg kell adni a bővítmények védett beállításainak konfigurációjában. Az Azure-beli virtuálisgép-bővítmény védett beállítási adatai titkosítva vannak, és csak a cél virtuális gépen vannak visszafejtve.

{
  "name": "config-app",
  "type": "extensions",
  "location": "[resourceGroup().location]",
  "apiVersion": "2015-06-15",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', concat(variables('vmName'),copyindex()))]"
  ],
  "tags": {
    "displayName": "config-app"
  },
  "properties": {
    "publisher": "Microsoft.OSTCExtensions",
    "type": "CustomScriptForLinux",
    "typeHandlerVersion": "1.5",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "<url>"
      ],
      "enableInternalDNSCheck": true
    },
    "protectedSettings": {
      "storageAccountName": "<storage-account-name>",
      "storageAccountKey": "<storage-account-key>",
      "commandToExecute": "<command>"
    }
  }
}

Tulajdonságértékek

Name Érték /Példa Adattípus
apiVersion 2015-06-15 dátum
közzétevő Microsoft.OSTCExtensions sztring
típus CustomScriptForLinux sztring
typeHandlerVersion 1.5 int
fileUris (például) https://github.com/MyProject/Archive/MyPythonScript.py array
commandToExecute (például) python MyPythonScript.py <my-param1> sztring
enableInternalDNSCheck true boolean
storageAccountName (például) examplestorageacct sztring
storageAccountKey (például) TmJK/1N3AbAZ3q/+hOXoi/l73zOqsaxXDhqa9Y83/v5UpXQp2DQIBuv2Tifp60cE/OaHsJZmQZ7teQfofQj8hg== sztring

Tulajdonságérték részletei

  • fileUris: (nem kötelező, sztringtömb) a szkriptek URI-listája
  • enableInternalDNSCheck: (nem kötelező, bool) alapértelmezett beállítása Igaz, a DNS-ellenőrzés letiltásához állítsa False (Hamis) értékre.
  • commandToExecute: (nem kötelező, sztring) a végrehajtani szükséges belépésipont-szkript
  • storageAccountName: (nem kötelező, sztring) a tárfiók neve
  • storageAccountKey: (nem kötelező, sztring) a tárfiók hozzáférési kulcsa

Az alábbi értékek nyilvános vagy védett beállításokban is beállíthatók. Az alábbi értékeket nem lehet nyilvános és védett beállításokban sem beállítani.

  • commandToExecute

A nyilvános beállítások használata hasznos lehet a hibakereséshez, de erősen ajánlott védett beállításokat használni.

A nyilvános beállításokat a rendszer tiszta szövegként küldi el a virtuális gépnek, ahol a szkript végre lesz hajtva. A védett beállítások titkosítása csak az Azure és a virtuális gép számára ismert kulcs használatával történik. A rendszer az elküldött beállításokat menti a virtuális gépre, vagyis ha a beállítások titkosítva vannak, titkosítva vannak mentve a virtuális gépen. A titkosított értékek visszafejtéséhez használt tanúsítványt a rendszer a virtuális gépen tárolja, és futtatáskor használja a beállítások visszafejtéséhez (ha szükséges).

Sablonalapú telepítés

Az Azure-beli virtuálisgép-bővítmények Azure-beli virtuálisgép-sablonokkal Resource Manager helyezhetők üzembe. Az előző szakaszban részletezett JSON-séma használható egy Azure Resource Manager-sablonban az egyéni szkriptbővítmény futtatásához az Azure Resource Manager-sablon üzembe helyezése során.

{
  "name": "config-app",
  "type": "extensions",
  "location": "[resourceGroup().location]",
  "apiVersion": "2015-06-15",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', concat(variables('vmName'),copyindex()))]"
  ],
  "tags": {
    "displayName": "config-app"
  },
  "properties": {
    "publisher": "Microsoft.OSTCExtensions",
    "type": "CustomScriptForLinux",
    "typeHandlerVersion": "1.5",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": ["http://MyAccount.blob.core.windows.net/vhds/MyShellScript.sh"]
    },
    "protectedSettings": {
      "storageAccountName": "MyAccount",
      "storageAccountKey": "<storage-account-key>",
      "commandToExecute": "sh MyShellScript.sh"
    }
  }
}

Megjegyzés

Ezek a tulajdonságnevek megkülönböztetik a kis- és nagybetűket. Az üzembe helyezési problémák elkerülése érdekében használja az itt látható neveket.

Azure CLI

Ha az Azure CLI-t használja az egyéni szkriptbővítmény futtatásához, hozzon létre egy konfigurációs fájlt vagy fájlokat. Legalább a "commandToExecute" értéknek kell lennie.

az vm extension set -n VMAccessForLinux \
  --publisher Microsoft.OSTCExtensions \
  --version 1.5 \
  --vm-name MyVm --resource-group MyResourceGroup \
  --protected-settings '{"commandToExecute": "echo hello"}'

A parancs beállításait JSON formátumú sztringként is megadhatja. Ez lehetővé teszi, hogy a konfiguráció a végrehajtás során, külön konfigurációs fájl nélkül legyen megadva.

az vm extension set \
  --resource-group exttest \
  --vm-name exttest \
  --name CustomScriptForLinux \
  --publisher Microsoft.OSTCExtensions \
  --settings '{"fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"],"commandToExecute": "./config-music.sh"}'

Azure parancssori felületi (CLI) példák

Nyilvános konfiguráció szkriptfájl nélkül

{
  "commandToExecute": "apt-get -y update && apt-get install -y apache2"
}

Azure CLI-parancs:

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name CustomScriptForLinux \
  --publisher Microsoft.OSTCExtensions \
  --settings ./script-config.json

Nyilvános és védett konfigurációs fájlok

A szkriptfájl URI-ját egy nyilvános konfigurációs fájl használatával adhatja meg. A futtatandó parancsot egy védett konfigurációs fájl használatával adhatja meg.

Nyilvános konfigurációs fájl:

{
  "fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"]
}

Védett konfigurációs fájl:

{
  "commandToExecute": "./config-music.sh <param1>"
}

Azure CLI-parancs:

az vm extension set
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name CustomScriptForLinux \
  --publisher Microsoft.OSTCExtensions \
  --settings ./script-config.json \
  --protected-settings ./protected-config.json

Hibaelhárítás

Az egyéni szkriptbővítmény futtatásakor a szkript az alábbi példához hasonló könyvtárba lesz létrehozva vagy letöltve. A parancs kimenete ebbe a könyvtárba is mentve lesz a és stdout a fájlban stderr .

/var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-<version>/download/1

A hibaelhárításhoz először ellenőrizze a Linux-ügynök naplóját, győződjön meg arról, hogy a bővítmény futott, és ellenőrizze a következőt:

/var/log/waagent.log

Meg kell keresnie a bővítmény végrehajtását, amely a következőre hasonlít:

2018/04/26 15:29:44.835067 INFO [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] Target handler state: enabled
2018/04/26 15:29:44.867625 INFO [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] [Enable] current handler state is: notinstalled
2018/04/26 15:29:44.959605 INFO Event: name=Microsoft.OSTCExtensions.CustomScriptForLinux, op=Download, message=Download succeeded, duration=59
2018/04/26 15:29:44.993269 INFO [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] Initialize extension directory
2018/04/26 15:29:45.022972 INFO [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] Update settings file: 0.settings
2018/04/26 15:29:45.051763 INFO [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] Install extension [customscript.py -install]
2018/04/26 15:29:45 CustomScriptForLinux started to handle.
2018/04/26 15:29:45 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] cwd is /var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2
2018/04/26 15:29:45 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] Change log file to /var/log/azure/Microsoft.OSTCExtensions.CustomScriptForLinux/1.5.2.2/extension.log
2018/04/26 15:29:46.088212 INFO Event: name=Microsoft.OSTCExtensions.CustomScriptForLinux, op=Install, message=Launch command succeeded: customscript.py -install, duration=1005
2018/04/26 15:29:46.133367 INFO [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] Enable extension [customscript.py -enable]
2018/04/26 15:29:46 CustomScriptForLinux started to handle.
..
2018/04/26 15:29:47.178163 INFO Event: name=Microsoft.OSTCExtensions.CustomScriptForLinux, op=Enable, message=Launch command succeeded: customscript.py -enable, duration=1012

Néhány fontos megjegyzés:

  1. Engedélyezés: amikor a parancs elkezd futni.
  2. A letöltés a CustomScript bővítménycsomag Azure-ból való letöltésére vonatkozik, nem a fileUris fájlban megadott szkriptfájlokra.
  3. Azt is láthatja, hogy melyik naplófájlba ír /var/log/azure/Microsoft.OSTCExtensions.CustomScriptForLinux/1.5.2.2/extension.log

A következő lépés a naplófájl ellenőrzése, amely a következő formátumot használja:

/var/log/azure/<extension-name>/<version>/extension.log file.

Meg kell keresnie az egyéni végrehajtást, amely a következőre hasonlít:

2018/04/26 15:29:46 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] Enable,transitioning,0,Launching the script...
2018/04/26 15:29:46 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] sequence number is 0
2018/04/26 15:29:46 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] setting file path is/var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2/config/0.settings
2018/04/26 15:29:46 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] JSON config: {"runtimeSettings": [{"handlerSettings": {"protectedSettings": "MIIB0AYJKoZIhvcNAQcDoIIBwTCCAb0CAQAxggF+hnEXRtFKTTuKiFC8gTfHKupUSs7qI0zFYRya", "publicSettings": {"fileUris": ["https://dannytesting.blob.core.windows.net/demo/myBash.sh"]}, "protectedSettingsCertThumbprint": "4385AB21617C2452FF6998C0A37F71A0A01C8368"}}]}
2018/04/26 15:29:46 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] Config decoded correctly.
2018/04/26 15:29:46 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] Will try to download files, number of retries = 10, wait SECONDS between retrievals = 20s
2018/04/26 15:29:46 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] Downloading,transitioning,0,Downloading files...
2018/04/26 15:29:46 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] No azure storage account and key specified in protected settings. Downloading scripts from external links...
2018/04/26 15:29:46 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] Converting /var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2/download/0/myBash.sh from DOS to Unix formats: Done
2018/04/26 15:29:46 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] Removing BOM of /var/lib/waagent/Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2/download/0/myBash.sh: Done
2018/04/26 15:29:46 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] Succeeded to download files, retry count = 0
2018/04/26 15:29:46 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] Internal DNS is ready, retry count = 0
2018/04/26 15:29:47 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] Command is finished.
2018/04/26 15:29:47 ---stdout---
2018/04/26 15:29:47
2018/04/26 15:29:47 ---errout---
2018/04/26 15:29:47
2018/04/26 15:29:47
2018/04/26 15:29:47 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] Daemon,success,0,Command is finished.
2018/04/26 15:29:47 ---stdout---
2018/04/26 15:29:47
2018/04/26 15:29:47 ---errout---
2018/04/26 15:29:47
2018/04/26 15:29:47

Itt a következőt láthatja:

  • Az Enable parancs indítása ez a napló
  • A bővítménynek átadott beállítások
  • A fájl letöltési bővítménye és az eredménye.
  • A futtatott parancs és az eredmény.

Az egyéni szkriptbővítmény végrehajtási állapotát az Azure CLI használatával is lekérheti:

az vm extension list -g myResourceGroup --vm-name myVM

A kimenet a következő szöveghez hasonló:

Name                  ProvisioningState    Publisher                   Version  AutoUpgradeMinorVersion
--------------------  -------------------  ------------------------  ---------  -------------------------
CustomScriptForLinux  Succeeded            Microsoft.OSTCExtensions        1.5  True

Következő lépések

A kódot, az aktuális problémákat és verziókat a CustomScript-bővítmény adattárában láthatja.