patbec.zsh
Rol de Ansible: ZSH
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.
- Básico
Instalar zsh y establecerlo como shell predeterminado para el usuario ansible. - Múltiples usuarios
Instalar zsh y establecerlo como shell predeterminado para una lista de usuarios especificados. - Archivo de configuración definido por el usuario
Distribuir un archivo.zshrc
personalizado para una lista de usuarios. - Dependencias personalizadas
Distribuir un archivo.zshrc
personalizado con una dependencia. - Funciones adicionales
Distribuir un archivo.zshrc
personalizado con funciones deautosuggestions
ysyntax-highlighting
. - 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
ycd
.
- 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:
Puedes encontrar los colores ANSI utilizados aquí.
Licencia
Este proyecto está bajo licencia MIT - Consulta el archivo LICENSE para más información.
Installs and configures zsh for one or more users on Linux.
ansible-galaxy install patbec.zsh