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ájaenableInternalDNSCheck
: (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-szkriptstorageAccountName
: (nem kötelező, sztring) a tárfiók nevestorageAccountKey
: (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:
- Engedélyezés: amikor a parancs elkezd futni.
- 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.
- 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.