programing

Git Bash의 Azure CLI

testmans 2023. 6. 4. 10:20
반응형

Git Bash의 Azure CLI

테스트 배포를 실행하기 위해 윈도우즈에서 bash(sh) 스크립트를 사용하려고 합니다.bash의 복사본을 갖도록 gitbash 콘솔에서 스크립트를 실행하고 있지만, 이렇게 하면 azure clie를 사용할 수 없습니다(즉, azure 명령을 찾을 수 없음).GitBash에서 Azure CLI를 작동시키는 방법(다른 곳에 설치하는 것으로 가정함) 또는 bash를 사용하는 다른 방법으로 변경해야 하는지 아는 사람이 있습니까?

때때로 윈도우즈 gitbash의 명령에 .cmd를 추가해야 합니다.또한, Azure-Cli를 설치하는 또 다른 방법은 Chocolaty https://chocolatey.org/ 를 통해서입니다.

Azure-Cli를 설치한 후 다음 명령을 시도합니다.

az.cmd --version

mscrivo 반향 PowerShell이 아닌 CMD에서 아래 라인을 실행할 수 있습니다(elevated/admin).

echo "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin\az.cmd" $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} ${14} ${15} > "C:\Program Files\Git\mingw64\bin\az" 

이제 Gitbash에서 실행할 수 있습니다.

az --version

Artberri는 논평에서 최고의 해결책에 주목했습니다.

다을추다니에 합니다.%USERPROFILE%\.bashrc또는%USERPROFILE%\.profile

alias az='az.cmd'

그러나 zin bash 스크립트를 사용하려면 좀 더 과감한 방법이 필요합니다. cmd 프롬프트에서 다음을 실행하십시오.

echo "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin\az.cmd" $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} ${14} ${15} > "%SYSTEMROOT%\az"

그러면 기본적으로 윈도우즈 폴더에 passthrough az 명령이 생성되어 어디에서나 실행되고 매개 변수를 az.cmd로 전달합니다.

Gitbash를 사용하는 경우 다음 디렉토리로 이동합니다.

C:\Program Files\Git\etc\profile.d

Gitbash 디렉터리의 Windows 탐색기

aliases.sh그런 다음 새 별칭을 추가합니다.az아래와 같이:

alias az='az.cmd'

가명의 예

CLI를 컴퓨터에 설치해야 합니다.그렇게 하는 방법은 여러 가지가 있습니다.

나는 노드의 친구입니다.JS 그래서 나는 설치를 위해 npm을 사용합니다.

npm install -g azure-cli

자세한 내용은 여기에서 확인하십시오. https://www.npmjs.com/package/azure-cli

하지만 다른 방법으로도 할 수 있습니다.매우 좋은 방법은 도커를 사용하는 것입니다.Azure CLI 버전이 미리 설치된 Microsoft의 컨테이너가 있습니다.

docker run -it --name azure microsoft/azure-cli

Ubuntu bash가 설치된 Windows 10에서는 다음을 사용할 수 있습니다.

echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ wheezy main" | \
     sudo tee /etc/apt/sources.list.d/azure-cli.list

sudo apt-key adv --keyserver packages.microsoft.com --recv-keys 417A0893
sudo apt-get install apt-transport-https
sudo apt-get update && sudo apt-get install azure-cli

아니면 파이썬 마니아 런으로서.

pip install --user azure-cli

가장 중요한 것은 경로 변수를 통해 "az"/"az.bat" 또는 "azure" 빈을 사용할 수 있다는 것입니다.

즉, 윈도우즈용 Azure CLI는 윈도우즈용 Git Bash와 호환되지 않습니다.

https://github.com/Azure/azure-cli/issues/3445

의 신의에서.~/bin에서는 디렉리터(윈도우즈 서의미))를 의미합니다.c:\Users\<username>\bin 라는 이름의 을 방금 az매개 변수:

"C:/Program Files (x86)/Microsoft SDKs/Azure/CLI2/python.exe" -IBm azure.cli "$@"

다음 을 실행 파일로 .chmod a+x az

내용은 az.cmd에서 "빌려온" 것입니다.

이전에 언급한 별칭 접근 방식을 시도할 때 긴 명령에 문제가 있었고, 많은 매개 변수가 오류를 던졌습니다. ""C:\Program'은 내부 또는 외부 명령, 작동 가능한 프로그램 또는 배치 파일로 인식되지 않습니다."

편집:

저는 WLS를 통해 우분투 사용을 종료했습니다.az, terraform, kubectl, istioctl과 같은 모든 도구에 사용됩니다.az 도구는 대화형 모드에서도 잘 실행됩니다.

