patbec.zsh

zsh console icon

Rôle Ansible : ZSH

Rôle Ansible Score de qualité Ansible GitHub

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.

  1. Basique
    Installer zsh et le définir comme shell par défaut pour l'utilisateur ansible.
  2. Utilisateurs multiples
    Installer zsh et le définir comme shell par défaut pour une liste d'utilisateurs spécifiés.
  3. Fichier de config défini par l'utilisateur
    Distribuer un fichier .zshrc personnalisé pour une liste d'utilisateurs.
  4. Dépendances personnalisées
    Distribuer un fichier .zshrc personnalisé avec une dépendance.
  5. Fonctions supplémentaires
    Distribuer un fichier .zshrc personnalisé avec les fonctions autosuggestions et syntax-highlighting.
  6. 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 et cd.
- 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 : console zsh Vous pouvez trouver les couleurs ANSI utilisées ici.

Licence

Ce projet est sous licence MIT - Voir le fichier LICENSE pour plus d'informations.


Retour en haut

À propos du projet

Installs and configures zsh for one or more users on Linux.

Installer
ansible-galaxy install patbec.zsh
Licence
mit
Téléchargements
116
Propriétaire