无法准确理解Windows环境中Azure CLI的优点.
它是针对想要从Linux环境中管理Azure IAAS的受众吗?
我认为Powershell核心将成为非Windows管理员的方式.Powershell Core是不是会在所有平台上移植得很好,为跨平台的受众提供服务?
简而言之,是否值得学习Azure CLI?
我的Azure帐户中有3个订阅,我需要更改默认订阅.当我运行命令时:
azure account list
Run Code Online (Sandbox Code Playgroud)
我有这个输出:
我试图以这种方式更改默认或当前订阅,没有结果......
azure config set subscription {{MyIdSubscription}}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢.
我尝试使用秘密从ACR中提取图像,但我无法做到.
我使用azure cli命令创建了资源:
az login
az provider register -n Microsoft.Network
az provider register -n Microsoft.Storage
az provider register -n Microsoft.Compute
az provider register -n Microsoft.ContainerService
az group create --name aksGroup --location westeurope
az aks create --resource-group aksGroup --name aksCluster --node-count 1 --generate-ssh-keys -k 1.9.2
az aks get-credentials --resource-group aksGroup --name aksCluster
az acr create --resource-group aksGroup --name aksClusterRegistry --sku Basic --admin-enabled true
Run Code Online (Sandbox Code Playgroud)
之后我登录并成功将图像推送到本地机器创建的ACR.
docker login aksclusterregistry.azurecr.io
docker tag jetty aksclusterregistry.azurecr.io/jetty
docker push aksclusterregistry.azurecr.io/jetty
Run Code Online (Sandbox Code Playgroud)
下一步是创建一个秘密:
kubectl create secret docker-registry secret --docker-server=aksclusterregistry.azurecr.io …Run Code Online (Sandbox Code Playgroud) 我在 Windows 10 的 PowerShell 中的 bash 中使用 Azure CLI。我坐在公司代理后面。我的目标是自动化 Azure 资源的部署和设置。
一些 Azure CLI 命令工作得非常好:我可以运行 az login、更改默认订阅、列出位置、资源组、资源组内的资源,我什至可以运行 shell 脚本来部署诸如 Key Vault 之类的资源。
但是,当我尝试在 Key Vault 中列出密钥或机密,或者创建密钥/机密时,我得到以下信息:
请求中发生错误。, SSLError: HTTPSConnectionPool(host='xxxxxx.vault.azure.net', port=443): Max retries exceeded with url: /secrets?api-version=7.0 (Caused by SSLError(SSLError("bad握手: 错误([('SSL 例程', 'tls_process_server_certificate', '证书验证失败')],)",),))
我在此处提供的示例适用于 Key Vault,但我在使用其他类型的资源时遇到了相同的错误,因此我认为 Key Vault 不是问题所在。
将--debug参数附加到命令时,我可以看到错误来自 Python 库之一:
urllib3.connectionpool : 在连接被 'SSLError(SSLError("bad handshake: Error([('SSLroutines')' , 'tls_process_server_certificate', '证书验证失败')],)",),)': /secrets?api-version=7.0
我已经尝试了以下提供的建议:
包括export AZURE_CLI_DISABLE_CONNECTION_VERIFICATION=anycontent禁用证书检查(不推荐)和export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt使 Python …
尝试az cli使用服务主体执行登录并抛出错误说明No subscriptions found for <Service_Principal_AppId>. If this is expected, use '--allow-no-subscriptions'. 此代码以前运行良好,但现在似乎不再起作用。正在使用的命令行如下:
$sp_appid = (Get-AzureRmADServicePrincipal -DisplayName $spDisplayName).ApplicationId.Guid
$sp_secret = (Get-AzureKeyVaultSecret -VaultName $kvName -Name $appKeySecretName).SecretValueText
az login --service-principal --username $sp_appid --password $sp_secret --tenant $tenant_Id
Run Code Online (Sandbox Code Playgroud)
我验证了Contributor在订阅级别为服务主体分配了角色。
可以在subnet.id节点中提取名称, 如下所示
$ az network nsg show -g my_group -n My_NSG --query "subnets[].id" -o json
[
"/subscriptions/xxxxxx2/resourceGroups/my_group/providers/Microsoft.Network/virtualNetworks/MY-VNET/subnets/My_SUBNET"
]
Run Code Online (Sandbox Code Playgroud)
我知道有一种叫做搜索的东西应该模仿子字符串(此处解释 https://github.com/jmespath/jmespath.jep/issues/5),但它对我不起作用。
$ az network nsg show -g my_group -n My_NSG --query "subnets[].search(id,'@[120:-1]')" -o json
InvalidArgumentValueError: argument --query: invalid jmespath_type value: "subnets[].search(id,'@[120:-1]')"
CLIInternalError: The command failed with an unexpected error. Here is the traceback:
Unknown function: search()
Run Code Online (Sandbox Code Playgroud)
谢谢
编辑 :
我实际上运行的请求包括其他元素,这就是为什么在新行中使用带有 bash 的子字符串不是我想要的。这是完整查询的示例:
az network …Run Code Online (Sandbox Code Playgroud) 如何az login在 C# 控制台应用程序中实现 (Azure CLI) 体验?
在这种情况下,将打开浏览器窗口,用户进行身份验证,然后他就可以访问私有资源。我的猜测是身份验证令牌存储在某个地方,但是在哪里呢?会话变量、文件..?
更新
我发现有一个文件夹~/.azure存储了相关信息。所以问题更多地集中在第一部分(启动浏览器并获取结果令牌)。
我想知道我的 Azure VM(Windows + Linux)是 Gen1 还是 Gen2。az cli理想情况下,我希望通过或从实际服务器本身让它工作。我已经尝试过az vm list -g RG-Name -d,但它并没有真正显示此信息。有谁知道如何获得这个?
我在 Jenkins 构建中使用 Azure Cli 将我的nodejsazure 函数部署到 azure。我需要 Kudu 构建 npm 包以减少 Jenkins 端的部署时间。
我有SCM_DO_BUILD_DURING_DEPLOYMENT = trueAzure Functions 配置,但 Azure Cli 在部署工件时明确将其设置为 false!因此,该应用程序将被排除在没有node_modules文件夹的情况下。
我正在使用类似于以下的命令:
az functionapp deployment source config-zip --src artifacts.zip --resource-group MyGroup --subscription MySubscription --name MyFunction --slot pre
知道如何修复它吗?
我为实现这一非常简单的任务而疯狂。我需要在Visual Studio Team Services上的Azure CLI任务中设置一个Output Variable,因为Release定义中的下一个任务将根据该变量的值执行。
我写了这个简单的代码
call az extension add --name azure-cli-iot-ext
call echo ##vso[task.setvariable variable=iotEdgeExists;]$(az iot hub query -n $(iotHub) -q "select * from devices.modules where devices.deviceId ='$(iotEdge)'")
Run Code Online (Sandbox Code Playgroud)
确实有效,但不是预期的,实际上,当我在下一个Azure CLI任务中读取Ouput变量并尝试在屏幕上打印时,我得到了命令字符串而不是输出...
call echo"$(az iot hub query -n <IOT_HUB> -q "select * from devices.modules where devices.deviceId ='<IOT_EDGE>'")"
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
azure azure-cli azure-devops azure-pipelines-release-pipeline azure-cli2
azure-cli2 ×10
azure ×8
azure-cli ×5
powershell ×2
az ×1
azure-devops ×1
azure-pipelines-release-pipeline ×1
c# ×1
docker ×1
jmespath ×1
kubernetes ×1
slice ×1
ssl ×1
substring ×1