Ansible-Rollenquellen
Sailwright kann den Suchpfad für Ansible-Rollen und den Standardpfad für Playbooks aus einer kleinen YAML-Konfigurationsdatei aufbauen. So behalten Sie die mitgelieferten Beispielrollen als Fallback, legen private Rollen über öffentliche Rollen oder richten das Provisioning auf Rollen und Playbooks aus, die Sie gerade entwickeln.
Speicherort der Konfiguration
Abschnitt betitelt „Speicherort der Konfiguration“Standardmäßig liest Sailwright ansible-role-sources.yml aus dem
betriebssystemspezifischen Konfigurationsverzeichnis:
- macOS:
~/Library/Application Support/dev-alchemy/ansible-role-sources.yml - Windows:
%APPDATA%\dev-alchemy\ansible-role-sources.yml - Linux:
${XDG_CONFIG_HOME:-~/.config}/dev-alchemy/ansible-role-sources.yml
Setzen Sie DEV_ALCHEMY_CONFIG_DIR, um das Konfigurationsverzeichnis zu
verschieben, oder DEV_ALCHEMY_ROLE_SOURCES_CONFIG, um auf eine bestimmte
Konfigurationsdatei zu verweisen.
Schichtenmodell
Abschnitt betitelt „Schichtenmodell“Die Quellen werden in der Reihenfolge angewendet, in der sie in der Datei stehen. Ansible verwendet den ersten passenden Rollennamen, den es findet. Setzen Sie daher Quellen mit Rollen, die andere überschreiben sollen, vor allgemeine Rollensammlungen.
Fehlt die Konfigurationsdatei, bleibt Sailwright beim bisherigen Verhalten und
verwendet das mitgelieferte Verzeichnis ./roles. Existiert die
Konfigurationsdatei, ist include_default_roles standardmäßig true. Die
konfigurierten Quellen stehen dann vor den mitgelieferten Rollen.
Setzen Sie playbook, wenn dieser Quellen-Stack den Standardeinstiegspunkt für
sailwright provision local ohne weitere Angaben und für VM-Provisioning-Befehle festlegen
soll. Relative Playbook-Pfade werden zuerst über die konfigurierten
playbook_sources aufgelöst, danach über das mitgelieferte Sailwright-Projekt,
sofern include_default_playbooks aktiviert ist. Das CLI-Flag --playbook
hat weiterhin Vorrang, wenn es gesetzt ist.
Steht in der Konfiguration kein Playbook zur Verfügung, greift Sailwright auf
./playbooks/role-sources-test.yml zurück, ein kleines Smoke- und
Beispiel-Playbook für die Auflösung von Rollenquellen. Auch das umfangreichere,
mitgelieferte ./playbooks/setup.yml ist ein Beispiel-Einstiegspunkt. Führen
Sie es explizit mit --playbook ./playbooks/setup.yml aus oder tragen Sie es in
Ihrer Konfiguration als playbook ein.
playbook: custom-setup.ymlinclude_default_roles: trueinclude_default_playbooks: truesources: - name: private-overrides type: local path: /Users/me/src/my-dev-roles
- name: public-base type: git url: https://github.com/csautter/sailwright.git ref: main roles_path: roles update: pull
playbook_sources: - name: private-playbooks type: local path: /Users/me/src/my-dev-playbooksQuellentypen
Abschnitt betitelt „Quellentypen“Lokale Quellen verwenden path. Relative Pfade werden vom Verzeichnis der
Konfigurationsdatei aus aufgelöst.
Git-Quellen verwenden url. Sailwright klont sie für Rollen nach
DEV_ALCHEMY_APP_DATA_DIR/cache/ansible-role-sources/ und für Playbooks nach
DEV_ALCHEMY_APP_DATA_DIR/cache/ansible-playbook-sources/. Vor dem Provisioning
aktualisiert es vorhandene Checkouts. Mit ref legen Sie einen Branch, Tag oder
Commit fest.
Setzen Sie roles_path, wenn eine Quelle ihre Rollen in einem Unterverzeichnis
ablegt. Setzen Sie playbooks_path, wenn eine Playbook-Quelle ihre Playbooks in
einem Unterverzeichnis ablegt. Enthält ein lokales oder Git-Projekt sowohl Rollen
als auch Playbooks, tragen Sie beide Pfade im selben Eintrag unter sources ein:
playbook: setup.ymlinclude_default_roles: falseinclude_default_playbooks: falsesources: - name: dev-stack type: git url: https://github.com/example/dev-stack.git ref: main roles_path: roles playbooks_path: playbooksIst include_default_roles auf false gesetzt, stellen Sie sicher, dass
playbook auf einen Einstiegspunkt zeigt, dessen Rollennamen in Ihren
konfigurierten Quellen vorhanden sind. Geben Sie per CLI-Flag das
mitgelieferte Beispiel ./playbooks/setup.yml an, hält Sailwright das
mitgelieferte Verzeichnis ./roles als Fallback für die Rollen dieses Setups
bereit.
Das Aktualisieren lässt sich für eine Git-Quelle abschalten:
sources: - name: pinned-base type: git url: https://github.com/csautter/sailwright.git ref: v1.0.0 pull: falseManueller Schichttest
Abschnitt betitelt „Manueller Schichttest“Das Repository enthält zwei winzige Rollenquellen-Ordner zum Ausprobieren von
Hand: roles_test_1/ und roles_test_2/. Setzen Sie das Overlay an die erste
Stelle, um zu prüfen, dass die gemeinsame Rolle aus roles_test_2 aufgelöst
wird.
Das ist zugleich der eingebaute CLI-Fallback bei der Entwicklung der
Rollenquellen-Auflösung: role-sources-test.yml läuft schnell durch und
vermeidet das umfangreichere mitgelieferte Setup-Beispiel. Führen Sie dieses
Setup-Beispiel explizit mit --playbook ./playbooks/setup.yml aus.
playbook: ./playbooks/role-sources-test.ymlinclude_default_roles: falseinclude_default_playbooks: truesources: - name: test-overlay type: local path: /path/to/sailwright/roles_test_2 - name: test-base type: local path: /path/to/sailwright/roles_test_1Führen Sie anschließend Folgendes aus:
sailwright provision local --check