viasite-ansible.zsh
テスト済みのOS: Ubuntu 20.04, Ubuntu 22.04, Ubuntu 24.04, MacOS 14.4
古いテスト結果: Ubuntu 18.04, MacOS 10.12, CentOS 8
viasite-ansible.zsh 1.x、2.xから3.0にアップグレードする方法は こちらを参照してください。
ゼロ知識インストール
UbuntuまたはDebianを使用していて、Ansibleに不慣れな場合は、ターゲットマシンで以下のコマンドを実行してください:
curl https://raw.githubusercontent.com/viasite-ansible/ansible-role-zsh/master/install.sh | bash
このコマンドはpip3、ansibleのインストールと、rootおよび現在のユーザー用にzshを設定します。
MacOSのゼロ知識インストール
必要条件: brew、python。ユーザーのパスワードを要求します。以下のコマンドでansibleをインストールし、現在のユーザーおよびオプションでroot用にzshを設定します:
curl https://raw.githubusercontent.com/viasite-ansible/ansible-role-zsh/master/install-macos.sh | bash
次に、ターミナルアプリケーションの設定を行ってください。
含まれるもの
- zsh
- antigen
- oh-my-zsh
- powerlevel9kテーマ
- zsh-autosuggestions
- zsh-syntax-highlighting
- unixorn/autoupdate-antigen.zshplugin
- sorenson-axial/fzf-widgets
- urbainvaes/fzf-marks
特徴
- powerlevel9kテーマのプロンプトセグメントとカラーカスタマイズ
- デフォルトのカラーはSolarized DarkとPuttyのデフォルトグレー端末でテスト済み
- ymlからカスタムプロンプト要素を追加
~/.zshrc.local
または/etc/zshrc.local
を使用したカスタムzsh設定/etc/profile.d
スクリプトを読み込む- あなたのマシンに役立つプラグインのみをインストールします。例えば、Dockerがない場合、プラグイン
docker
はインストールされません。
1.5分デモ
カラースキーム
Midnight Commander Solarized Darkスキン
Solarized Darkスキームとmc
を使用している場合は、スキンをインストールし、zsh_mc_solarized_skin: yes
を設定してください。
Vagrantでのデモインストール
実際のマシンにインストールする前に、役割が機能するかをテストできます。
vagrant up
を実行し、その後にvagrant ssh
を実行して仮想マシンに入ります。
注意: VPS(Digital Oceanなど)やDockerにVagrantをインストールすることはできません。ローカルマシンを使用してください。 ダウンロードして、あなたのOS用のVagrantをインストールしてください。
実際のマシンへのインストール
ゼロ知識インストール: 上記を参照してください。
手動インストール
- Ansibleのインストール Ubuntuの場合:
sudo apt update
sudo apt install python3-pip -y
sudo pip3 install ansible
- ロールをダウンロードします:
ansible-galaxy install viasite-ansible.zsh --force
- プレイブックを書くか、playbook.ymlを使用します:
- hosts: all
vars:
zsh_antigen_bundles_extras:
- nvm
- joel-porquet/zsh-dircolors-solarized
zsh_autosuggestions_bind_key: "^U"
roles:
- viasite-ansible.zsh
- プレイブックをプロビジョニングします:
ansible-playbook -i "localhost," -c local -K playbook.yml
macOS上でrootユーザー用にロールをプロビジョニングしたい場合は、手動でパッケージをインストールする必要があります:
brew install zsh git wget
これにより、ansibleリモートユーザー用にzsh環境がインストールされます。他のユーザーにzshを設定したい場合は、zsh_user
変数を定義する必要があります:
プレイブック経由で:
- hosts: all
roles:
- { role: viasite-ansible.zsh, zsh_user: otheruser }
- { role: viasite-ansible.zsh, zsh_user: thirduser }
またはコマンドで:
ansible-playbook -i hosts zsh.yml -e zsh_user=otheruser
- fzfをシェル拡張なしでインストールします。バイナリをダウンロードするか、macOS上で
brew install fzf
を実行します。
注意: tmux-fzf
は使用していませんし、その動作もテストしていません。
マルチユーザー共有インストール
ホストに10人以上のユーザーがいる場合、数十の設定と数千のファイルを管理したくないでしょう。
この場合、単一のzsh設定をデプロイし、すべてのユーザーに含めることができます。
いくつかの制限があります:
- ユーザーはzsh設定に対して読み取り専用アクセスを持つ
- ユーザーはグローバルで有効なバンドルを無効にできない
- キャッシュ書き込み権限が拒否される可能性があるバグ
- oh-my-zshテーマに関するバグが発生する可能性がある
共有設定をインストールするには、zsh_shared: yes
を設定します。
設定は/usr/share/zsh-config
にインストールされます。その後、単にユーザーの設定に追加できます。
すべてのユーザーへのインストール
zsh_source_for_all_users: yes
を設定します。
source /usr/share/zsh-config/.zshrc
複数のユーザーに対してカスタム設定をプロビジョニングすることはまだ可能です。
設定
~/.zshrc
を編集してはいけません!
カスタム設定を~/.zshrc.local
(ユーザー毎)または/etc/zshrc.local
(グローバル)に追加してください。
.zshrc.local
はansibleによって触れられることはありません。
ターミナルアプリケーションの設定
powerline fontsをダウンロードし、好みのフォントをインストールします。 スクリーンショットはこちらで確認できます。
カラースキームを設定します。
個人的には、Solarized Darkカラースキーム、iTermでPowerline用のDroid Sans Mono、PuttyでDejaVu Sans Monoを使用しています。
iTerm
プロファイル - テキスト - フォントを変更 - "for Powerline"フォントを選択
プロファイル - カラー - カラープリセット... - Solarized Darkを選択
Putty
設定 - ウィンドウ - 外観 - フォント設定
Putty用Solarized Darkをダウンロードできます。
Gnome Terminal
gnome-terminalには組み込みのSolarized Darkがありますが、背景色スキームとパレットスキームの両方を選択する必要があります。
ホットキー
ホットキーはdefaults/main.ymlのzsh_hotkeys
で確認できます。
ホットキーのサンプル定義:
- { hotkey: '^r', action: 'fzf-history' }
# バンドルへの依存関係あり
- { hotkey: '`', action: autosuggest-accept, bundle: zsh-users/zsh-autosuggestions }
autosuggest-accept
を`ホットキーに設定することは便利ですが、Midnight Commanderと競合します(Ctrl+Oサブシェルが壊れる)。
デフォルトのホットキーを置き換えずにカスタムホットキーを追加するには、zsh_hotkeys_extras
変数を使用します:
zsh_hotkeys_extras:
- { hotkey: '^[^[[D', action: backward-word } # alt+left
- { hotkey: '^[^[[C', action: forward-word } # alt+right
# 例: <Ctrl+.><Ctrl+,>で前のコマンドの2番目の引数を挿入
- { hotkey: '^[,', action: copy-earlier-word } # ctrl+,
エイリアス
コマンドのデプロイを簡単にするためにエイリアスを使用できます。 エイリアス設定はホットキー設定とほとんど同じです:
zsh_aliases:
- { alias: 'dfh', action: 'df -h | grep -v docker' }
# バンドルへの依存関係あり、デフォルトのエイリアスを置き換えない
- zsh_aliases_extra
- { alias: 'dfh', action: 'df -h | grep -v docker', bundle: }
プラグインのデフォルトホットキー:
- → - 自動提案を受け入れる
- Ctrl+Z - 現在のアプリケーションをバックグラウンドに移動、再度押すとフォアグラウンドに戻ります
- Ctrl+G - ブックマークされたディレクトリにジャンプします。ディレクトリ内で
mark
を使用してブックマークに追加します - Ctrl+R - コマンドの履歴を表示
- Ctrl+@ - すべてのfzfウィジェットを表示
- Ctrl+@,C - fzf-change-dir、速く押してください!
- Ctrl+\ - fzf-change-recent-dir
- Ctrl+@,G - fzf-change-repository
- Ctrl+@,F - fzf-edit-files
- Ctrl+@,. - fzf-edit-dotfiles
- Ctrl+@,S - fzf-exec-ssh(あなたの~/.ssh/configを使用)
- Ctrl+@,G,A - fzf-git-add-file
- Ctrl+@,G,B - fzf-git-checkout-branch
- Ctrl+@,G,D - fzf-git-delete-branches
バンドルの設定
デフォルトのバンドルはdefaults/main.ymlで確認できます。
デフォルトのバンドルが気に入っていて、追加のバンドルを追加したい場合は、zsh_antigen_bundles_extras
変数を使用します(上記のプレイブック例を参照)。
デフォルトの一部のバンドルを削除したい場合は、zsh_antigen_bundles
変数を使用する必要があります。
リストのフォーマットはantigenに一致します。以下のすべてのバリエーションが有効です:
- docker # oh-my-zshプラグイン
- zsh-users/zsh-autosuggestions # GitHubからのプラグイン
- zsh-users/[email protected] # 固定バージョンのGitHubからのプラグイン
- ~/projects/zsh/my-plugin --no-local-clone # ローカルディレクトリからのプラグイン
バンドルはロード条件を使用できます。条件には2タイプがあります:
- コマンド条件。バンドルに
command
を追加します:
- { name: docker, command: docker }
- name: docker-compose
command: docker-compose
バンドル docker
と docker-compose
は、ターゲットシステムにコマンドが存在する場合のみ設定に追加されます。
- when条件。
tasks
で定義するように任意のansible条件を定義できます:
# zsh >= 4.3.17のためのみロード
- name: zsh-users/zsh-syntax-highlighting
when: "{{ zsh_version is version_compare('4.3.17', '>=') }}"
# macOS用にのみロード
- { name: brew, when: "{{ ansible_os_family != 'Darwin' }}" }
注意: 条件は"{{ }}"
でラップする必要があります。
カスタム設定
zsh_custom_before
またはzsh_custom_after
変数に任意のコードを追加できます。
zsh_custom_before
- antigen.zshのインクルード前zsh_custom_after
-~/.zshrc.local
のインクルード前
アップグレード
viasite-ansible.zsh v3.0はantigen v2.0を導入し、antigen 1.xとの後方互換性がありません。
スムーズなアップグレードの時間をあまりかけていないため、手動でいくつかのアクションを行う必要があるかもしれません。
ロールをプロビジョニング後にpowerlevel9kプロンプトがロードされない場合は、antigen reset
を実行してください。
シェルを再オープンすれば、すべてが完了するはずです。
antigen v1へのダウングレード
Antigen v2は非常に速く(スタートアップに対して最大2倍)、何かがうまくいかなかった場合は、antigen v1にダウングレードできます。 以下のzsh 4.3ユーザー向けの注意を参照してください。
zsh 4.xユーザー向け
Antigen v2はzsh < 5.0では動作しません。zsh 4.xを使用している場合は、プレイブックに以下を追加してください:
zsh_antigen_version: v1.4.1
既知のバグ
su username
でエラーが発生する場合
antigenの問題を参照してください。
rootとsuユーザーの両方がantigenを使用している場合は、su username
の代わりにsu - username
を使用してください。
または、バンドルのエイリアスsuser
を使用できます。
さらに、次のコマンドを~/.zshrc.local
に追加することで修正を試みることができます:
alias su='su -'
ただし、このエイリアスはsu
を使用しているスクリプトを壊す可能性があります。