Ich mache einen REST-Anruf und möchte überprüfen, ob meine Anfrage abgeschlossen ist, bevor Sie fortfahren. In der Antwort habe ich entweder einen "PENDING" oder "IN_PROGRESS" als request_status erhalten. Ich möchte warten bis ich entweder ein "COMPLETED" oder "FAILED" bekomme. Zu diesem Zweck möchte ich warten, während ein „pending“ oder „IN_PROGRESS“ gettingWie Sie mehrere Bedingungen in einer Do-in-Schleife in Ansible eingeben
Ich habe versucht, viele Variationen konnte aber nicht gelungen, und der letzte Versuch war wie folgt:
- name: Wait for the cluster deployment (this will take a while)
uri:
url: http://localhost:8080/api/v1/clusters/{{ cluster_name }}/requests/1
method: GET
user: admin
password: admin
HEADER_X-Requested-By: Ansible
force_basic_auth: yes
status_code: 200, 201, 202
return_content: yes
register: response
until: "'{{ (response.content | from_json).Requests.request_status }}' != 'PENDING' AND '{{ (response.content | from_json).Requests.request_status }}' != 'IN_PROGRESS'"
retries: 3
delay: 5
Und der Fehler :
„Die bedingte Check '' {{(response.content | from_json) .Requests.request_status}} '= 'PENDING' UND' {{ (response.content | from_json) .Requests. request_status}} '! = ' IN_PROGRESS '' ist fehlgeschlagen. Der Fehler lautet: templa te Fehler beim Templating string: erwartetes Token 'Ende des Anweisungsblocks', bekam 'AND'. String: {!% wenn 'ABGESCHLOSSEN' = 'PENDING' UND 'ABGESCHLOSSEN' = 'IN_PROGRESS' %} Echtes {% else%} Falsch {% endif%}“
Also, meine Frage ist wie kann ich mehrere Bedingungen in einer do-until-Schleife in ansible angeben
wenn Sie Jinja verwenden, werden Sie tatsächlich Python ausführen. Den richtigen Python Mundart für die 'und' Logik ist buchstäblich' und', nicht "UND". froh, dass du es herausgefunden hast. obwohl du es wissen solltest;) – sircapsalot