Ich habe gerade meine Hände auf Ansible angefangen und einige Sachen auf eigene Faust versucht. Ich verwende den folgenden Code:Wie man einen Befehl überspringt, wenn er schon in ansible existiert
---
- hosts: test-server
remote_user: root
tasks:
- name: install java 8
apt: name=openjdk-7-jdk update-cache=yes force=yes
- name: add group
command: addgroup hadoop
und die folgenden Fehler bekommen: -
fatal: [10.150.0.3]: FAILED! => {"changed": true, "cmd": ["addgroup", "hadoop"], "delta": "0:00:00.033669", "end": "2017-12-08 12:50:15.342671", "msg": "non-zero return code", "rc": 1, "start": "2017-12-08 12:50:15.309002", "stderr": "addgroup: The group `hadoop' already exists.", "stderr_lines": ["addgroup: The group 'hadoop' already exists."], "stdout": "", "stdout_lines": []}
to retry, use: --limit @/root/hdp1.retry
Ich kann die Gruppe ‚hadoop‘ voran gehen und entfernen und den Code erneut versuchen, und es wird nachfolgen. Aber ich möchte eine Bedingung in dem Code machen, so dass, wenn die Gruppe bereits existiert, dieser Schritt ignoriert wird. Ich habe darüber recherchiert und festgestellt, dass wir einige stat_result wie when: stat_result.stat.exists == False
verwenden könnten. Aber ich bin nicht sicher, wie man es in den Code einbaut.
Schöne Antwort. Füge vielleicht eine kurze Erklärung zu Idempotenz oder einen Link zu einer Erklärung hinzu, da es ein neuer Begriff für Benutzer sein könnte, die Devils noch nicht kennen. – Michael