![Hinzufügen von Benutzer und Passwort mit Ansible](/image/original/f237bcda-1c18-11ef-954a-002590e76e7d.png)
Hinzufügen von Benutzer und Passwort mit Ansible
Den Nutzern werden zahlreiche Tools und Funktionen zur Automatisierung angeboten, die alle Herausforderungen, die mit der Verwaltung verbunden sein können, erheblich vereinfachen. Hier werden wir Ihnen ein großartiges Tool namens Ansible vorstellen. Dies ist eine fantastische Option für das Hinzufügen neuer Benutzer und Passwörter. Wenn Sie mehrere Server haben, kann der manuelle Prozess des Hinzufügens neuer Benutzer sehr zeitaufwändig sein. Jetzt brauchen Sie keine Zeit mehr zu verschwenden und alle Benutzer einzugeben, Sie können diesen Prozess automatisieren.
- Vorbereitung der Umgebung
- Das User-Modul
- Prozess der Benutzererstellung
- Einfügen von Benutzern über Ad-Hoc-Befehle
- Einfügen von Benutzern über Playbooks
- Gruppenmitgliedschaft einrichten
- Passwort-Integration
- Passwortgenerierung mit mkpasswd
- Einfügen von Passwörtern über Ad-Hoc-Befehle
- Kennworteinfügung über Playbooks
- Konfiguration des Fernzugriffs
- Zusammenfassung
Auf der Grundlage unserer praktischen Erfahrung mit der Nutzung von Tools werden wir einige Erkenntnisse über Ansible weitergeben.
Vorbereitung der Umgebung
Die Vorbereitung der Umgebung ist ein entscheidender Schritt in jedem Prozess, deshalb sollten Sie prüfen, ob alles, was Sie brauchen, vorhanden ist:
- Inventardatei mit Hosts
- Ansible ist auf dem Kontrollknoten installiert
- SSH-Verbindung zwischen Client- und Kontrollknoten ist verfügbar
- Client-Knoten als Remote-Knoten
Das User-Modul
Diese Art von Modul in Ansible ist für die Benutzerverwaltungsprozesse auf den Hosts unerlässlich. Hier sind ein paar Optionen, die ein Benutzermodus bietet:
- State – bestimmt den notwendigen Stand des Kontos
- Home – dies gibt das Heimatverzeichnis an
- Shell – Shell-Login
- Password – das Passwort des Benutzers
- Groups – zusätzliche Gruppen
- Ssh_key_file – ein Ort, an dem der SSH-Schlüssel gespeichert wird
- Ssh_key_bits – Angabe der Anzahl der Bits im Schlüssel
- Name – und vergessen wir nicht den erforderlichen Benutzernamen
Dies sind natürlich nur die grundlegenden Optionen, aber die Vielfalt ist riesig, und es gibt einige zusätzliche Optionen für dieses Modul:
- Profile – Spezifikation des Profils
- Seuser – diese Option fügt den Sicherheitskontext hinzu
- Update_password – dieses Kriterium wird für die Aktualisierung benötigt
Prozess der Benutzererstellung
Wenn wir speziell über den Prozess der Benutzererstellung sprechen, gibt es technisch gesehen 2 Möglichkeiten. Lassen Sie uns also jede Variante im Detail besprechen.
Einfügen von Benutzern über Ad-Hoc-Befehle
Die erste Option für die Benutzererstellung bezieht sich auf die Ad-Hoc-Befehle. Schauen wir uns ein echtes Beispiel für die Benutzererstellung an:
​$ ansible -i project_inventory.ini client1 -m user -a "name=Action state=present createhome=yes" -b
192.168.221.171 | CHANGED => {
​"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
​},
​"changed": true,
​"comment": "",
​"create_home": true,
​"group": 1006,
​"home": "/home/action",
​"name": "Action",
​"shell": "/bin/sh",
​"state": "present",
​"system": false,
​"uid": 1005
}
Um zu überprüfen, ob der Benutzer mit allen genannten Details erstellt wurde, verwenden Sie den folgenden Befehl:
$ ls /home
Einfügen von Benutzern über Playbooks
Der Prozess der Benutzererstellung über Playbooks beginnt mit:
$ cat add_user.yml
---
- name: Create a user
hosts: client1
become: yes
tasks:
- name: Add user Action
​user:
​name: Action
​shell: /bin/bash
​home: /home/action
Führen Sie danach dieses Playbook aus. Um zu überprüfen, ob der Prozess erfolgreich war, wechseln Sie wie im vorherigen Beispiel zum Client-Knoten und verwenden Sie denselben Befehl:
$ ls /home/
Gruppenmitgliedschaft einrichten
Jetzt fahren wir mit der Einrichtung der Gruppenzugehörigkeit für den bereits erstellten Benutzer fort, und zwar wie folgt
$ cat add_grp.yml
---
- name: Create a group and add a user
hosts: client1
become: yes
tasks:
​- name: Ensure the group exists
​group:
​name: group1
​state: present
​- name: Add user to the group
​user:
​name: action
​groups: group1
​append: yes
Führen Sie danach dieses Playbook aus. Um zu überprüfen, ob der Prozess erfolgreich abgeschlossen wurde, verwenden Sie den folgenden Befehl:
$ groups group1
Passwort-Integration
Hier werden wir einige Methoden vorstellen, wie man ein Kennwort in geeigneter Weise integrieren kann.
Passwortgenerierung mit mkpasswd
Verschlüsselte Passwörter können mit verschiedenen Methoden erstellt werden, aber mkpasswd gilt als die häufigste. Dieses Dienstprogramm ist im whois-Paket enthalten, also beginnen wir mit einer Installation:
$ sudo apt install whois
Einfügen von Passwörtern über Ad-Hoc-Befehle
Mkpasswd kann zusammen mit Ad-Hoc auf diese Weise verwendet werden:
$ ansible -i project_inventory.ini client1 -m user -a "name=Action password=$(mkpasswd --method=sha-512 '123')" --become
192.168.221.171 | CHANGED => {
​"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
​},
​"append": false,
​"changed": true,
​"comment": "",
​"group": 1006,
​"home": "/home/action",
​"move_home": false,
​"name": "Action",
​"password": "NOT_LOGGING_PASSWORD",
​"shell": "/bin/sh",
​"state": "present",
​"uid": 1005
}
Versuchen Sie zur Überprüfung des Kennworts, sich mit dem neuen Kennwort bei dem Benutzer anzumelden.
Kennworteinfügung über Playbooks
Für die Einfügung über ein Playbook verwenden Sie die nächste Zeile:
mkpasswd --method=sha-512
Password:
$6$r6pnvoHc$gpG9kpqIbQfGL2o/NsTD/uN04OsZ15zAydVFPYkflnbSWCTTUBn9yC6IJb7MoRvzQqmadKuf.GEYv8ldQrlZO1
Danach können Sie das Passwort in das Playbook eingeben und es ausführen. Dann können Sie versuchen, mit dem erstellten Kennwort einzutreten.
Konfiguration des Fernzugriffs
Mit Hilfe von Ansible können wir auch den passwortlosen Zugang nutzen. Für diesen Fernzugriff beginnen wir mit der Erstellung des Playbooks:
$ cat user_ssh.yml
---
- name: Create user, SSH directory, and transfer SSH keys
hosts: client1
become: yes # Use become to run tasks as a privileged user
tasks:
​- name: Create SSH directory for action
​file:
​path: /home/action/.ssh
​state: directory
​owner: action
​group: action
​mode: 0700
​- name: Generate SSH key for action
​user:
​name: action
​generate_ssh_key: yes
​ssh_key_type: rsa
​ssh_key_bits: 4096
​ssh_key_file: /home/action/.ssh/id_rsa # Full path is needed here
​- name: Transfer public key to the target host
​authorized_key:
​user: action
​key: "lookup('file', '/home/vagrant/.ssh/id_rsa.pub')"
Zusammenfassung
In diesem Artikel haben wir die üblichen Beispiele für die Nutzung von Ansible vorgestellt, angefangen bei der Erstellung eines Benutzers bis hin zur passwortlosen Nutzung. Ich hoffe, diese Informationen waren hilfreich für Sie!