在bash脚本中执行az aks create --client-secret <secret>命令时,如何传递服务主体的客户端密钥

时间:2019-11-02 20:02:59

标签: azure-aks azure-cloud-shell

我正在尝试AKS和Azure CLI。因此,我的第一个想法是使用Azure CLI命令设置AKS群集,一切顺利。下一步是将所有这些不同的命令捆绑到一个bash脚本中。通过在脚本中使用变量,我希望让生活变得更轻松,并且一开始就做到了。直到我到达az aks create命令,然后才试图传递--client-secret $AKS_SP_SECRET--service-principal $AKS_SP_APP_ID。这两个变量是由两个以前的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_PASSWORD=99173ccb-5f2a-4eab-b367-3257fd9627ac在第二个脚本中设置AKS_SP_SECRET变量的值,那么我不会收到错误,一切都会按预期进行。

有人看到我在做什么错吗?并且可以通过bash脚本中的变量传递秘密吗?

亲切的问候。

1 个答案:

答案 0 :(得分:0)

根据我的经验,大多数命令是正确的,但是您最好对其中一些命令进行一些更改,因此最终,脚本将如下所示:

#!/bin/bash

LOCATION="westeurope"
RESOURCEGROUP_NAME="MyResourcegroup"
AKS_NAME="MyCluster"
AKS_SP_NAME='AksServicePrincipal'

# Create a service principal
AKS_SP_APP_ID=$(az ad sp create-for-rbac --name $AKS_SP_NAME --skip-assignment --query appId)

# Retrieve Service principal APPID and Client Secret
AKS_SP_SECRET=$(az ad sp credential reset --name $AKS_SP_NAME --query "password")

# 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