【问题标题】:How to connect to Azure VM [Linux Type] using service principal details to execute a script(sh) file如何使用服务主体详细信息连接到 Azure VM [Linux 类型] 以执行脚本(sh)文件
【发布时间】:2022-01-24 16:17:03
【问题描述】:

PowerShell 新手,

上下文:尝试使用 PowerShell 从 Azure Pipeline 执行位于 AzureVM(操作系统类型 Linux)内的 ShellScript 文件。

脚本示例:

function getConnectionToRemoteMachine ($AzuresecretValue,$AzureApplicationID,$AzureObjectID,$AzureDirectoryID,$AzureUserName,$AzureSubscriptionID) {
        
        $password =  ConvertTo-SecureString $AzuresecretValue -AsPlainText -Force; 
        $VMResourceGroup = "npd-test-rg01";
        #Connecting to the Azure VM using the 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 "Test Machine traced!!!"
                }
              else {
                continue;
              }

        }

}

function triggerShellScript () {
        $AzuresecretValue    = "<AzureSecret>";
        $AzureApplicationID  = "<AzureApplicationID>";
        $AzureObjectID       = "<AzureObjectID>";
        $AzureDirectoryID    = "<AzureDirectoryID>";
        $AzureUserName       = "SVCUSER";
        $AzureSubscriptionID = "<AzureSubscriptionID>";
        getConnectionToRemoteMachine $AzuresecretValue $AzureApplicationID $AzureObjectID $AzureDirectoryID $AzureUserName $AzureSubscriptionID

}

triggerShellScript

能够追踪VM,但不知道如何连接机器并触发/home/TestRun/TriggerTest.sh下的shell脚本

【问题讨论】:

  • 嗨 Rahul,请务必让我检查它是否有效,然后我一定会接受它作为答案。

标签: azure powershell azure-vm


【解决方案1】:

您可以使用 Azure Cloud Shell 在 OS Linux 中运行 Shell 脚本。

第 1 步:使用命令 code script.sh 创建文件 script.sh 并粘贴命令并保存并关闭编辑器。

第 2 步:使用以下命令在您的 VM 中运行上述脚本。

Invoke-AzVMRunCommand -ResourceGroupName '<myResourceGroup>' -Name '<myVMName>' -CommandId 'RunShellScript' -ScriptPath '<pathToScript>'

参考:https://docs.microsoft.com/en-us/azure/virtual-machines/linux/run-command

【讨论】:

  • 这是试图在我的本地机器上执行测试并在本地搜索相同的脚本。
  • 不,srcipt 已上传到 cloudshell,然后我在我的 Azure VM 上执行脚本。
  • 如果您在运行脚本时遇到任何困难或疑问,请告诉我。
  • 对于这里的混乱,我深表歉意,我想从 azure devops 在远程机器上执行一个 shell 脚本(特别是它将使用代理来运行,所以这是我只能运行该脚本的演练在 Linux 机器上,无法将其上传到 cloudshell,我尝试使用 Invoke-AzureRmVMRunCommand 但获取方法 'get_SerializationSettings')
  • 在 cloudshell 中键入代码 script.sh 它将提示一个编辑器,只需粘贴您想要在 Linux 机器上执行的代码,然后保存并关闭并使用我在回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-03
  • 2020-01-21
  • 2019-02-21
  • 2015-08-28
  • 1970-01-01
  • 2012-08-04
  • 2020-02-18
相关资源
最近更新 更多