patbec.zsh
Rôle Ansible : ZSH
Obsolète : Ce rôle a été migré vers une Collection, vous pouvez trouver la nouvelle version ici.
C'est un rôle simple pour installer et configurer le zsh-shell sur Linux.
Les étapes suivantes sont supportées :
- Installer zsh avec des paquets personnalisés
- Définir zsh comme shell par défaut pour les utilisateurs spécifiés
- Distribution optionnelle de fichiers de configuration
Ce rôle reste simple, utilise le gestionnaire de paquets standard et contient un minimum de surcharge. Si vous rencontrez des problèmes, n'hésitez pas à créer un problème.
Préparation
Installez ce rôle avec Ansible Galaxy.
ansible-galaxy install patbec.zsh
Variables
Variables par défaut dans ce playbook.
Nom | Description | Valeur par défaut |
---|---|---|
zsh_config_mode | Permissions par défaut pour les fichiers distribués. | 0644 |
zsh_config_backup | Crée une sauvegarde avant de remplacer. | true |
zsh_config_overwrite | Écrase le fichier existant s'il y a des différences. | false |
zsh_users_config | Une liste de fichiers zsh à distribuer pour un utilisateur. | [] |
zsh_system_config | Une liste de fichiers zsh à distribuer globalement. | [] |
zsh_users | Une liste d'utilisateurs pour qui zsh doit être le shell par défaut. | {{ ansible_user }} |
zsh_dependencies | Une liste de paquets supplémentaires à installer. | [] |
zsh_executable | Chemin vers l'exécutable. | /usr/bin/zsh |
Molecule : Le test unitaire échoue si un lien symbolique est spécifié pour
zsh_executable
.
La propriété zsh_users_config
est un dictionnaire :
zsh_users_config:
- template: "zshrc.j2"
filepath: "$HOME/.zshrc"
Cet exemple de base distribue un .zshrc
pour un utilisateur. Ansible recherche le fichier zshrc.j2
dans votre dossier template
.
Chemins
Voici une liste de chemins possibles provenant de la documentation zsh (5.2 Fichiers).
Utilisateurs
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"
L'opération de copie est effectuée dans le contexte de l'utilisateur respectif.
Système
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"
Exemples
Voici quelques exemples d'utilisation de ce rôle.
- Basique
Installer zsh et le définir comme shell par défaut pour l'utilisateur ansible. - Utilisateurs multiples
Installer zsh et le définir comme shell par défaut pour une liste d'utilisateurs spécifiés. - Fichier de config défini par l'utilisateur
Distribuer un fichier.zshrc
personnalisé pour une liste d'utilisateurs. - Dépendances personnalisées
Distribuer un fichier.zshrc
personnalisé avec une dépendance. - Fonctions supplémentaires
Distribuer un fichier.zshrc
personnalisé avec les fonctionsautosuggestions
etsyntax-highlighting
. - Complet
Exemple complet d'un shell zsh.Aperçu de l'échantillon
Basique
Installer zsh et le définir comme shell par défaut pour l'ansible_user.
- Installer le paquet zsh.
- Définir zsh comme shell par défaut pour l'utilisateur
ansible_user
.
- name: zsh
hosts: all
roles:
- patbec.zsh
tasks:
ansible.builtin.debug:
msg: "ZSH a été installé et défini par défaut pour l'utilisateur {{ ansible_user }}."
Utilisateurs multiples
Installer zsh et le définir comme shell par défaut pour une liste d'utilisateurs spécifiés.
- Installer le paquet zsh.
- Définir zsh comme shell par défaut pour les utilisateurs spécifiés.
- name: zsh
hosts: all
vars:
zsh_users:
- lorem
- ipsum
roles:
- patbec.zsh
tasks:
ansible.builtin.debug:
msg: "ZSH a été installé et défini par défaut pour 2 utilisateurs."
Fichier de config défini par l'utilisateur
Distribuer un fichier .zshrc
personnalisé pour une liste d'utilisateurs.
- Installer le paquet zsh.
- Définir zsh comme shell par défaut pour les utilisateurs spécifiés.
- Distribuer un
.zshrc
personnalisé pour chaque utilisateur.
- 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 a été installé et un fichier personnalisé a été distribué."
Fichier zshrc.j2
dans votre dossier templates :
{% if zsh_config_overwrite is true %}
#
# {{ ansible_managed }}
#
{% endif %}
# Ajoutez votre contenu ici.
Dépendances personnalisées
Distribuer un fichier .zshrc
personnalisé avec une dépendance.
- Installer le paquet zsh.
- Définir zsh comme shell par défaut pour les utilisateurs spécifiés.
- Distribuer un fichier
.zshrc
personnalisé pour chaque utilisateur. - Installer une dépendance.
- 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 a été installé et exa est utilisé pour lister les fichiers."
Fichier zshrc.j2
dans votre dossier templates :
{% 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 est un liseur de fichiers amélioré avec plus de fonctionnalités et de meilleurs défauts. Il utilise des couleurs pour distinguer les types de fichiers et les métadonnées.
Fonctions supplémentaires
Distribuer un fichier .zshrc
personnalisé avec les fonctions autosuggestions et syntax-highlighting.
- Installer le paquet zsh.
- Définir zsh comme shell par défaut pour les utilisateurs spécifiés.
- Distribuer un fichier
.zshrc
personnalisé pour chaque utilisateur. - Installer autosuggestions et 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 a été installé et des fonctions supplémentaires ont été activées."
Fichier zshrc.j2
dans votre dossier templates :
{% 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
Complet
Exemple complet d'un shell zsh.
- Installer le paquet zsh.
- Définir zsh comme shell par défaut pour les utilisateurs spécifiés.
- Distribuer un fichier
.zshrc
personnalisé pour chaque utilisateur. - Installer autosuggestions, syntax-highlighting et exa.
- Définir les paramètres
history
,color
etcd
.
- 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 a été installé."
Fichier zshrc.j2
dans votre dossier templates :
Cliquez ici pour voir le contenu
{% 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 %}
#
# Ajouts spécifiques à l'hôte
#
{{ zsh_additional_lines }}
{% endif %}
Aperçu
Un aperçu de cette configuration :
Vous pouvez trouver les couleurs ANSI utilisées ici.
Licence
Ce projet est sous licence MIT - Voir le fichier LICENSE pour plus d'informations.
Installs and configures zsh for one or more users on Linux.
ansible-galaxy install patbec.zsh