2016-04-17 5 views
2

Ich versuche, das Passwort eines vorhandenen Benutzers mit Ansible zu ändern, aber nur wenn der Benutzer bereits vorhanden ist. Ich möchte keine neuen Benutzer erstellen. Gibt es einen guten Weg?Wie kann man das Passwort eines bestehenden Benutzers ändern?

vars: 
myusers: 
    - { name: 'user1', update_pass: 'passwd' } 
    - { name: 'user2', update_pass: 'passwd' } 
    - { name: 'user3', update_pass: 'passwd' } 

tasks: 
- name: check exist 
    shell: /usr/sbin/usermod {{ item.name }} 
    with_items: myusers 
    register: result 
    failed_when: result.rc not in [6,2] 
    changed_when: result.rc != 6 

- name: change passwd 
    user: name={{ item.name }} password={{ item.update_pass }} update_password=always 
    when: result|changed 
    with_items: myusers 
+0

können Sie den Ansatz verwenden Sie begonnen haben. Sie müssen nur über die Ergebnisvariable in Ihrer "change passwd" Task iterieren, die den Wert des Elements für jeden Lauf des Shell-Befehls enthält. Sie müssen auch "ignore_results" zu Ihrer Aufgabe "check exists" hinzufügen, damit das Playbook nicht beendet wird. – Petro026

+0

@ Petro026 Vielen Dank für Ihren Kommentar. Jetzt benutze ich die Ansible-Option "' --extra-vars: @ userX.yml' "und" for loop --extra-vars "mit dem lokalen Shell-Befehl. "ignore_results" in der Aufgabe, ich verstehe nicht Zeile einfügen ... Sorry, es ist anfisible Anfänger, aber erscheint es in einem Online-Dokument? – techu

Antwort

0
vars_prompt: 
- name: user_name 
prompt: Enter the user name for password reset 
private: no 
- name: pass 
prompt: Enter the password 
tasks: 
- name: Change {{ user_name }} password 
user: name={{ user_name }} password={{ pass|password_hash('sha512') }} update_password=always 
+1

Etwas bessere Formatierung hier würde dies lesbar machen. – Grimmy

+0

Willkommen bei Stack Overflow! Während dieses Code-Snippet die Frage lösen kann, hilft [einschließlich einer Erklärung] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich, die Qualität Ihres Posts zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. Bitte versuchen Sie auch nicht, Ihren Code mit erklärenden Kommentaren zu füllen, dies verringert die Lesbarkeit sowohl des Codes als auch der Erklärungen! – Carpetsmoker