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, wennbrew
noch nicht existiert, - schließt
packages.yml
ein, wenn die Variablelb__packages
nicht leer ist, oder eine der beiden Variablenlb__update_homebrew_when_installing_packages
oderlb__upgrade_all_when_installing_packages
den Werttrue
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, wennlb__update_homebrew_when_installing_packages
den Werttrue
hat, - aktualisiert alle
brew
-Pakete, wennlb__upgrade_all_when_installing_packages
den Werttrue
hat, - installiert alle
brew
-Pakete, die inlb__packages
definiert sind, - installiert alle
brew
-Taps, die inlb__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
Installs linuxbrew, brew packages, and taps on Ubuntu/Debian.
ansible-galaxy install ctorgalson.linuxbrew