patbec.zsh

icono de consola zsh

Rol de Ansible: ZSH

Rol de Ansible Puntuación de Calidad de Ansible GitHub

Obsoleto: Este rol ha sido migrado a una Colección, aquí puedes encontrar la nueva versión.

Este es un rol sencillo para instalar y configurar el zsh-shell en Linux.

Los siguientes pasos son compatibles:

  • Instalar zsh con paquetes personalizados
  • Establecer zsh como la shell predeterminada para los usuarios especificados
  • Distribución opcional de archivos de configuración

Este rol se mantiene simple, utiliza el gestor de paquetes estándar y contiene un mínimo de sobrecarga. Si tienes algún problema, no dudes en crear un problema.

Preparación

Instala este rol con Ansible Galaxy.

ansible-galaxy install patbec.zsh

Variables

Variables predeterminadas en este playbook.

Nombre Descripción Valor Predeterminado
zsh_config_mode Permisos predeterminados para los archivos distribuidos. 0644
zsh_config_backup Crea una copia de seguridad antes de sobrescribir. true
zsh_config_overwrite Sobrescribe el archivo existente si hay diferencias. false
zsh_users_config Una lista de archivos zsh para distribuir a un usuario. []
zsh_system_config Una lista de archivos zsh para distribuir globalmente. []
zsh_users Una lista de usuarios que deberían tener zsh como shell predeterminada. {{ ansible_user }}
zsh_dependencies Una lista de paquetes adicionales para instalar. []
zsh_executable Ruta al ejecutable. /usr/bin/zsh

Molecule: La prueba unitaria falla si se especifica un enlace simbólico para zsh_executable.

La propiedad zsh_users_config es un diccionario:

zsh_users_config:
  - template: "zshrc.j2"
    filepath: "$HOME/.zshrc"

Este ejemplo básico distribuye un archivo .zshrc para un usuario. Ansible busca el archivo zshrc.j2 en tu carpeta templates.

Rutas

Aquí hay una lista de posibles rutas de la documentación de zsh (5.2 Archivos).

Usuarios

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"

La operación de copia se realiza en el contexto del usuario respectivo.

Sistema

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"

Ejemplos

Aquí hay algunos ejemplos de cómo se puede utilizar este rol.

  1. Básico
    Instalar zsh y establecerlo como shell predeterminado para el usuario ansible.
  2. Múltiples usuarios
    Instalar zsh y establecerlo como shell predeterminado para una lista de usuarios especificados.
  3. Archivo de configuración definido por el usuario
    Distribuir un archivo .zshrc personalizado para una lista de usuarios.
  4. Dependencias personalizadas
    Distribuir un archivo .zshrc personalizado con una dependencia.
  5. Funciones adicionales
    Distribuir un archivo .zshrc personalizado con funciones de autosuggestions y syntax-highlighting.
  6. Completo
    Ejemplo completo de una shell zsh.Vista previa de la muestra

Básico

Instalar zsh y establecerlo como shell predeterminada para el ansible_user.

  • Instalar el paquete zsh.
  • Establecer zsh como shell predeterminada para el ansible_user.
- name: zsh
  hosts: all
  roles:
    - patbec.zsh
  tasks:
    ansible.builtin.debug:
        msg: "ZSH ha sido instalado y establecido como predeterminado para el usuario {{ ansible_user }}."

Múltiples usuarios

Instalar zsh y establecerlo como shell predeterminada para una lista de usuarios especificados.

  • Instalar el paquete zsh.
  • Establecer zsh como shell predeterminada para los usuarios especificados.
- name: zsh
  hosts: all
  vars:
    zsh_users:
      - lorem
      - ipsum
  roles:
    - patbec.zsh
  tasks:
    ansible.builtin.debug:
        msg: "ZSH se ha instalado y establecido como predeterminado para 2 usuarios."

Archivo de configuración definido por el usuario

Distribuir un archivo .zshrc personalizado para una lista de usuarios.

  • Instalar el paquete zsh.
  • Establecer zsh como shell predeterminada para los usuarios especificados.
  • Distribuir un .zshrc personalizado para cada usuario.
- 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 se ha instalado y se ha distribuido un archivo personalizado."

Archivo zshrc.j2 en tu carpeta de plantillas:

{% if zsh_config_overwrite is true %}
#
# {{ ansible_managed }}
#
{% endif %}

# Agrega tu contenido aquí.

Dependencias personalizadas

Distribuir un archivo .zshrc personalizado con una dependencia.

  • Instalar el paquete zsh.
  • Establecer zsh como shell predeterminada para los usuarios especificados.
  • Distribuir un .zshrc personalizado para cada usuario.
  • Instalar una dependencia.
- 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 ha sido instalado y exa se usa para listar archivos."

Archivo zshrc.j2 en tu carpeta de plantillas:

{% 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 es un mejorador del listado de archivos con más características y mejores predeterminados. Utiliza colores para distinguir tipos de archivos y metadatos.

Funciones adicionales

Distribuir un archivo .zshrc personalizado con funciones de autosuggestions y syntax-highlighting funciones.

  • Instalar el paquete zsh.
  • Establecer zsh como shell predeterminada para los usuarios especificados.
  • Distribuir un .zshrc personalizado para cada usuario.
  • Instalar autosuggestions y 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 se ha instalado y se habilitaron funciones adicionales."

Archivo zshrc.j2 en tu carpeta de plantillas:

{% 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

Completo

Ejemplo completo de una shell zsh.

  • Instalar el paquete zsh.
  • Establecer zsh como shell predeterminada para los usuarios especificados.
  • Distribuir un .zshrc personalizado para cada usuario.
  • Instalar autosuggestions, syntax-highlighting y exa.
  • Establecer configuraciones de history, color y 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 ha sido instalado."

Archivo zshrc.j2 en tu carpeta de plantillas:

Haz clic aquí para ver el contenido
{% 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 %}
#
# Adiciones específicas de host
#
{{ zsh_additional_lines }}
{% endif %}

Vista previa

Una vista previa de esta configuración: console zsh Puedes encontrar los colores ANSI utilizados aquí.

Licencia

Este proyecto está bajo licencia MIT - Consulta el archivo LICENSE para más información.


Volver al inicio

Acerca del proyecto

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

Instalar
ansible-galaxy install patbec.zsh
Licencia
mit
Descargas
116
Propietario