在 Ansible/Shell 中提取 CloudFoundry UAAC 访问令牌

Extract CloudFoundry UAAC Access Token in Ansible/Shell

这里有以下文档: https://docs.pivotal.io/pivotalcf/1-10/customizing/ops-man-api.html

运行之后:

$ uaac target https://OPS-MAN-FQDN/uaa
$ uaac token owner get [options]
$ uaac contexts

我通过 access_token 字段集获取上下文(也存储在 ~/.uaac.yml 中)

如何使用 awk、gawk 等子字符串工具以编程方式从 uaac context(如果不是从 ~/.uaac.yml)中提取 access_token

我正尝试在 ansible 中执行此操作,但 shell 可以正常工作。

如果您想知道,stdout 中 uaac context 的输出是:

[2]*[https://OPS-MAN-FQDN/uaa]
  skip_ssl_validation: true

  [0]*[USERNAME]
      user_id: USERID
      client_id: CLIENTID
      access_token: ACCES_TOKEN
      token_type: bearer
      refresh_token: REFRESHTOKEN
      expires_in: 43199
      scope: opsman.admin scim.me opsman.user uaa.admin clients.admin
      jti: JTI VALUE

如果你可以使用 grep 就这么简单:

uaac context | grep -Po '(?<=access_token: ).*'

打印访问令牌。

这是使用 Fabian 解决方案的 Ansible 命令:

- name: Extracting UAAC access_token
  shell: "uaac context YOUREMAIL | grep -o -P '(?<=access_token:\ ).*(?=)'"
  register: context