J'interroge une API avec la commande command
d'Ansible. L'API renvoie un objet JSON avec des informations réseau.Comment filtrer les données JSON dans Ansible?
J'aimerais obtenir l'adresse IP privée d'un serveur en fonction de son adresse IP publique. Je sais que c'est possible avec JSON query filter mais je ne peux pas comprendre comment.
Le code:
- name: Get RPN topology
command: 'curl -X GET -H "Authorization: Bearer {{ onlineApiToken }}" "https://api.online.net/api/v1/rpn/group"'
register: RPN
delegate_to: 127.0.0.1
C'est ce que la sortie RPN.stdout
ressemble:
TASK [debug] ****************************************************************************************
ok: [ps1] => {
"changed": false,
"msg": [
{
"id": 7406,
"members": [
{
"id": 0000,
"ip": "x.x.x.x",
"owner": "buzut",
"private_ip": "10.91.154.39",
"speed": 100,
"status": "active"
},
{
"id": 1111,
"ip": "y.y.y.y",
"owner": "buzut",
"private_ip": "10.91.120.148",
"speed": 100,
"status": "active"
},
{
"id": 2222,
"ip": "z.z.z.z",
"owner": "buzut",
"private_ip": "10.91.165.215",
"speed": 1000,
"status": "active"
}
],
"name": "MySQL",
"owner": "buzut",
"shared": false,
"status": "updating"
}
]
}
La question: comment puis-je obtenir IP privée d'un serveur, en fonction de son public?
Merci beaucoup pour votre réponse, mais cela ne fonctionne toujours pas :(Cela peut être parce que var 'RPN' contient des objets imbriqués: «RPN.stdout» comme indiqué dans la publication. J'ai essayé d'utiliser 'with_items:" {{RPN.stdout [0] ... 'à la place de ce que vous avez fourni, mais sans succès jusqu'ici. – Buzut