patbec.zsh
Ansible Rolle: ZSH
Abgelaufen: Diese Rolle wurde in eine Sammlung migriert, hier finden Sie die neue Version.
Dies ist eine einfache Rolle zur Installation und Einrichtung der zsh-Shell auf Linux.
Die folgenden Schritte werden unterstützt:
- Installieren von zsh mit benutzerdefinierten Paketen
- Setzen von zsh als Standard-Shell für die angegebenen Benutzer
- Optionale Verteilung von Konfigurationsdateien
Diese Rolle bleibt einfach, nutzt den Standard-Paketmanager und hat einen minimalen Overhead. Bei Problemen zögern Sie nicht, ein Problem zu erstellen.
Vorbereitung
Installieren Sie diese Rolle mit Ansible Galaxy.
ansible-galaxy install patbec.zsh
Variablen
Standardvariablen in diesem Playbook.
Name | Beschreibung | Standardwert |
---|---|---|
zsh_config_mode | Standardberechtigungen für verteilte Dateien. | 0644 |
zsh_config_backup | Erstellt ein Backup, bevor eine Überschreibung erfolgt. | true |
zsh_config_overwrite | Überschreibt die vorhandene Datei, wenn Unterschiede bestehen. | false |
zsh_users_config | Eine Liste von zsh-Dateien, die für einen Benutzer verteilt werden. | [] |
zsh_system_config | Eine Liste von zsh-Dateien, die global verteilt werden. | [] |
zsh_users | Eine Liste von Benutzern, die zsh als Standard-Shell erhalten sollen. | {{ ansible_user }} |
zsh_dependencies | Eine Liste von zusätzlichen Paketen, die installiert werden sollen. | [] |
zsh_executable | Pfad zur Ausführungsdatei. | /usr/bin/zsh |
Molecule: Der Unit-Test schlägt fehl, wenn ein symbolischer Link für
zsh_executable
angegeben wird.
Die zsh_users_config
-Eigenschaft ist ein Dictionary:
zsh_users_config:
- template: "zshrc.j2"
filepath: "$HOME/.zshrc"
Dieses einfache Beispiel verteilt eine .zshrc
für einen Benutzer. Ansible sucht die Datei zshrc.j2
in Ihrem template
-Ordner.
Pfade
Hier ist eine Liste möglicher Pfade aus der zsh Dokumentation (5.2 Dateien).
Benutzer
zsh_users_config:
- template: "zshrc.j2"
filepath: "$HOME/.zshrc"
- template: "zshenv.j2"
filepath: "$HOME/.zshenv"
- template: "zprofile.j2"
filepath: "$HOME/.zprofile"
- template: "zlogin.j2"
filepath: "$HOME/.zlogin"
- template: "zlogout.j2"
filepath: "$HOME/.zlogout"
Die Kopieroperation wird im Kontext des jeweiligen Benutzers durchgeführt.
System
zsh_system_config:
- template: "zshrc.j2"
filepath: "/etc/zshrc"
- template: "zshenv.j2"
filepath: "/etc/zshenv"
- template: "zprofile.j2"
filepath: "/etc/zprofile"
- template: "zlogin.j2"
filepath: "/etc/zlogin"
- template: "zlogout.j2"
filepath: "/etc/zlogout"
Beispiele
Hier sind einige Beispiele, wie diese Rolle verwendet werden kann.
- Basis
Installieren Sie zsh und setzen Sie es als Standard-Shell für den Ansible-Benutzer. - Mehrere Benutzer
Installieren Sie zsh und setzen Sie es als Standard-Shell für eine Liste von angegebenen Benutzern. - Benutzerdefinierte Konfigurationsdatei
Verteilen Sie eine benutzerdefinierte.zshrc
-Datei für eine Liste von Benutzern. - Benutzerdefinierte Abhängigkeiten
Verteilen Sie eine benutzerdefinierte.zshrc
-Datei mit einer Abhängigkeit. - Zusätzliche Funktionen
Verteilen Sie eine benutzerdefinierte.zshrc
-Datei mit Funktionen fürautosuggestions
undsyntax-highlighting
. - Vollständig
Vollständiges Beispiel einer zsh-Shell.Beispielvorschau
Basis
Installieren Sie zsh und setzen Sie es als Standard-Shell für den ansible_user.
- Installieren Sie das zsh-Paket.
- Setzen Sie zsh als Standard-Shell für den
ansible_user
.
- name: zsh
hosts: all
roles:
- patbec.zsh
tasks:
ansible.builtin.debug:
msg: "ZSH wurde installiert und als Standard für den Benutzer {{ ansible_user }} gesetzt."
Mehrere Benutzer
Installieren Sie zsh und setzen Sie es als Standard-Shell für eine Liste von angegebenen Benutzern.
- Installieren Sie das zsh-Paket.
- Setzen Sie zsh als Standard-Shell für die angegebenen Benutzer.
- name: zsh
hosts: all
vars:
zsh_users:
- lorem
- ipsum
roles:
- patbec.zsh
tasks:
ansible.builtin.debug:
msg: "ZSH wurde installiert und als Standard für 2 Benutzer gesetzt."
Benutzerdefinierte Konfigurationsdatei
Verteilen Sie eine benutzerdefinierte .zshrc
-Datei für eine Liste von Benutzern.
- Installieren Sie das zsh-Paket.
- Setzen Sie zsh als Standard-Shell für die angegebenen Benutzer.
- Verteilen Sie eine benutzerdefinierte
.zshrc
für jeden Benutzer.
- name: zsh
hosts: all
vars:
zsh_config_backup: false
zsh_config_overwrite: true
zsh_users:
- lorem
- ipsum
zsh_users_config:
- template: "zshrc.j2"
filepath: "$HOME/.zshrc"
roles:
- patbec.zsh
tasks:
ansible.builtin.debug:
msg: "ZSH wurde installiert und eine benutzerdefinierte Datei verteilt."
zshrc.j2
-Datei in Ihrem Templates-Ordner:
{% if zsh_config_overwrite is true %}
#
# {{ ansible_managed }}
#
{% endif %}
# Fügen Sie hier Ihren Inhalt hinzu.
Benutzerdefinierte Abhängigkeiten
Verteilen Sie eine benutzerdefinierte .zshrc
-Datei mit einer Abhängigkeit.
- Installieren Sie das zsh-Paket.
- Setzen Sie zsh als Standard-Shell für die angegebenen Benutzer.
- Verteilen Sie eine benutzerdefinierte
.zshrc
für jeden Benutzer. - Installieren Sie eine Abhängigkeit.
- name: zsh
hosts: all
vars:
zsh_config_backup: false
zsh_config_overwrite: true
zsh_users:
- lorem
- ipsum
zsh_users_config:
- template: "zshrc.j2"
filepath: "$HOME/.zshrc"
zsh_dependencies:
- exa
roles:
- patbec.zsh
tasks:
ansible.builtin.debug:
msg: "ZSH wurde installiert und exa wird zum Auflisten von Dateien verwendet."
zshrc.j2
-Datei in Ihrem Templates-Ordner:
{% if zsh_config_overwrite is true %}
#
# {{ ansible_managed }}
#
{% endif %}
alias ls='exa --group-directories-first'
alias ll='exa --group-directories-first --all --long --binary --group --classify --grid'
alias la='exa --group-directories-first --all --long --binary --group --header --links --inode --modified --blocks --time-style=long-iso --color-scale'
alias lx='exa --group-directories-first --all --long --binary --group --header --links --inode --modified --blocks --time-style=long-iso --color-scale --extended'
exa ist ein verbesserter Datei-Listener mit mehr Funktionen und besseren Standardeinstellungen. Es verwendet Farben, um Dateitypen und Metadaten zu unterscheiden.
Zusätzliche Funktionen
Verteilen Sie eine benutzerdefinierte .zshrc
-Datei mit Autosuggestions und Syntax-Highlighting Funktionen.
- Installieren Sie das zsh-Paket.
- Setzen Sie zsh als Standard-Shell für die angegebenen Benutzer.
- Verteilen Sie eine benutzerdefinierte
.zshrc
für jeden Benutzer. - Installieren Sie Autosuggestions und Syntax-Highlighting.
- name: zsh
hosts: all
vars:
zsh_config_backup: false
zsh_config_overwrite: true
zsh_users:
- lorem
- ipsum
zsh_users_config:
- template: "zshrc.j2"
filepath: "$HOME/.zshrc"
zsh_dependencies:
- zsh-autosuggestions
- zsh-syntax-highlighting
roles:
- patbec.zsh
tasks:
ansible.builtin.debug:
msg: "ZSH wurde installiert und zusätzliche Funktionen wurden aktiviert."
zshrc.j2
-Datei in Ihrem Templates-Ordner:
{% if zsh_config_overwrite is true %}
#
# {{ ansible_managed }}
#
{% endif %}
autoload colors && colors
source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
Vollständig
Vollständiges Beispiel einer zsh-Shell.
- Installieren Sie das zsh-Paket.
- Setzen Sie zsh als Standard-Shell für die angegebenen Benutzer.
- Verteilen Sie eine benutzerdefinierte
.zshrc
für jeden Benutzer. - Installieren Sie Autosuggestions, Syntax-Highlighting und exa.
- Setzen Sie
history
,color
undcd
Einstellungen.
- name: zsh
hosts: all
vars:
zsh_config_backup: false
zsh_config_overwrite: true
zsh_users:
- lorem
- ipsum
zsh_users_config:
- template: "zshrc.j2"
filepath: "$HOME/.zshrc"
zsh_dependencies:
- exa
- zsh-autosuggestions
- zsh-syntax-highlighting
zsh_additional_lines: ""
roles:
- patbec.zsh
tasks:
ansible.builtin.debug:
msg: "ZSH wurde installiert."
zshrc.j2
-Datei in Ihrem Templates-Ordner:
Klicken Sie hier, um den Inhalt zu sehen
{% if zsh_config_overwrite is true %}
#
# {{ ansible_managed }}
#
{% endif %}
autoload colors && colors
PROMPT="%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ )"
PROMPT+=" %{$fg[cyan]%}%c%{$reset_color%} "
source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
alias ls='exa --group-directories-first'
alias ll='exa --group-directories-first --all --long --binary --group --classify --grid'
alias la='exa --group-directories-first --all --long --binary --group --header --links --inode --modified --blocks --time-style=long-iso --color-scale'
alias lx='exa --group-directories-first --all --long --binary --group --header --links --inode --modified --blocks --time-style=long-iso --color-scale --extended'
HISTFILE="$HOME/.zsh_history"
HISTSIZE=50000
SAVEHIST=50000
setopt INC_APPEND_HISTORY
setopt AUTOCD
{% if zsh_additional_lines is defined %}
#
# Host spezifische Ergänzungen
#
{{ zsh_additional_lines }}
{% endif %}
Vorschau
Eine Vorschau dieser Konfiguration:
Die verwendeten ANSI-Konsole Farben finden Sie hier.
Lizenz
Dieses Projekt ist unter MIT lizenziert - Siehe die LICENSE Datei für weitere Informationen.