az keyvault secret set处理特殊字符开头密钥值报错求助
解决方法
1. 先修正YAML参数里的密钥值定义
YAML语法里#是注释符号,你直接写secretValue: #testvalue时,#testvalue会被当成注释,导致实际传递的密钥值为空。必须用单引号把值包裹起来,让YAML识别为完整字符串:
parameters: - name: info displayName: Information type: object default: - subName: Sub1 kvs: - kvName: kv1 secretName: test-secret secretValue: '#testvalue' # 给值加上单引号
2. 在bash脚本里正确处理密钥值
bash中#同样是注释标记,即使YAML传对了值,直接展开会被bash截断成注释。要给--value的参数套上单引号,确保bash完整读取整个值:
inlineScript: | # Case statements for schemas needed to be stored, encrypted or both case ${{ parameters.infoCategory }} in # 原脚本里的参数名写错了,要对应定义的infoCategory Cat1) # Storing schema password az keyvault secret set --name ${{keyvault.secretName}} --vault-name ${{keyvault.kvName}} --value '${{keyvault.secretValue}}' --content-type 'content' --expires ${{parameters.expiryDate}} echo "${{parameters.expiryDate}}" # 原脚本里的$expiryDate未定义,要直接用参数变量 ;; esac
备选方案:通过bash变量传递值
如果上面的方式还是有问题,可以先把密钥值赋值给bash变量,再传递给az命令,避免直接解析的问题:
inlineScript: | # Case statements for schemas needed to be stored, encrypted or both case ${{ parameters.infoCategory }} in Cat1) # Storing schema password SECRET_VAL='${{keyvault.secretValue}}' az keyvault secret set --name ${{keyvault.secretName}} --vault-name ${{keyvault.kvName}} --value "$SECRET_VAL" --content-type 'content' --expires ${{parameters.expiryDate}} echo "${{parameters.expiryDate}}" ;; esac
内容的提问来源于stack exchange,提问作者eliew
相关产品推荐
相关产品推荐