그래서 저는 Azure DevOps Linux 및 Windows(gitbash) 빌드 에이전트에서 bash 셸 스크립트에서 동일한 az 명령을 실행하여 두 유형의 에이전트에서 동일한 코드를 공유할 수 있는 방법을 찾고 있습니다.이 기능은 윈도우즈 10의 Gitbash 셸에서도 작동합니다.더 긴 답변은 다음과 같습니다. Azure DevOps 빌드 파이프라인은 vnet 및 방화벽으로 보호할 Key Vault에서 암호를 가져올 없습니다.

요점은 다음과 같습니다.

if [[ $(uname -s) == "Linux" ]]; then
    azcmd="az"
else
    # If we're in a bash shell on Windows, az commands don't work, but we can call the az.cmd batch file directly from git Bash if we can find it...
    azcmd=$(where az.cmd)
fi

# Remember to specify CIDR /32 for removal
"$azcmd" keyvault network-rule remove -n <MyKeyVault> --ip-address 50.1.1.1/32

기본적으로 그냥 대체합니다."$azcmd"당신이 보통 사용하는 곳이라면 어디든.az일단 부트스트랩 코드가 실행되면.

방식은 Scripts 를 Azure CLI Scripts 이었습니다.$PATH 내에 ~/.bashrc를 일파로 후. 그러나 Azure CLI를 업데이트한 후2.2.0 이 방식은 다음했습니다: MSI " " 통 접 방 이 식 오 시 습 했 니 작 다 실 기 하 패 함 께 와 류 를 음 다 해 이 근 ▁via : 니 다 습 ▁started 했 ▁with ▁error ▁msi ▁this ▁approach ▁this

C:\Program: 'Files' 파일을 열 수 없습니다: [Errno 2] 해당 파일 또는 디렉터리가 없습니다.

그래서 이 문제를 해결하기 위해, 나는 나의$PATH안에~/.bashrc포하다를 ~/bin 파일을 만들었습니다.~/bin/az(하는 것을 잊지 마chmod 0755 파일파일 이름):

#!/usr/bin/env bash

AZURE_CLI_PATH="/c/Program Files (x86)/Microsoft SDKs/Azure/CLI2"

export PATH="${PATH}:${AZURE_CLI_PATH}:${AZURE_CLI_PATH}/Scripts"
export PYTHONPATH="${AZURE_CLI_PATH}/src"
export PYTHON_CMD="$(which python)"

winpty "${PYTHON_CMD}" -m 'azure.cli' "${@}"

GIT Bash를 실행할 수 .az실행:

$ az version
This command is in preview. It may be changed/removed in a future release.
{
  "azure-cli": "2.2.0",
  "azure-cli-command-modules-nspkg": "2.0.3",
  "azure-cli-core": "2.2.0",
  "azure-cli-nspkg": "3.0.4",
  "azure-cli-telemetry": "1.0.4",
  "extensions": {}
}

MSI 설치 관리자를 전혀 사용하지 마십시오.Azure CLI는 Python에서 구현되므로 @blndev가 작성한 대로 Python 설치 방법을 사용합니다.대신 이쪽으로az.cmd은 신은당을 얻습니다.az.bat그리고.az셸 스크립트이며 설치 경로에 공백이 포함되지 않습니다.

pip install --user azure-cli

이 방법에 대한 자세한 내용은 https://blogs.msdn.microsoft.com/brijrajsingh/2017/03/02/installing-azure-cli-2-0-on-windows/ 에서 확인할 수 있습니다.

심볼릭 링크는 대부분 작동했지만 일부 명령은 여전히 실패하고 있습니다.

az dls fs access set-entry ...
'C:\Program' is not recognized as an internal or external command, operable program or batch file

@mscrivo의 솔루션을 사용해 보았습니다.그러나 셸 스크립트에서 az 명령을 사용하는 경우 경로의 공백으로 인해 여전히 문제가 발생합니다.따라서 다음을 포함하는 %SYSTEMROOT%에 azproxy.cmd를 생성했습니다.

@echo off
"C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin\az.cmd" %*

그런 다음 해당 파일에 대한 mklink를 생성합니다.

mklink "%SYSTEMROOT%\az" "SYSTEMROOT%\azproxy.cmd"

PS 확장 값 %SYSTEMROOT%에는 물론 공백이 포함되어서는 안 됩니다.

언급URL : https://stackoverflow.com/questions/42972086/azure-cli-in-git-bash

반응형