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

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.

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.

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.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 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.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

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

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.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 anschließend Folgendes aus:

Terminal window
sailwright provision local --check