Zum Inhalt springen
Diese Seite wurde automatisch übersetzt. Englisches Original ansehen.

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.

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.

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.yml
include_default_roles: true
include_default_playbooks: true
sources:
- 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-playbooks

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.yml
include_default_roles: false
include_default_playbooks: false
sources:
- name: dev-stack
type: git
url: https://github.com/example/dev-stack.git
ref: main
roles_path: roles
playbooks_path: playbooks

Wenn 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: false

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.yml
include_default_roles: false
include_default_playbooks: true
sources:
- name: test-overlay
type: local
path: /path/to/sailwright/roles_test_2
- name: test-base
type: local
path: /path/to/sailwright/roles_test_1

Führen Sie dann aus:

Terminal window
sailwright provision local --check