In jeder Antwort wird erwähnt, wie die Details des Basisverzeichnisses gedruckt werden, während das Playbook ausgeführt und mit Debug und Var auf dem Bildschirm angezeigt wird .
Anpassung an die Antwort von @TrinitronX
Zusätzliche Informationen zur Verwendung dieser Informationen für eine neue Aufgabe.
Ich habe eine Liste von Benutzern, deren Ausgangsverzeichnis extrahiert werden muss. Also habe ich die Benutzerdetails zu einer Liste hinzugefügt
- name: Get home directory
shell: >
getent passwd {{ item.user }} | cut -d: -f6
changed_when: false
with_items:
- "{{java}}"
register: user_home
Hier durchläuft dieser Schritt alle Benutzerlisten und registriert diese Details bei user_home. Und dies wird in Form eines Arrays sein.
Der nächste Schritt besteht darin, diese Informationen für eine neue Aufgabe zu verwenden, z. B. für die Beschaffung einer Datei in ein Bash-Profil. Dies ist nur ein Beispiel und kann ein beliebiges Szenario sein, die Methode bleibt jedoch gleich.
- name: Set Java home in .bash_profile
lineinfile: path="{{ item.stdout }}/.bash_profile" regexp='^source "{{ java_dir }}/.bash_profile_java"' line='source "{{ java_dir }}/.bash_profile_java"' state=present
with_items:
- "{{ user_home.results }}"
loop_control:
label: "{{ item.stdout }}"
Ich habe eine Tatsache für java_dir auf / usr / java / latest im selben Playbook gesetzt.
Das Array user_home.results enthält die Details der Aufgabe "Home-Verzeichnis abrufen". Jetzt durchlaufen wir dieses Array und nehmen den Standardwert heraus, der den Pfad des Ausgangsverzeichnisses enthält.
Ich habe loop_control nur zum Drucken des Home-Verzeichnisses gesetzt, sonst wird das gesamte Array gedruckt.
Durch diesen Prozess können wir sicherstellen, dass wir, wenn n Benutzer vorhanden sind, diese Methode befolgen können und alle erledigt werden.
Hinweis: Ich habe begonnen, Ansible zu lernen. Falls eine von mir verwendete Terminologie falsch ist, entschuldigen Sie dies bitte. Ich habe einige Zeit damit verbracht, herauszufinden, wie das geht, und darüber nachgedacht, dasselbe zu teilen.