andrelohmann.accounts

Konten

Letzter Test

Inhalt

Benutzer und öffentliche Schlüssel auf Ihre Maschinen bereitstellen.

Voraussetzungen

Diese Rolle benötigt Ubuntu.

Rollenvariablen

Erstellen Sie eine Liste mit allen Benutzern, die im System erstellt werden müssen. Sie können jeden Parameter für den Benutzer festlegen, der unter http://docs.ansible.com/ansible/user_module.html verfügbar ist. Außerdem können Sie jeden Parameter (außer "user") für den Schlüssel festlegen, der unter http://docs.ansible.com/ansible/authorized_key_module.html verfügbar ist. Das optionale Array "accounts_sshd_configs" ermöglicht es, sshd_config-Parameter festzulegen.

accounts_users:
- name: __BENUTZERNAME__
  uid: __UID__
  state: present
  groups:
  - sudo
  public_keys:
  - key: ssh-rsa AAA...
    state: present

accounts_sshd_configs:
- key: PermitRootLogin
  value: 'nein'
- key: AuthenticationMethods
  value: 'publickey password'
- PasswordAuthentication
  value: 'ja'

Wenn Sie zusätzliche Benutzer auf Host-Basis benötigen, können Sie eine zusätzliche Liste accounts_host_users festlegen.

accounts_host_users:
- name: __BENUTZERNAME__
  uid: __UID__
  state: present
  groups:
  - sudo
  public_keys:
  - key: ssh-rsa AAA...
    state: present

Beispiel-Playbook

- hosts: accounts
  roles:
  - { role: andrelohmann.accounts }

Rollenausentwicklung

Besonderer Zweck

Dieses Repository unterstützt die folgenden Funktionen für die Rollenausentwicklung:

  • yamllint
  • ansible-lint
  • molekültest
  • Github-Aktion
  • automatische Versionsaktualisierung
  • Ansible Galaxy aktualisieren
  • Bau-Status anzeigen
  • Test innerhalb von Vagrant (zu Entwicklungszwecken)
  • Test mit Molekül (innerhalb oder außerhalb von Vagrant)
  • Test gegen Docker-Container
  • Test und Entwicklung in VSCode

Voraussetzungen

https://thedatabaseme.de/2022/01/17/automated-testing-your-ansible-role-with-molecule-and-github-actions/

  • VirtualBox + Vagrant installiert (nur notwendig, wenn die Rolle auch mit Vagrant getestet werden soll)
  • Docker Desktop
  • VisualStudioCode + Remote-Extension-Paket (Abhängigkeiten sind in .vscode/extensions.json definiert)

Entwicklungs-Setup

Diese Ansible-Rolle wird mit Molekül für Tests entwickelt. Ihre Entwicklung basiert auf Visual Studio Code und einem entsprechenden Entwicklungscontainer, der alle Abhängigkeiten in Bezug auf erforderliche Werkzeuge (Ansible, Linter, Molekül) löst.

Die Rolle wird auf zwei Ubuntu-Containern (focal, jammy) getestet.

Um die Molekül-Testcontainer aus dem Entwicklungcontainer zu starten, muss der Docker-Socket in den Entwicklungcontainer eingebunden werden.

Wichtige Ordner und Dateien

.devcontainer
  • Definiert die Dockerfile für den Entwicklungcontainer
  • Konfiguriert den Start des Entwicklungcontainers (z.B. Einhängen des Docker-Sockets)
molecule/default/Dockerfile.js
  • Wird als Vorlage für alle Plattformen genutzt, die in molecule/default/molecule.yml definiert sind
  • Bereitet die Umgebungen vor, um systemd-Dienste zu unterstützen (notwendig für einige Ansible-Rollen, die auf systemd wirken)
  • Installiert alle Anforderungen, um Ansible gegen den abgeleiteten Container auszuführen
  • Die Datei ist auf die Eigenschaften der Plattformen in molecule/default/molecule.yml abgestimmt
  • Für weitere Informationen - studieren Sie die Molekül-Dokumentation

Verwendung

Visual Studio Code

  • Wechseln Sie in das Stammverzeichnis Ihrer Rolle und starten Sie VSCode
code .
  • Innerhalb des Entwicklungcontainers können Sie die folgenden Befehle ausführen
yamllint .
ansible-lint .
molecule create
molecule test

Vagrant + VirtualBox

  • Wechseln Sie in das Stammverzeichnis Ihrer Rolle
  • Wechseln Sie in den Vagrant-Ordner
  • Starten und betreten Sie die Vagrant-Maschine
vagrant up
vagrant ssh
  • Wechseln Sie in den Rollenordner
cd /etc/ansible/roles/ansible-role- [tab]
  • Jetzt können Sie alle Tests ausführen
yamllint .
ansible-lint .
molecule create
molecule test

Build- und Release-Prozess

Die Ansible-Rolle definiert eine Reihe von Github-Workflows für Molekül-Tests und Release-Management.

Das Release-Management erfordert eine Reihe von Einstellungen.

Schutz des Master/Main-Branches

  • Einstellungen -> Zweige -> Schutzregel für den Branch hinzufügen
  • Branch-Mustername -> main oder master (je nach Ihrem Standard-Branch)
  • Entsprechende Zweige schützen -> "Erfordere eine Pull-Request, bevor gemerged wird" aktivieren
  • "Genehmigungen verlangen" können nach Bedarf behandelt werden

Lesen und Schreiben von Berechtigungen für GITHUB_TOKEN gewähren

  • Einstellungen -> Aktionen -> Allgemein -> Workflow-Berechtigungen -> Lese- und Schreibberechtigungen

Commit-Nachrichten

Commit-Nachrichten sollten einem speziellen Format folgen, um ein Patch-, Minor- oder Major-Semantikversionsupdate zu erreichen.

Patch

0.0.x

fix(single_word): Beschreibung
Minor

0.x.0

feat(single_word): Beschreibung
Major

x.0.0

perf(single_word): Beschreibung
BREAKING CHANGE: Beschreibung der brechenden Änderung

Es ist absolut wichtig, dass "BREAKING CHANGE: " in der zweiten + Zeile erwähnt wird. Bei einzeiligen Commit-Nachrichten wird das Major-Version-Update ignoriert.

Fügen Sie das GALAXY_API_KEY-Geheimnis hinzu

  • Authentifizieren Sie sich mit Ihrem Github-Konto unter https://galaxy.ansible.com/.
  • Holen Sie sich den Galaxy-API-Schlüssel von Einstellungen -> API-Schlüssel
  • Öffnen Sie Ihr Github-Rollenrepository
  • Einstellungen -> Geheimnisse und Variablen -> Aktionen -> Neues Repository-Geheimnis
  • Verwenden Sie "GALAXY_API_KEY" als Schlüssel und den kopierten Galaxy-API-Schlüssel als Wert

Lizenz

MIT

Autoreninformationen

© Andre Lohmann (und andere) 2024

https://github.com/andrelohmann

Kontakt des Maintainers

  • Andre Lohmann <lohmann.andre (at) gmail (dot) com>
Über das Projekt

ansible galaxy role to deploy users and public keys

Installieren
ansible-galaxy install andrelohmann.accounts
GitHub Repository
Lizenz
mit
Downloads
581
Besitzer