zsh

иконка консоли zsh

Ansible Роль: ZSH

Ansible Role Ansible Quality Score GitHub

Устарело: Эта роль была перенесена в Коллекцию, здесь вы можете найти новую версию.

Это простая роль для установки и настройки 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"

Примеры

Вот несколько примеров использования этой роли.

  1. Базовый
    Установить zsh и установить его как основную оболочку для пользователя ansible.
  2. Несколько пользователей
    Установить zsh и установить его как основную оболочку для списка указанных пользователей.
  3. Пользовательский файл конфигурации
    Распределить пользовательский файл .zshrc для списка пользователей.
  4. Пользовательские зависимости
    Распределить пользовательский файл .zshrc с зависимостью.
  5. Дополнительные функции
    Распределить пользовательский файл .zshrc с функциями autosuggestions и syntax-highlighting.
  6. Полный
    Полный пример оболочки 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 %}

Превью

Превью этой конфигурации: консоль zsh Вы можете найти используемые ANSI цвета консоли здесь.

Лицензия

Этот проект лицензирован под MIT - См. файл LICENSE для получения дополнительной информации.


Вернуться к началу

О проекте

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

Установить
ansible-galaxy install patbec/ansible-role-zsh
Лицензия
mit
Загрузки
100
Владелец