andrelohmann.accounts
Konten
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
- 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>
ansible-galaxy install andrelohmann.accounts