ctorgalson.linuxbrew
Linuxbrew (ctorgalson.linuxbrew)
Installiert manuell Linuxbrew, Brew-Pakete und Taps auf Ubuntu/Debian und Fedora,
um zu vermeiden, ein Shell-Skript an sh weiterzuleiten :)
Die Rolle geht davon aus, dass sie in einem Playbook mit become: true ausgeführt werden kann,
und benötigt daher den Namen eines Nicht-Root-Benutzers, um brew-Befehle sicher auszuführen.
Für andere Aufgaben – wie das Installieren von Abhängigkeiten mit apt – verwendet sie become,
um die Berechtigungen zu erhöhen. Das Ergebnis ist, dass es unabhängig von dem Wert von
ansible_user funktionieren sollte, solange der Benutzer {{ lb__owner }} existiert.
Danke an markosamuli für eine gute Linuxbrew-Rolle, die nicht ganz meinen Bedürfnissen entsprach. Ich habe diese Rolle als Grundlage für meine verwendet (wahrscheinlich habe ich dabei auch meine eigenen Fehler eingeführt).
Aufgaben
Die Rolle ist in drei Aufgaben-Dateien unterteilt:
main.yml
Diese Datei:
- überprüft, ob
brewbereits existiert, - schließt
install.ymlein, wennbrewnoch nicht existiert, - schließt
packages.ymlein, wenn die Variablelb__packagesnicht leer ist, oder eine der beiden Variablenlb__update_homebrew_when_installing_packagesoderlb__upgrade_all_when_installing_packagesden Werttruehat. - schließt eine beliebige Anzahl von Shell-Konfigurations- (oder anderen) Aufgaben-Dateien ein,
die in
lb__shell_configuration_tasksangegeben sind.
install.yml
Diese Datei:
- installiert Abhängigkeiten mit
apt, - erstellt erforderliche Linuxbrew-Verzeichnisse,
- klont die Haupt- und Core Homebrew-Repos,
- erstellt einen Symlink für die
brew-Binary, - installiert das
portable-ruby-Paket.
packages.yml
Diese Datei:
- aktualisiert
brewselbst, wennlb__update_homebrew_when_installing_packagesden Werttruehat, - aktualisiert alle
brew-Pakete, wennlb__upgrade_all_when_installing_packagesden Werttruehat, - installiert alle
brew-Pakete, die inlb__packagesdefiniert sind, - installiert alle
brew-Taps, die inlb__tapsdefiniert sind.
Anforderungen
Es gibt keine speziellen Anforderungen.
Rollenvariablen
Variablen
| Name | Typ | Standard | Beschreibung |
|---|---|---|---|
lb__prefix |
Zeichenkette | /home/linuxbrew/.linuxbrew |
Ort für alle brew-bezogenen Dateien. |
lb__brew |
Zeichenkette | {{ lb__prefix }}/bin/brew |
Pfad zur brew-Binary. |
lb__homebrew_dir |
Zeichenkette | {{ lb__prefix }}/Homebrew |
Pfad zum Homebrew-Repo-Verzeichnis. |
lb__homebrew_core_dir |
Zeichenkette | {{ lb__prefix }}/Homebrew/Library/Taps/homebrew-core |
Pfad zum Homebrew Core Repo-Verzeichnis. |
lb__directories |
Liste | Siehe vars/main.yml |
Liste der Verzeichnisse, die im lb__prefix-Verzeichnis erstellt werden sollen. |
lb__repos |
Liste | Siehe vars/main.yml |
Liste der Repos, die während der Installation geklont werden sollen. Jedes Element muss die Eigenschaften repo, dest und version haben, die für ansible.builtin.git geeignet sind. |
lb__dependencies |
Liste | Siehe vars/main.yml |
Liste der apt-Pakete, die für die Installation und Nutzung von brew erforderlich sind. |
Standardwerte
| Name | Typ | Standard | Beschreibung |
|---|---|---|---|
lb__owner |
Zeichenkette | {{ ansible_user }} |
Der Name des Besitzers für das Verzeichnis {{ lb__prefix }} und dessen Inhalt. |
lb__group |
Zeichenkette | {{ ansible_user }} |
Der Name der Gruppe für das Verzeichnis {{ lb__prefix }} und dessen Inhalt. |
lb__shell_configuration_tasks |
Liste | [] |
Eine Liste von Pfaden zu Ansible-Aufgaben-Einfüge-Dateien, die nach der grundlegenden Installation ausgeführt werden sollen. |
lb__update_homebrew_when_installing_packages |
boolean | true |
Ob brew beim Installieren neuer Pakete aktualisiert werden soll oder nicht. |
lb__upgrade_all_when_installing_packages |
boolean | true |
Ob Linuxbrew-Pakete beim Installieren neuer Pakete aktualisiert werden sollen oder nicht. |
lb__packages |
Liste | [] |
Eine Liste von Linuxbrew-Paketen, die installiert werden sollen. Jedes Element muss eine name-Eigenschaft angeben und kann optionale Eigenschaften wie state, path und install_options haben, die für ansible.community.homebrew geeignet sind. |
lb__taps |
Liste | [] |
Eine Liste von Linuxbrew-Taps, die installiert werden sollen. Jedes Element muss eine name-Eigenschaft angeben und kann die Eigenschaften state, path und url haben, die für ansible.community.homebrew_tap geeignet sind. |
Abhängigkeiten
Diese Rolle ist auf die ansible.community Sammlung für die Module homebrew und
homebrew_tap angewiesen.
Beispiel-Playbook
- hosts: servers
become: true
vars:
lb__owner: "ctorgalson"
lb__group: "{{ lb__owner }}"
lb__packages:
- name: "bottom"
state: "present"
- name: "starship"
state: "present"
tasks:
- name: "Installiere und konfiguriere Linuxbrew, Pakete und Taps."
ansible.builtin.import_role:
name: "ctorgalson.linuxbrew"
Lizenz
GPL-3.0-only
Installs linuxbrew, brew packages, and taps on Ubuntu/Debian.
ansible-galaxy install ctorgalson.linuxbrew