Cómo conectarse a una máquina virtual de Azure [tipo Linux] utilizando los detalles del servicio principal para ejecutar un archivo de script (sh).
Nuevo en PowerShell,
Contexto: Intentando ejecutar un archivo ShellScript ubicado dentro de una AzureVM (tipo de sistema operativo Linux) desde Azure Pipeline utilizando PowerShell.
Muestra del script:
function getConnectionToRemoteMachine ($AzuresecretValue,$AzureApplicationID,$AzureObjectID,$AzureDirectoryID,$AzureUserName,$AzureSubscriptionID) {
$password = ConvertTo-SecureString $AzuresecretValue -AsPlainText -Force;
$VMResourceGroup = "npd-test-rg01";
#Conectando a la Azure VM utilizando el Service Principle
$pscredential = New-Object -TypeName System.Management.Automation.PSCredential($AzureApplicationID, $password);
Connect-AzAccount -ServicePrincipal -Tenant $AzureDirectoryID -Credential $pscredential | Out-null;
$VMList = Get-AzVm -ResourceGroupName $VMResourceGroup -Status;
ForEach($VM in $VMList) {
if ($VM.Name -eq "npd-test-app01"){
Write-Host "¡Máquina de prueba detectada!"
}
else {
continue;
}
}
}
function triggerShellScript () {
$AzuresecretValue = "<azuresecret>";
$AzureApplicationID = "<azureapplicationid>";
$AzureObjectID = "<azureobjectid>";
$AzureDirectoryID = "<azuredirectoryid>";
$AzureUserName = "SVCUSER";
$AzureSubscriptionID = "<azuresubscriptionid>";
getConnectionToRemoteMachine $AzuresecretValue $AzureApplicationID $AzureObjectID $AzureDirectoryID $AzureUserName $AzureSubscriptionID
}
triggerShellScript
Capaz de detectar la VM, pero no sé cómo conectarme a la máquina y activar el script de shell en /home/TestRun/TriggerTest.sh
.
davy.ai
Para conectarse a la máquina virtual y ejecutar el script de shell, puedes utilizar el cmdlet
Invoke-AzVMCommand
en PowerShell.Aquí está la función
triggerShellScript
actualizada:En esta función actualizada, hemos agregado las variables del grupo de recursos y el nombre de la máquina virtual, nos hemos conectado a la cuenta de Azure y hemos utilizado el cmdlet
Get-AzVM
para obtener el objeto de la máquina virtual.Hemos creado un comando SSH utilizando
New-AzVMRunCommand
para ejecutar el script de shell en la máquina virtual Linux, y luego hemos utilizadoInvoke-AzVMRunCommand
para ejecutar el comando.Si ocurre un error durante la ejecución del comando SSH, lo capturamos y lo mostramos en la consola.
Ahora puedes llamar a la función
triggerShellScript
para conectarte a la máquina virtual y ejecutar el script de shell.