2017-05-24 1 views
1

Ma tâche estAnsible objet unicode n'a aucune valeur d'attribut JSON analyse syntaxique

- name: task name 
    shell: openstack floating ip create provider --format json 
    register: result 

La sortie sera en dessous de format JSON

{ 
    "router_id": null, 
    "status": "DOWN", 
    "description": "", 
    "created_at": "2017-05-24T10:49:15Z", 
    "updated_at": "2017-05-24T10:49:15Z", 
    "floating_network_id": "923-cc77237b08e7", 
    "headers": "", 
    "fixed_ip_address": null, 
    "floating_ip_address": "192.*.*.*", 
    "revision_number": 1, 
    "project_id": "2709ad381fcf41c5bce673c916fded10", 
    "port_id": null, 
    "id": "c5d187elg-d269-4eae-b6ae-7d258f04983" 
} 

Ce que je veux faire est, obtenir que le floating_ip_address et le magasin dans une variable afin que je puisse l'utiliser dans une autre tâche.

Im en utilisant le code ci-dessous pour ce faire,

- set_fact: 
    address: "{{ (result.stdout | from_json | selectattr('floating_ip_address') | list | first).floating_ip_address }}" 

Mais Im obtenir une erreur

"ERROR! 'unicode object' has no attribute 'floating_ip_address'" 

Quel est le format correct pour obtenir que l'adresse IP?

+0

Ya sure..I'll ajouter la commande aussi –

Répondre

1

Si floating_ip_address n'est pas une liste, mais une simple clé comme dans votre entrée, par exemple:

- set_fact: 
    address: "{{ (result.stdout | from_json)['floating_ip_address'] }}" 
+0

je besoin d'exemples pour l'analyse syntaxique –

+0

Je ne Je ne comprends pas ce que vous demandez maintenant. – techraf