Ansible-Rollenquellen
Sailwright kann den Suchpfad für Ansible-Rollen sowie den Standardpfad für das Playbook aus einer kleinen YAML-Konfigurationsdatei erstellen. Damit können Sie die mitgelieferten Beispielrollen als Fallback behalten, private Rollen über öffentliche Rollen schichten oder das Provisioning auf Rollen und Playbooks ausrichten, die Sie gerade aktiv entwickeln.
Konfigurationsort
Abschnitt betitelt „Konfigurationsort“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 setzen Sie DEV_ALCHEMY_ROLE_SOURCES_CONFIG, um auf eine bestimmte Konfigurationsdatei zu verweisen.
Schichtenmodell
Abschnitt betitelt „Schichtenmodell“Quellen werden in der Reihenfolge angewendet, in der sie in der Datei erscheinen. Ansible verwendet den ersten passenden Rollennamen, den es findet. Platzieren Sie daher spezifische Override-Rollen vor allgemeinen Rollensammlungen.
Fehlt die Konfigurationsdatei, behält Sailwright das bisherige Verhalten bei und verwendet das mitgelieferte Verzeichnis ./roles. Existiert die Konfigurationsdatei, ist include_default_roles standardmäßig true, sodass konfigurierte Quellen vor den mitgelieferten Rollen platziert werden.
Setzen Sie playbook, wenn dieser Quellstapel den Standard-Einstiegspunkt für einfache Aufrufe von sailwright provision local und für VM-Provisioning-Befehle definieren soll. Relative Playbook-Pfade werden zunächst ü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.
Ist kein Konfigurations-Playbook verfügbar, greift Sailwright auf ./playbooks/role-sources-test.yml zurück, ein kleines Smoke-/Beispiel-Playbook zur Auflösung von Rollenquellen. Das umfangreichere mitgelieferte ./playbooks/setup.yml ist ebenfalls ein Beispiel-Einstiegspunkt; führen Sie es explizit mit --playbook ./playbooks/setup.yml aus oder legen Sie es als playbook in Ihrer Konfiguration fest.
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 ausgehend vom Verzeichnis der Konfigurationsdatei aufgelöst.
Git-Quellen verwenden url. Sailwright klont sie nach DEV_ALCHEMY_APP_DATA_DIR/cache/ansible-role-sources/ für Rollen und nach DEV_ALCHEMY_APP_DATA_DIR/cache/ansible-playbook-sources/ für Playbooks und aktualisiert vorhandene Checkouts vor dem Provisioning. Setzen Sie ref für einen Branch, Tag oder Commit.
Setzen Sie roles_path, wenn eine Quelle Rollen in einem Unterverzeichnis ablegt. Setzen Sie playbooks_path, wenn eine Playbook-Quelle Playbooks in einem Unterverzeichnis ablegt. Bei lokalen oder Git-Projekten, die sowohl Rollen als auch Playbooks enthalten, geben Sie beide Pfade im selben sources-Eintrag an:
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: playbooksWenn include_default_roles auf false steht, stellen Sie sicher, dass playbook auf einen Einstiegspunkt verweist, dessen Rollennamen in Ihren konfigurierten Quellen existieren. Wenn Sie per CLI-Flag abweichend das mitgelieferte Beispiel ./playbooks/setup.yml ausführen, hält Sailwright das mitgelieferte Verzeichnis ./roles weiterhin als Fallback für diese Setup-Rollen verfügbar.
Sie können das Aktualisierungsverhalten für eine Git-Quelle deaktivieren:
sources: - name: pinned-base type: git url: https://github.com/csautter/sailwright.git ref: v1.0.0 pull: falseManueller Schichtentest
Abschnitt betitelt „Manueller Schichtentest“Das Repository enthält zwei winzige Ordner mit Rollenquellen für den manuellen Test: roles_test_1/ und roles_test_2/. Platzieren Sie das Overlay zuerst, um zu prüfen, dass die gemeinsame Rolle aus roles_test_2 aufgelöst wird.
Dies ist auch der eingebaute CLI-Fallback, während Sie an der Auflösung von Rollenquellen arbeiten: role-sources-test.yml läuft schnell durch und umgeht 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 dann aus:
sailwright provision local --check