我正在试验 AKS 和 Azure CLI。所以我的第一个想法是使用 Azure CLI 命令来设置 AKS 集群,效果非常好。下一步是将所有这些不同的命令捆绑到一个 bash 脚本中。通过在脚本中使用变量,我希望让我的生活更轻松,并且在一开始就做到了。直到我到达az aks create
命令,我试图通过--client-secret $AKS_SP_SECRET
和--service-principal $AKS_SP_APP_ID
. 这 2 个变量由 2 个之前的 Azure CLI 命令设置(请参阅脚本)
这总是会导致一个错误,告诉我“提供了无效的客户端密码”。我已经通过回显包含密码值的 $AKS_SP_SECRET 变量来检查变量的值。
这是我目前正在尝试运行的脚本,它总是导致错误告诉我提供的客户端密码无效。
#!/bin/bash
LOCATION="westeurope"
RESOURCEGROUP_NAME="MyResourcegroup"
AKS_NAME="MyCluster"
AKS_SP_NAME='AksServicePrincipal'
# Create a service principal
az ad sp create-for-rbac \
--name http://$AKS_SP_NAME \
--skip-assignment
# Retrieve Service principal APPID and Client Secret
AKS_SP_APP_ID=$(az ad app list --display-name $AKS_SP_NAME --query "[].appId" -o tsv)
AKS_SP_SECRET=$(az ad sp credential reset --name http://$AKS_SP_NAME --query "password" -o tsv)
# Create Azure Kubernetes Cluster
az aks create --resource-group $RESOURCEGROUP_NAME \
--name $AKS_NAME \
--client-secret $AKS_SP_SECRET \
--service-principal $AKS_SP_APP_ID \
--generate-ssh-keys \
--location $LOCATION \
--kubernetes-version 1.13.11 \
如果我将上述脚本拆分为 2 个不同的脚本,并像这样在第二个脚本中设置 AKS_SP_SECRET 变量的值,AKS_SP_PASSWORD=99173ccb-5f2a-4eab-b367-3257fd9627ac
那么我不会收到错误消息,并且一切都按预期工作。
有谁看到我做错了什么?是否可以通过 bash 脚本中的变量传递秘密?
亲切的问候。