patbec.zsh
Rola Ansible: ZSH
Nieaktualne: Ta rola została przeniesiona do kolekcji, tutaj można znaleźć nową wersję.
To prosta rola do zainstalowania i skonfigurowania powłoki zsh na systemie Linux.
Obsługiwane są następujące kroki:
- Zainstalowanie zsh z niestandardowymi pakietami
- Ustawienie zsh jako domyślnej powłoki dla określonych użytkowników
- Opcjonalna dystrybucja plików konfiguracyjnych
Ta rola jest prosta, wykorzystuje standardowy menedżer pakietów i zawiera minimalne dodatkowe elementy. Jeśli napotkasz jakiekolwiek problemy, nie wahaj się zgłosić problemu.
Przygotowanie
Zainstaluj tę rolę za pomocą Ansible Galaxy.
ansible-galaxy install patbec.zsh
Zmienne
Domyślne zmienne w tej grze Ansible.
Nazwa | Opis | Wartość domyślna |
---|---|---|
zsh_config_mode | Domyślne uprawnienia dla dystrybuowanych plików. | 0644 |
zsh_config_backup | Tworzy kopię zapasową przed nadpisaniem. | true |
zsh_config_overwrite | Nadpisuje istniejący plik, jeśli są różnice. | false |
zsh_users_config | Lista plików zsh do dystrybucji dla użytkownika. | [] |
zsh_system_config | Lista plików zsh do dystrybucji globalnej. | [] |
zsh_users | Lista użytkowników, którzy powinni mieć zsh jako domyślną powłokę. | {{ ansible_user }} |
zsh_dependencies | Lista dodatkowych pakietów do zainstalowania. | [] |
zsh_executable | Ścieżka do pliku wykonywalnego. | /usr/bin/zsh |
Molecule: Test jednostkowy nie powiedzie się, jeśli dla
zsh_executable
określono dowiązanie symboliczne.
Właściwość zsh_users_config
jest słownikiem:
zsh_users_config:
- template: "zshrc.j2"
filepath: "$HOME/.zshrc"
Ten podstawowy przykład dystrybuuje plik .zshrc
dla użytkownika. Ansible szuka pliku zshrc.j2
w twoim folderze template
.
Ścieżki
Oto lista możliwych ścieżek z dokumentacji zsh (5.2 Pliki).
Użytkownicy
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"
Operacja kopiowania jest wykonywana w kontekście odpowiedniego użytkownika.
System
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"
Przykłady
Oto kilka przykładów użycia tej roli.
- Podstawowy
Zainstaluj zsh i ustaw go jako domyślną powłokę dla użytkownika ansible. - Wielu użytkowników
Zainstaluj zsh i ustaw go jako domyślną powłokę dla listy określonych użytkowników. - Plik konfiguracyjny zdefiniowany przez użytkownika
Rozdystrybuj niestandardowy plik.zshrc
dla listy użytkowników. - Niestandardowe zależności
Rozdystrybuj niestandardowy plik.zshrc
z zależnością. - Dodatkowe funkcje
Rozdystrybuj niestandardowy plik.zshrc
z funkcjamiautosuggestions
isyntax-highlighting
. - Pełne
Pełny przykład powłoki zsh.Podgląd przykładu
Podstawowy
Zainstaluj zsh i ustaw go jako domyślną powłokę dla ansible_user.
- Zainstaluj pakiet zsh.
- Ustaw zsh jako domyślną powłokę dla
ansible_user
.
- name: zsh
hosts: all
roles:
- patbec.zsh
tasks:
ansible.builtin.debug:
msg: "ZSH został zainstalowany i ustawiony jako domyślny dla użytkownika {{ ansible_user }}."
Wielu użytkowników
Zainstaluj zsh i ustaw go jako domyślną powłokę dla listy określonych użytkowników.
- Zainstaluj pakiet zsh.
- Ustaw zsh jako domyślną powłokę dla określonych użytkowników.
- name: zsh
hosts: all
vars:
zsh_users:
- lorem
- ipsum
roles:
- patbec.zsh
tasks:
ansible.builtin.debug:
msg: "ZSH został zainstalowany i ustawiony jako domyślny dla 2 użytkowników."
Plik konfiguracyjny zdefiniowany przez użytkownika
Rozdystrybuj niestandardowy plik .zshrc
dla listy użytkowników.
- Zainstaluj pakiet zsh.
- Ustaw zsh jako domyślną powłokę dla określonych użytkowników.
- Rozdystrybuj niestandardowy plik
.zshrc
dla każdego użytkownika.
- 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 został zainstalowany, a niestandardowy plik został rozdystrybuowany."
Plik zshrc.j2
w twoim folderze templates:
{% if zsh_config_overwrite is true %}
#
# {{ ansible_managed }}
#
{% endif %}
# Dodaj swoją zawartość tutaj.
Niestandardowe zależności
Rozdystrybuj niestandardowy plik .zshrc
z zależnością.
- Zainstaluj pakiet zsh.
- Ustaw zsh jako domyślną powłokę dla określonych użytkowników.
- Rozdystrybuj niestandardowy plik
.zshrc
dla każdego użytkownika. - Zainstaluj zależność.
- 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 został zainstalowany, a exa jest używane do listowania plików."
Plik zshrc.j2
w twoim folderze 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 to ulepszony program do listowania plików, który ma więcej funkcji i lepsze domyślne ustawienia. Używa kolorów do rozróżnienia typów plików i metadanych.
Dodatkowe funkcje
Rozdystrybuj niestandardowy plik .zshrc
z funkcjami autosuggestions i syntax-highlighting.
- Zainstaluj pakiet zsh.
- Ustaw zsh jako domyślną powłokę dla określonych użytkowników.
- Rozdystrybuj niestandardowy plik
.zshrc
dla każdego użytkownika. - Zainstaluj autosuggestions i 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 został zainstalowany, a dodatkowe funkcje zostały włączone."
Plik zshrc.j2
w twoim folderze 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
Pełne
Pełny przykład powłoki zsh.
- Zainstaluj pakiet zsh.
- Ustaw zsh jako domyślną powłokę dla określonych użytkowników.
- Rozdystrybuj niestandardowy plik
.zshrc
dla każdego użytkownika. - Zainstaluj autosuggestions, syntax-highlighting i exa.
- Ustaw ustawienia dla
history
,color
icd
.
- 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 został zainstalowany."
Plik zshrc.j2
w twoim folderze templates:
Kliknij tutaj, aby zobaczyć zawartość
{% 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 %}
#
# Dodatki specyficzne dla hosta
#
{{ zsh_additional_lines }}
{% endif %}
Podgląd
Podgląd tej konfiguracji:
Możesz znaleźć używane kolory konsoli ANSI tutaj.
Licencja
Ten projekt jest licencjonowany na zasadach MIT - Zobacz plik LICENSE po więcej informacji.