如何从devops部署阶段检索云代工厂oauth令牌以设置自动缩放?

时间:2017-06-21 07:00:56

标签: ibm-cloud autoscaling devops-services

我正试图从devops管道部署阶段获取云代工厂oauth-token:

...
cf push $CF_APP
...

accessToken=$(cf oauth-token | grep bearer | sed -e s/bearer/Bearer/g)
echo accessToken=$accessToken
...
# use token in Auto Scaling API call ...
curl $createPolicyUrl -X 'PUT' -H 'Content-Type:application/json' \
     -H 'Accept:application/json' \
     -H "Authorization:$accessToken" \
     --data-binary @${policyJson} \
     -s -o response.txt -w '%{http_code}\n'

echo命令的输出为:

accessToken=

如何检索oauth令牌?

请注意cf push在脚本ecen中正常工作,尽管在部署脚本中没有执行cf login。因此,我假设cf oauth-token也不需要登录。这是一个有效的假设吗?

更新:我在部署脚本中添加了cf login

...
cf push $CF_APP
...

cf login
accessToken=$(cf oauth-token | grep bearer | sed -e s/bearer/Bearer/g)
echo accessToken=$accessToken
...

输出:

cf login not allowed.

另请参阅我的similar question有关在devops部署阶段重新配置可用性监视的信息。

2 个答案:

答案 0 :(得分:3)

确保在运行cf login命令之前执行cf oauth-token登录。还要确保双引号"Authorization:$accessToken",以便替换变量。

更新:看起来您可以通过$CF_TOKEN环境变量从脚本中访问oauth-token。令牌与管道的所有者相关联,而不是运行当前管道阶段的用户。

答案 1 :(得分:0)

你能试试吗

accessToken=$(cf oauth-token)
CF_TOKEN=$(echo $accessToken | grep “Bearer*” | perl -wpe ‘s/.*(Bearer .+)/$1/‘)
CF_TOKEN should now have the token value