Hinzufügen von Benutzer und Passwort mit Ansible

Hinzufügen von Benutzer und Passwort mit Ansible

27.05.2024
Autor: HostZealot Team
2 min.
88

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.

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!

Verwandte Artikel