devopsft
devopsft

Reputation: 25

Extract variable from output in Ansible

When I run the following playbook:

- name: Token
  hashivault_token_create:
    display_name: "{{ vm_name }}"
    policies: ["secret/{{ vm_name }}"]
    renewable: True
    token: "{{ root_token }}"
  register: "vault_token_admin"

- name: Print token
  debug:
    msg: "My token is: {{ vault_token_admin }}"

I get the following output:

ok: [localhost] => {
"msg": "ES: {'changed': True, 'rc': 0, 'token': {'request_id': '84645008-2d04-4f09-84aa-7a546ca29f73', 'lease_id': '', 'renewable': False, 'lease_duration': 0, 'data': None, 'wrap_info': None, 'warnings': ['Policy \"secret/test\" does not exist'], 'auth': {'client_token': 's.q3a4s4trStht30gJ12kDibjl', 'accessor': 'jqMmGMbMls9poRlx48nSruSO', 'policies': ['default', 'secret/test'], 'token_policies': ['default', 'secret/test'], 'metadata': None, 'lease_duration': 2764800, 'renewable': True, 'entity_id': '', 'token_type': 'service', 'orphan': False}}, 'failed': False}"}

My objective is to get the "client_token". How can I get only "s.q3a4s4trStht30gJ12kDibjl" ?

Thanks

Upvotes: 1

Views: 120

Answers (1)

Vladimir Botka
Vladimir Botka

Reputation: 67984

Try this

  - debug:
      var: vault_token_admin.ES.token.auth.client_token

should give

  vault_token_admin.ES.token.auth.client_token: s.q3a4s4trStht30gJ12kDibjl

To see the structure use filter to_nice_yaml. For example

  - debug:
      msg: "My token is: {{ vault_token_admin|to_nice_yaml }}"

gives

  msg: |-
    My token is: ES:
        changed: true
        failed: false
        rc: 0
        token:
            auth:
                accessor: jqMmGMbMls9poRlx48nSruSO
                client_token: s.q3a4s4trStht30gJ12kDibjl
                entity_id: ''
                lease_duration: 2764800
                metadata: None
                orphan: false
                policies:
                - default
                - secret/test
                renewable: true
                token_policies:
                - default
                - secret/test
                token_type: service
            data: None
            lease_duration: 0
            lease_id: ''
            renewable: false
            request_id: 84645008-2d04-4f09-84aa-7a546ca29f73
            warnings:
            - Policy \"secret/test\" does not exist
            wrap_info: None

Upvotes: 1

Related Questions