es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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:

    function triggerShellScript () {
        $AzuresecretValue    = "<azuresecret>";
        $AzureApplicationID  = "<azureapplicationid>";
        $AzureObjectID       = "<azureobjectid>";
        $AzureDirectoryID    = "<azuredirectoryid>";
        $AzureUserName       = "SVCUSER";
        $AzureSubscriptionID = "<azuresubscriptionid>";
        $VMResourceGroup     = "npd-test-rg01";
        $VMName              = "npd-test-app01";
    
        $password =  ConvertTo-SecureString $AzuresecretValue -AsPlainText -Force; 
        $pscredential = New-Object -TypeName System.Management.Automation.PSCredential($AzureApplicationID, $password);
        Connect-AzAccount -ServicePrincipal -Tenant $AzureDirectoryID -Credential $pscredential | Out-null;
    
        $vm = Get-AzVM -Name $VMName -ResourceGroupName $VMResourceGroup
    
        # Usamos SSH para ejecutar el script de shell en la máquina virtual Linux
        $sshCommand = New-AzVMRunCommand `
            -ResourceGroupName $VMResourceGroup `
            -Name $vm.Name `
            -CommandId 'RunShellScript' `
            -ScriptPath '/home/TestRun/TriggerTest.sh'
    
        Invoke-AzVMRunCommand `
            -ResourceGroupName $VMResourceGroup `
            -Name $vm.Name `
            -CommandId $sshCommand.CommandId `
            -ErrorVariable error
        if ($error) {
            Write-Error $error
        }
    }
    

    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 utilizado Invoke-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.

Comments are closed.