Servers op afstand en veilig configureren met de opdracht Uitvoeren (preview)
Voer de opdracht uit op servers met Azure Arc (openbare preview) gebruikt de Connected Machine-agent om u op afstand en veilig een script op uw servers uit te voeren. Dit kan handig zijn voor talloze scenario's voor probleemoplossing, herstel, diagnose en onderhoud.
Ondersteunde omgeving en configuratie
Ervaringen: Run Command wordt momenteel ondersteund via Azure CLI en PowerShell.
Besturingssystemen: Run Command ondersteunt zowel Windows- als Linux-besturingssystemen.
Omgevingen: Run Command ondersteunt niet-Azure-omgevingen, waaronder on-premises, VMware, SCVMM, AWS, GCP en OCI.
Kosten: De opdracht Uitvoeren is gratis, maar de opslag van scripts in Azure kan facturering in rekening brengen.
Configuratie: Voor het uitvoeren van de opdracht is geen meer configuratie of de implementatie van extensies vereist. De versie van de Connected Machine-agent moet 1.33 of hoger zijn.
Toegang tot opdracht uitvoeren beperken met RBAC
Voor het weergeven van de uitvoeringsopdrachten of het weergeven van details van een opdracht is de Microsoft.HybridCompute/machines/runCommands/read
machtiging vereist. De ingebouwde lezerrol en hogere niveaus hebben deze machtiging.
Voor het uitvoeren van een opdracht is de Microsoft.HybridCompute/machines/runCommands/write
machtiging vereist. De rol Resourcebeheerder voor Azure Connected Machine en hogere niveaus hebben deze machtiging.
U kunt een van de ingebouwde rollen gebruiken of een aangepaste rol maken om de opdracht Uitvoeren te gebruiken.
Uitvoeringsopdrachten lokaal blokkeren
De Connected Machine-agent ondersteunt lokale configuraties waarmee u een acceptatielijst of een bloklijst kunt instellen. Zie Allowlists en blocklists voor extensies voor meer informatie.
Voor Windows:
azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerwindows"
Voor Linux:
azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerlinux"
Azure-CLI
In de volgende voorbeelden wordt az connectedmachine run-command gebruikt om een shellscript uit te voeren op een Azure Windows-computer.
Een script uitvoeren met de machine
Met deze opdracht wordt het script aan de machine geleverd, uitgevoerd en wordt de vastgelegde uitvoer geretourneerd.
az connectedmachine run-command create --name "myRunCommand" --machine-name "myMachine" --resource-group "myRG" --script "Write-Host Hello World!"
Alle geïmplementeerde RunCommand-resources op een computer weergeven
Met deze opdracht wordt een volledige lijst met eerder geïmplementeerde uitvoeringsopdrachten geretourneerd, samen met de bijbehorende eigenschappen.
az connectedmachine run-command list --machine-name "myMachine" --resource-group "myRG"
Uitvoeringsstatus en -resultaten ophalen
Met deze opdracht wordt de huidige uitvoeringsvoortgang opgehaald, inclusief de meest recente uitvoer, de begin-/eindtijd, de afsluitcode en de terminalstatus van de uitvoering.
az connectedmachine run-command show --name "myRunCommand" --machine-name "myMachine" --resource-group "myRG"
Notitie
De uitvoer- en foutvelden in instanceView
zijn beperkt tot de laatste 4 kB. Voor toegang tot de volledige uitvoer en fout kunt u de uitvoer- en foutgegevens doorsturen naar toevoeg-blobs voor opslag met behulp van -outputBlobUri
en -errorBlobUri
parameters tijdens het uitvoeren van de opdracht Uitvoeren.
RunCommand-resource van de machine verwijderen
Verwijder de RunCommand-resource die eerder op de computer is geïmplementeerd. Als de uitvoering van het script nog wordt uitgevoerd, wordt de uitvoering beëindigd.
az connectedmachine run-command delete --name "myRunCommand" --machine-name "myMachine" --resource-group "myRG"
Powershell
Een script uitvoeren met de machine
New-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -Location "EastUS" -RunCommandName "RunCommandName" –SourceScript "echo Hello World!"
Een script uitvoeren op de computer met de parameter SourceScriptUri
OutputBlobUri
en ErrorBlobUri
zijn optionele parameters.
New-AzConnectedMachineRunCommand -ResourceGroupName -MachineName -RunCommandName -SourceScriptUri “< SAS URI of a storage blob with read access or public URI>” -OutputBlobUri “< SAS URI of a storage append blob with read, add, create, write access>” -ErrorBlobUri “< SAS URI of a storage append blob with read, add, create, write access>”
Alle geïmplementeerde RunCommand-resources op een computer weergeven
Met deze opdracht wordt een volledige lijst met eerder geïmplementeerde run-opdrachten geretourneerd, samen met de bijbehorende eigenschappen.
Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine"
Uitvoeringsstatus en -resultaten ophalen
Met deze opdracht wordt de huidige uitvoeringsvoortgang opgehaald, inclusief de meest recente uitvoer, de begin-/eindtijd, de afsluitcode en de terminalstatus van de uitvoering.
Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" - MachineName "myMachine" -RunCommandName "RunCommandName"
Opdracht Uitvoeren op een computer maken of bijwerken met behulp van SourceScriptUri (SAS-URL voor opslagblob)
Opdracht Uitvoeren op een Windows-computer maken of bijwerken met behulp van een SAS-URL van een opslagblob die een PowerShell-script bevat. SourceScriptUri
kan de volledige SAS-URL of openbare URL van een opslagblob zijn.
New-AzConnectedMachineRunCommand -ResourceGroupName MyRG0 -MachineName MyMachine -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>
Notitie
SAS-URL moet leestoegang bieden tot de blob. Er wordt een verlooptijd van 24 uur voorgesteld voor de SAS-URL. SAS-URL's kunnen worden gegenereerd in Azure Portal met behulp van blobopties of SAS-token met behulp van New-AzStorageBlobSASToken
. Als u een SAS-token genereert met behulp van New-AzStorageBlobSASToken
, uw SAS-URL = "basis-blob-URL" + "?" + "SAS-token van New-AzStorageBlobSASToken
"
Een exemplaarweergave uitvoeren voor een computer ophalen na het maken of bijwerken van de opdracht Uitvoeren
Haal een opdracht uitvoeren voor de computer op met exemplaarweergave. De exemplaarweergave bevat de uitvoeringsstatus van de opdracht Uitvoeren (Geslaagd, Mislukt, enzovoort), afsluitcode, standaarduitvoer en standaardfout die wordt gegenereerd door het script uit te voeren met behulp van De opdracht Uitvoeren. Een niet-nul ExitCode geeft een mislukte uitvoering aan.
Get-AzConnectedMachineRunCommand -ResourceGroupName MyRG -MachineName MyMachine -RunCommandName MyRunCommand
InstanceViewExecutionState
: Status van het script Opdracht uitvoeren van de gebruiker. Raadpleeg deze status om te weten of uw script al dan niet is geslaagd.
ProvisioningState
: Status van het inrichten van algemene extensies end-to-end (of het extensieplatform het uitvoeren van een opdrachtscript kon activeren of niet).
Opdracht Uitvoeren op een computer maken of bijwerken met behulp van SourceScript (scripttekst)
De opdracht Uitvoeren maken of bijwerken op een computer die de scriptinhoud rechtstreeks doorgeeft aan -SourceScript
de parameter. Gebruik ;
dit om meerdere opdrachten te scheiden.
New-AzConnectedMachineRunCommand -ResourceGroupName MyRG0 -MachineName MyMachine -RunCommandName MyRunCommand2 -Location EastUS2EUAP -SourceScript "id; echo HelloWorld"
Opdracht Uitvoeren op een computer maken of bijwerken met behulp van OutputBlobUri, ErrorBlobUri om standaarduitvoer en standaardfoutberichten te streamen naar uitvoer en fout Toevoeg-blobs
Voeropdracht op een computer maken of bijwerken en standaarduitvoer en standaardfoutberichten streamen naar uitvoer en fout Toevoeg-blobs.
New-AzConnectedMachineRunCommand -ResourceGroupName MyRG0 - MachineName MyMachine -RunCommandName MyRunCommand3 -Location EastUS2EUAP -SourceScript "id; echo HelloWorld"-OutputBlobUri <OutPutBlobUrI> -ErrorBlobUri <ErrorBlobUri>
Notitie
De uitvoer- en fout-blobs moeten het type AppendBlob zijn en de BIJBEHORENDE SAS-URL's moeten lees-, toevoeg-, create-, schrijftoegang tot de blob bieden. Er wordt een verlooptijd van 24 uur voorgesteld voor de SAS-URL. Als de uitvoer- of foutblob niet bestaat, wordt er een blob van het type AppendBlob gemaakt. SAS-URL's kunnen worden gegenereerd in Azure Portal met behulp van de opties van blob of sas-token van het gebruik New-AzStorageBlobSASToken
.
Opdracht Uitvoeren op een computer maken of bijwerken als een andere gebruiker met de parameters RunAsUser en RunAsPassword
Opdracht Uitvoeren op een computer maken of bijwerken als een andere gebruiker met behulp van RunAsUser
en RunAsPassword
parameters. Neem contact op met de beheerder van de computer en zorg ervoor dat de gebruiker op de computer wordt toegevoegd, zodat de gebruiker toegang heeft tot resources die toegankelijk zijn via de opdracht Uitvoeren (mappen, bestanden, netwerk, enzovoort) en in het geval van Windows-computer, de secundaire aanmeldingsservice wordt uitgevoerd op de computer.
New-AzMachineRunCommand -ResourceGroupName MyRG0 -MachineName MyMachine -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScript "id; echo HelloWorld" -RunAsUser myusername -RunAsPassword mypassword
Opdracht Uitvoeren op een machineresource maken of bijwerken met behulp van SourceScriptUri (SAS-URL voor opslagblob)
Opdracht Uitvoeren op een Windows-computerresource maken of bijwerken met behulp van een SAS-URL van een opslagblob die een PowerShell-script bevat.
New-AzMachineRunCommand -ResourceGroupName MyRG0 -MachineName MyMachine -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>
Notitie
SAS-URL moet leestoegang bieden tot de blob. Er wordt een verlooptijd van 24 uur voorgesteld voor de SAS-URL. SAS-URL's kunnen worden gegenereerd in Azure Portal met behulp van blobopties of SAS-token met behulp van New-AzStorageBlobSASToken
. Als u sas-token genereert met behulp van New-AzStorageBlobSASToken
, is de SAS-URL-indeling: basis-blob-URL + "?" + het SAS-token van New-AzStorageBlobSASToken
.
Opdracht Uitvoeren op een computer maken of bijwerken met ScriptLocalPath (lokaal scriptbestand)
Opdracht Uitvoeren op een computer maken of bijwerken met behulp van een lokaal scriptbestand op de clientcomputer waarop de cmdlet wordt uitgevoerd.
New-AzMachineRunCommand -ResourceGroupName MyRG0 -VMName MyMachine -RunCommandName MyRunCommand -Location EastUS2EUAP -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1"
Opdracht Uitvoeren maken of bijwerken op een computerexemplaren met parameter- en ProtectedParameter-parameters (openbare en beveiligde parameters voor script)
Gebruik ProtectedParameter om gevoelige invoer door te geven aan scripts, zoals wachtwoorden, sleutels, enzovoort.
Windows: Parameters en ProtectedParameters worden doorgegeven aan het script omdat argumenten worden doorgegeven aan het script en als volgt worden uitgevoerd:
myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2value
Linux: Benoemde parameters en de bijbehorende waarden worden ingesteld op omgevingsconfiguratie, die toegankelijk moet zijn binnen het .sh script. Geef voor argumenten zonder naam een lege tekenreeks door om invoer een naam te geven. Naamloze argumenten worden doorgegeven aan scripts en worden als volgt uitgevoerd:
myscript.sh publicParam1value publicParam2value secret1value secret2value
RunCommand-resource van de machine verwijderen
Verwijder de RunCommand-resource die eerder op de computer is geïmplementeerd. Als de uitvoering van het script nog wordt uitgevoerd, wordt de uitvoering beëindigd.
Remove-AzConnetedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -RunCommandName "RunCommandName"
Opdrachtbewerkingen uitvoeren
Voer de opdracht uit op servers met Azure Arc die ondersteuning bieden voor de volgende bewerkingen:
Operation | Omschrijving |
---|---|
Create | De bewerking voor het maken van een uitvoeringsopdracht. Hiermee wordt de run-opdracht uitgevoerd. |
Delete | De bewerking voor het verwijderen van een uitvoeringsopdracht. Als deze wordt uitgevoerd, wordt de run-opdracht ook gestopt door verwijderen. |
Ophalen | De bewerking voor het ophalen van een uitvoeringsopdracht. |
List | De bewerking voor het ophalen van alle uitvoeringsopdrachten van een server met Azure Arc. |
Bijwerken | De bewerking voor het bijwerken van de opdracht uitvoeren. Hiermee stopt u de vorige run-opdracht. |
Notitie
Uitvoer- en fout-blobs worden overschreven telkens wanneer het script voor de uitvoering van de opdracht wordt uitgevoerd.
Voorbeeldscenario's
Stel dat u een server met Azure Arc hebt met de naam 2012DatacenterServer1 in resourcegroep ContosoRG met abonnements-id 'aaaaaa-aaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'. Overweeg een scenario waarin u externe toegang moet bieden tot een eindpunt voor Windows Server 2012/R2-servers. Voor toegang tot uitgebreide beveiligingsupdates die zijn ingeschakeld door Azure Arc, is toegang tot het eindpunt www.microsoft.com/pkiops/certs
vereist. U moet op afstand een firewallregel configureren die toegang tot dit eindpunt toestaat. Gebruik Opdracht Uitvoeren om connectiviteit met dit eindpunt toe te staan.
Voorbeeld 1: Eindpunttoegang met opdracht Uitvoeren
Begin met het maken van een opdrachtscript uitvoeren om eindpunttoegang tot het eindpunt op uw www.microsoft.com/pkiops/certs
doelserver met Arc te bieden met behulp van de PUT-bewerking.
Gebruik de volgende bewerking om het script rechtstreeks in regel op te geven:
PUT https://management.azure.com/subscriptions/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/EndpointAccessCommand?api-version=2023-10-03-preview
{
"location": "eastus2",
"properties": {
"source": {
"script": "New-NetFirewallRule -DisplayName $ruleName -Direction Outbound -Action Allow -RemoteAddress $endpoint -RemotePort $port -Protocol $protocol"
},
"parameters": [
{
"name": "ruleName",
"value": "Allow access to www.microsoft.com/pkiops/certs"
},
{
"name": "endpoint",
"value": "www.microsoft.com/pkiops/certs"
},
{
"name": "port",
"value": 433
},
{
"name": "protocol",
"value": "TCP"
}
],
"asyncExecution": false,
"runAsUser": "contoso-user1",
"runAsPassword": "Contoso123!"
"timeoutInSeconds": 3600,
"outputBlobUri": "https://mystorageaccount.blob.core.windows.net/myscriptoutputcontainer/MyScriptoutput.txt",
"errorBlobUri": "https://mystorageaccount.blob.core.windows.net/mycontainer/MyScriptError.txt"
}
}
Als u in plaats daarvan een koppeling wilt maken naar het scriptbestand, kunt u de scriptURI-optie uitvoeren van de opdrachtbewerking gebruiken. Hiervoor wordt ervan uitgegaan dat u een newnetfirewallrule.ps1
bestand met het inlinescript hebt voorbereid en dit script hebt geüpload naar blobopslag.
PUT https://management.azure.com/subscriptions/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/EndpointAccessCommand?api-version=2023-10-03-preview
{
"location": "eastus2",
"properties": {
"source": {
"scriptUri": "https://mystorageaccount.blob.core.windows.net/myscriptoutputcontainer/newnetfirewallrule.ps1"
},
"parameters": [
{
"name": "ruleName",
"value": " Allow access to www.microsoft.com/pkiops/certs"
},
{
"name": "endpoint",
"value": "www.microsoft.com/pkiops/certs"
},
{
"name": "port",
"value": 433
},
{
"name": "protocol",
"value": "TCP"
}
],
"asyncExecution": false,
"runAsUser": "contoso-user1",
"runAsPassword": "Contoso123!"
"timeoutInSeconds": 3600,
"outputBlobUri": "https://mystorageaccount.blob.core.windows.net/myscriptoutputcontainer/MyScriptoutput.txt",
"errorBlobUri": "https://mystorageaccount.blob.core.windows.net/mycontainer/MyScriptError.txt"
}
}
SAS-URL moet leestoegang bieden tot de blob. Er wordt een verlooptijd van 24 uur voorgesteld voor de SAS-URL. SAS-URL's kunnen worden gegenereerd in Azure Portal met behulp van blobs-opties of SAS-token met behulp van New-AzStorageBlobSASToken
. Als u een SAS-token genereert met behulp van New-AzStorageBlobSASToken
, is de SAS-URL-indeling: base blob URL + "?"
+ het SAS-token van New-AzStorageBlobSASToken
.
De uitvoer- en fout-blobs moeten het type AppendBlob zijn en de BIJBEHORENDE SAS-URL's moeten lees-, toevoeg-, create-, schrijftoegang tot de blob bieden. Er wordt een verlooptijd van 24 uur voorgesteld voor de SAS-URL. SAS-URL's kunnen worden gegenereerd in Azure Portal met behulp van de opties van blob of sas-token van het gebruik New-AzStorageBlobSASToken
.
Voorbeeld 2: Opdrachtdetails uitvoeren ophalen
Als u wilt controleren of u de opdracht Uitvoeren correct hebt ingericht, gebruikt u de OPDRACHT GET om details op te halen over de ingerichte run-opdracht:
GET https://management.azure.com/subscriptions/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/EndpointAccessCommand?api-version=2023-10-03-preview
Voorbeeld 3: De opdracht Uitvoeren bijwerken
Stel dat u toegang tot een extra eindpunt *.waconazure.com
wilt openen voor connectiviteit met het Windows-beheercentrum. U kunt de bestaande run command bijwerken met nieuwe parameters:
PATCH https://management.azure.com/subscriptions/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/EndpointAccessCommand?api-version=2023-10-03-preview
{
"location": "eastus2",
"properties": {
"source": {
"script": "New-NetFirewallRule -DisplayName $ruleName -Direction Outbound -Action Allow -RemoteAddress $endpoint -RemotePort $port -Protocol $protocol"
},
"parameters": [
{
"name": "ruleName",
"value": "Allow access to WAC endpoint"
},
{
"name": "endpoint",
"value": "*.waconazure.com"
},
{
"name": "port",
"value": 433
},
{
"name": "protocol",
"value": "TCP"
}
],
"asyncExecution": false,
"runAsUser": "contoso-user1",
"runAsPassword": "Contoso123!",
"timeoutInSeconds": 3600,
"outputBlobUri": "https://mystorageaccount.blob.core.windows.net/myscriptoutputcontainer/MyScriptoutput.txt",
"errorBlobUri": "https://mystorageaccount.blob.core.windows.net/mycontainer/MyScriptError.txt"
}
}
Voorbeeld 4: Opdrachten voor lijstuitvoering
Voordat u de opdracht Uitvoeren voor Eindpunttoegang verwijdert, moet u ervoor zorgen dat er geen andere run-opdrachten zijn voor de server met Arc. U kunt de lijstopdracht gebruiken om alle opdrachten uitvoeren op te halen:
LIST https://management.azure.com/subscriptions/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/
Voorbeeld 5: Een opdracht uitvoeren verwijderen
Als u de opdrachtextensie Uitvoeren niet meer nodig hebt, kunt u deze verwijderen met behulp van de volgende opdracht:
DELETE https://management.azure.com/subscriptions/ aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/EndpointAccessCommand?api-version=2023-10-03-preview
Opdracht Uitvoeren uitschakelen
Als u de opdracht Uitvoeren op servers met Azure Arc wilt uitschakelen, opent u een beheeropdrachtprompt en voert u de volgende opdrachten uit. Deze opdrachten maken gebruik van de configuratiemogelijkheden van de lokale agent voor de Connected Machine-agent in de bloklijst voor extensies.
Windows
azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerwindows"
Linux
sudo azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerlinux"