실행 명령 작업을 사용하여 Linux VM에서 스크립트 실행
적용 대상: ✔️ Linux VM ✔️ 유연한 확장 집합
명령 실행 기능은 VM(가상 머신) 에이전트를 사용하여 Azure Linux VM 내에서 셸 스크립트를 실행합니다. 이러한 스크립트는 일반 머신 또는 애플리케이션 관리에 사용할 수 있습니다. 이를 통해 VM 액세스 및 네트워크 문제를 신속하게 진단 및 수정하고 VM을 정상 상태로 되돌릴 수 있습니다.
이점
여러 가지 방법으로 가상 머신에 액세스할 수 있습니다. 명령 실행은 VM 에이전트를 사용하여 원격으로 가상 머신에서 스크립트를 실행할 수 있습니다. 명령 실행은 Linux VM용 Azure Portal, REST API 또는 Azure CLI를 통해 사용합니다.
이 기능은 가상 머신 내에서 스크립트를 실행하려는 모든 시나리오에서 유용합니다. 네트워크 또는 관리 사용자 구성이 잘못되어 RDP 또는 SSH 포트가 열려 있지 않은 가상 머신의 문제를 해결 및 수정하는 유일한 방법 중 하나입니다.
필수 조건
지원되는 Linux 배포판
Linux 배포판 | x64 | ARM64 |
---|---|---|
Alma Linux | 9.x+ | 9.x+ |
Debian | 10개 이상 | 11.x+ |
Flatcar Linux | 3374.2.x+ | 3374.2.x+ |
Azure Linux | 2.x | 2.x |
openSUSE | 12.3+ | 지원되지 않음 |
Oracle Linux | 6.4+, 7.x+, 8.x+ | 지원되지 않음 |
Red Hat Enterprise Linux | 6.7+, 7.x+, 8.x+ | 8.6+, 9.0+ |
Rocky Linux | 9.x+ | 9.x+ |
SLES | 12.x+, 15.x+ | 15.x SP4+ |
Ubuntu | 18.04+, 20.04+, 22.04+ | 20.04+, 22.04+ |
제한 사항
다음 제한은 실행 명령을 사용할 때 적용됩니다.
- 출력은 마지막 4096바이트로 제한됩니다.
- 스크립트를 실행하는 최소 시간은 약 20초입니다.
- 기본적으로 스크립트는 Linux에서 관리자 권한으로 실행됩니다.
- 한 번에 한 스크립트씩 실행할 수 있습니다.
- 정보를 요청하는 스크립트(대화형 모드)는 지원되지 않습니다.
- 실행 중인 스크립트는 취소할 수 없습니다.
- 스크립트를 실행할 수 있는 최대 시간은 90분입니다. 이 시간 이후에 스크립트 시간이 초과됩니다.
- 스크립트의 결과를 반환하려면 VM에서의 아웃바운드 연결이 필요합니다.
참고
제대로 작동하려면 실행 명령이 Azure 공용 IP 주소에 연결(포트 443)되어야 합니다. 확장이 이러한 엔드포인트에 대해 액세스 권한이 없는 경우 스크립트는 성공적으로 실행되지만 결과를 반환하지는 않습니다. 가상 머신에서 트래픽을 차단하는 경우 AzureCloud
태그를 사용하여 Azure 공용 IP 주소로 트래픽을 허용하도록 서비스 태그를 사용할 수 있습니다.
사용 가능한 명령
이 표에서는 Linux VM에 대해 사용할 수 있는 명령 목록을 보여줍니다. RunShellScript 명령을 사용하여 원하는 모든 사용자 지정 스크립트를 실행할 수 있습니다. Azure CLI 또는 PowerShell을 사용하여 명령을 실행하는 경우 --command-id
또는 -CommandId
매개 변수에 대해 제공하는 값은 다음 목록 값 중 하나여야 합니다. 사용할 수 있는 명령이 아닌 값을 지정하면 다음과 같은 오류가 표시됩니다.
The entity was not found in this Azure location
이름 | 설명 |
---|---|
RunShellScript | Linux 셸 스크립트를 실행합니다. |
ifconfig | 모든 네트워크 인터페이스의 구성을 가져옵니다. |
Azure CLI
다음 예제는 az vm run-command 명령을 사용하여 Azure Linux VM에서 셸 스크립트를 실행합니다.
az vm run-command invoke -g myResourceGroup -n myVm --command-id RunShellScript --scripts "apt-get update && apt-get install -y nginx"
참고 항목
다른 사용자로 명령을 실행하려면 sudo -u
를 입력하여 사용자 계정을 지정합니다.
Azure Portal
Azure Portal의 VM으로 이동하여 왼쪽 메뉴의 작업 아래에서 실행 명령을 선택합니다. VM에서 실행에 사용할 수 있는 명령 목록이 표시됩니다.
실행할 명령을 선택하세요. 명령 중 일부에는 선택 또는 필수 입력 매개 변수가 있을 수 있습니다. 이러한 명령의 경우 매개 변수는 입력 값을 제공하기 위한 텍스트 필드로 표시됩니다. 각 명령의 경우 스크립트 보기를 확장하여 실행되는 스크립트를 볼 수 있습니다. RunShellScript는 사용자 고유의 사용자 지정 스크립트를 제공할 수 있으므로 다른 명령과 다릅니다.
참고 항목
기본 제공된 명령은 편집할 수 없습니다.
명령을 선택한 후 실행을 선택하여 스크립트를 실행합니다. 스크립트가 완료되면 출력 창에 출력 및 오류가 반환됩니다. 다음 스크린샷은 ifconfig 명령을 실행하는 작업의 예제 출력을 보여줍니다.
PowerShell
다음 예제에서는 Invoke-AzVMRunCommand cmdlet을 사용하여 Azure VM에서 PowerShell 스크립트를 실행합니다. cmdlet에서는 -ScriptPath
매개 변수에서 참조되는 스크립트가 cmdlet이 실행되는 위치의 로컬이어야 합니다.
Invoke-AzVMRunCommand -ResourceGroupName '<myResourceGroup>' -Name '<myVMName>' -CommandId 'RunShellScript' -ScriptPath '<pathToScript>' -Parameter @{"arg1" = "var1";"arg2" = "var2"}
명령 실행에 대한 액세스 제한
실행 명령을 나열하거나 명령의 세부 정보를 표시하려면 구독 수준에서 Microsoft.Compute/locations/runCommands/read
권한이 필요합니다. 기본 제공 Reader 역할 및 상위 수준에 이 권한이 있습니다.
명령을 실행하려면 Microsoft.Compute/virtualMachines/runCommands/write
권한이 필요합니다. Virtual Machine 기여자 역할 및 상위 수준에 이 권한이 있습니다.
기본 제공 역할 중 하나를 사용하거나 사용자 지정 역할을 생성하여 실행 명령을 사용할 수 있습니다.
작업 실행 명령 Linux 문제 해결
Linux 환경의 작업 실행 명령 문제를 해결할 때는 일반적으로 다음 디렉터리에 있는 handler 로그 파일(자세한 내용은 /var/log/azure/run-command-handler/handler.log
)을 참조하세요.
알려진 문제
Linux 작업 실행 명령 로그에는 작업 실행 명령 Windows 로그와 비교할 때 몇 가지 주목할 만한 차이점이 있습니다.
- 시퀀스 번호는 로그의 각 줄과 함께 'seq=#'으로 보고됩니다.
- 이 작업이 실행 중일 때 Windows만 명령을 실행하기 때문에
Awaiting completion...
을 포함하는 줄은 없습니다. Command existed with code: #
줄은 작업 실행 명령 Windows 로깅에도 존재합니다.
작업 실행 명령 제거
작업 실행 명령 Windows 확장을 제거해야 하는 경우 Azure PowerShell 및 CLI에 대한 아래 단계를 참조하세요.
다음 제거 예제에서 rgname 및 vmname을 관련 리소스 그룹 이름 및 가상 머신 이름으로 바꿉니다.
Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RemoveRunCommandLinuxExtension'
az vm run-command invoke --command-id RemoveRunCommandLinuxExtension --name vmname -g rgname
참고 항목
실행 명령을 다시 적용하면 확장이 자동으로 설치됩니다. 확장 제거 명령을 사용하여 확장과 관련된 문제를 해결할 수 있습니다.
다음 단계
VM에서 원격으로 스크립트 및 명령을 실행하는 다른 방법을 알아보려면 Linux VM에서 스크립트 실행을 참조하세요.