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.zshrcpersonalizado para una lista de usuarios. - Dependencias personalizadas
Distribuir un archivo.zshrcpersonalizado con una dependencia. - Funciones adicionales
Distribuir un archivo.zshrcpersonalizado con funciones deautosuggestionsysyntax-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
.zshrcpersonalizado 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
.zshrcpersonalizado 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
.zshrcpersonalizado 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
.zshrcpersonalizado para cada usuario. - Instalar autosuggestions, syntax-highlighting y exa.
- Establecer configuraciones de
history,colorycd.
- 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