zsh
Ansible Роль: ZSH
Устарело: Эта роль была перенесена в Коллекцию, здесь вы можете найти новую версию.
Это простая роль для установки и настройки zsh-shell на Linux.
Поддерживаются следующие шаги:
- Установка zsh с пользовательскими пакетами
- Установка zsh в качестве основной оболочки для указанных пользователей
- Необязальное распространение конфигурационных файлов
Эта роль остается простой, использует стандартный менеджер пакетов и содержит минимальные накладные расходы. Если у вас есть проблемы, не стесняйтесь создать запрос на изменение.
Подготовка
Установите эту роль с помощью Ansible Galaxy.
ansible-galaxy install patbec.zsh
Переменные
Значения по умолчанию в этом плейбуке.
Имя | Описание | Значение по умолчанию |
---|---|---|
zsh_config_mode | Права по умолчанию для распределяемых файлов. | 0644 |
zsh_config_backup | Создает резервную копию перед перезаписью. | true |
zsh_config_overwrite | Перезаписывает существующий файл, если есть отличия. | false |
zsh_users_config | Список файлов zsh, которые необходимо распределить для пользователя. | [] |
zsh_system_config | Список файлов zsh, которые необходимо распределить глобально. | [] |
zsh_users | Список пользователей, которым следует установить zsh как основную оболочку. | {{ ansible_user }} |
zsh_dependencies | Список дополнительных пакетов для установки. | [] |
zsh_executable | Путь к исполняемому файлу. | /usr/bin/zsh |
Molecule: Юнит-тест не проходит, если для
zsh_executable
указан символическая ссылка.
Свойство zsh_users_config
представляет собой словарь:
zsh_users_config:
- template: "zshrc.j2"
filepath: "$HOME/.zshrc"
Этот простой пример распределяет .zshrc
для пользователя. Ansible ищет файл zshrc.j2
в вашей папке template
.
Пути
Вот список возможных путей из документации zsh (5.2 Файлы).
Пользователи
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"
Копирование выполняется в контексте соответствующего пользователя.
Система
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"
Примеры
Вот несколько примеров использования этой роли.
- Базовый
Установить zsh и установить его как основную оболочку для пользователя ansible. - Несколько пользователей
Установить zsh и установить его как основную оболочку для списка указанных пользователей. - Пользовательский файл конфигурации
Распределить пользовательский файл.zshrc
для списка пользователей. - Пользовательские зависимости
Распределить пользовательский файл.zshrc
с зависимостью. - Дополнительные функции
Распределить пользовательский файл.zshrc
с функциямиautosuggestions
иsyntax-highlighting
. - Полный
Полный пример оболочки zsh.Пример превью
Базовый
Установите zsh и установите его как основную оболочку для ansible_user.
- Установить пакет zsh.
- Установить zsh как основную оболочку для
ansible_user
.
- name: zsh
hosts: all
roles:
- patbec.zsh
tasks:
ansible.builtin.debug:
msg: "ZSH был установлен и установлен как основной для пользователя {{ ansible_user }}."
Несколько пользователей
Установите zsh и установите его как основную оболочку для списка указанных пользователей.
- Установить пакет zsh.
- Установить zsh как основную оболочку для указанных пользователей.
- name: zsh
hosts: all
vars:
zsh_users:
- lorem
- ipsum
roles:
- patbec.zsh
tasks:
ansible.builtin.debug:
msg: "ZSH был установлен и установлен как основной для 2 пользователей."
Пользовательский файл конфигурации
Распределите пользовательский файл .zshrc
для списка пользователей.
- Установить пакет zsh.
- Установить zsh как основную оболочку для указанных пользователей.
- Распределить пользовательский файл
.zshrc
для каждого пользователя.
- 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 был установлен и пользовательский файл был распределен."
Файл zshrc.j2
в вашей папке шаблонов:
{% if zsh_config_overwrite is true %}
#
# {{ ansible_managed }}
#
{% endif %}
# Добавьте ваше содержимое здесь.
Пользовательские зависимости
Распределите пользовательский файл .zshrc
с зависимостью.
- Установить пакет zsh.
- Установить zsh как основную оболочку для указанных пользователей.
- Распределить пользовательский файл
.zshrc
для каждого пользователя. - Установить зависимость.
- 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 был установлен и exa используется для отображения файлов."
Файл zshrc.j2
в вашей папке шаблонов:
{% 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 — это улучшенный перечислитель файлов с дополнительными функциями и лучшими настройками по умолчанию. Он использует цвета, чтобы различать типы файлов и метаданные.
Дополнительные функции
Распределите пользовательский файл .zshrc
с функциями autosuggestions и синтаксического выделения.
- Установить пакет zsh.
- Установить zsh как основную оболочку для указанных пользователей.
- Распределить пользовательский файл
.zshrc
для каждого пользователя. - Установить autosuggestions и 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 был установлен и дополнительные функции были включены."
Файл zshrc.j2
в вашей папке шаблонов:
{% 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
Полный
Полный пример оболочки zsh.
- Установить пакет zsh.
- Установить zsh как основную оболочку для указанных пользователей.
- Распределить пользовательский файл
.zshrc
для каждого пользователя. - Установить autosuggestions, syntax-highlighting и exa.
- Установить настройки
history
,color
и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 был установлен."
Файл zshrc.j2
в вашей папке шаблонов:
Нажмите здесь, чтобы увидеть содержимое
{% 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 %}
#
# Специфичные для хоста дополнения
#
{{ zsh_additional_lines }}
{% endif %}
Превью
Превью этой конфигурации: Вы можете найти используемые ANSI цвета консоли здесь.
Лицензия
Этот проект лицензирован под MIT - См. файл LICENSE для получения дополнительной информации.
Installs and configures zsh for one or more users on Linux.
ansible-galaxy install patbec/ansible-role-zsh