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 brew bereits existiert,
  • schließt install.yml ein, wenn brew noch nicht existiert,
  • schließt packages.yml ein, wenn die Variable lb__packages nicht leer ist, oder eine der beiden Variablen lb__update_homebrew_when_installing_packages oder lb__upgrade_all_when_installing_packages den Wert true hat.
  • schließt eine beliebige Anzahl von Shell-Konfigurations- (oder anderen) Aufgaben-Dateien ein, die in lb__shell_configuration_tasks angegeben 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 brew selbst, wenn lb__update_homebrew_when_installing_packages den Wert true hat,
  • aktualisiert alle brew-Pakete, wenn lb__upgrade_all_when_installing_packages den Wert true hat,
  • installiert alle brew-Pakete, die in lb__packages definiert sind,
  • installiert alle brew-Taps, die in lb__taps definiert 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

Über das Projekt

Installs linuxbrew, brew packages, and taps on Ubuntu/Debian.

Installieren
ansible-galaxy install ctorgalson.linuxbrew
GitHub Repository
Lizenz
gpl-3.0
Downloads
145