azure-aks - 执行 az aks create --client-secret 时如何传递服务主体的客户端密码bash 脚本中的命令
问题描述
我正在试验 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 脚本中的变量传递秘密?
亲切的问候。
解决方案
根据我的经验,大多数命令都是正确的,但其中一些你最好做一些改变,所以最后,脚本如下所示:
#!/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
推荐阅读
- php - How to Filter Content passed to a WordPress Shortcode
- c++ - Using auto to a variable assigned ot a function that return const ref
- python - how do I loop backward for 4 values and do it for next values in a list?
- python-3.x - how to replace decorator pyqtSignature for pyside6
- node.js - Getting a "404 Not Found" when I attempt to "Run Debug Application" of React app in PhpStorm
- typescript - ESLint 问题:Typescript 文件中的文件中不允许使用 JSX
- linux - 在第二个变量linux之后获取行中的单词
- google-sheets - Google Sheets API 的权限较少
- php - 用 Yii 框架连接 SQL Server
- python-3.x - 配置:错误:找不到python3.7解释器