mcpField
C
chezmoi-chef

chezmoi-chef

github.com/fonnesbeck開発097 回インストール4 週間前に更新
リポジトリ

chezmoi-chef について

chezmoi-chefは、chezmoiで複数マシンのドットファイルを管理するスキルです。テンプレート、暗号化、パスワードマネージャー連携、適用時のスクリプトを扱います。

主な機能

  1. 01複数マシンのドットファイル管理
  2. 02マシン別設定のテンプレート化
  3. 03機密ファイルの暗号化
  4. 04パスワードマネージャー連携
  5. 05適用時にセットアップスクリプトを実行

活用シーン

  1. 01新しいマシンで設定を初期化
  2. 02OS別の設定を生成
  3. 03暗号化したSSHキーを同期
  4. 04適用時にソフトウェアをインストール

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/fonnesbeck/shay-mwa --skill chezmoi-chef

インストール後、Claude Code で/chezmoi-chefを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
commands.md
password-managers.md
templates.md

詳細

Chezmoi によるドットファイル管理

Chezmoi は、テンプレート機能、暗号化、パスワードマネージャーとの連携により、複数のマシンでドットファイルを管理します。

クイックリファレンス

chezmoi init                    # Initialize
chezmoi add ~/.bashrc           # Add file
chezmoi add --template ~/.zshrc # Add as template
chezmoi add --encrypt ~/.secret # Add encrypted
chezmoi edit ~/.bashrc          # Edit and apply
chezmoi apply                   # Apply all changes
chezmoi diff                    # Preview changes
chezmoi update                  # Pull and apply
chezmoi cd                      # Shell in source dir

基本的なワークフロー

新しいマシンで初期化する

GitHub から取得する場合:

chezmoi init --apply github-username

インストールと初期化を1行で実行:

sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply github-username
管理対象にファイルを追加する
chezmoi add ~/.bashrc ~/.zshrc ~/.gitconfig    # Multiple files
chezmoi add -r ~/.config/nvim                  # Directory
chezmoi add --template ~/.bashrc               # As template
chezmoi add --encrypt ~/.ssh/id_rsa            # Encrypted
管理対象のファイルを編集する
chezmoi edit ~/.bashrc          # Opens source file
chezmoi edit --apply ~/.bashrc  # Auto-apply after save
変更を同期する
chezmoi cd                      # Enter source directory
git add . && git commit -m "update dotfiles" && git push
exit
chezmoi apply                   # Apply locally

または、chezmoi の Git ラッパーを使用します:

chezmoi git add .
chezmoi git commit -m "update"
chezmoi git push

テンプレート機能

マシンごとの設定を作成します。詳しい手順については、templates.md を参照してください。

テンプレートに変換:

chezmoi add --template ~/.bashrc
# or
chezmoi chattr +template ~/.bashrc

一般的なパターン:

# OS-specific
{{ if eq .chezmoi.os "darwin" -}}
export PATH="/opt/homebrew/bin:$PATH"
{{- else if eq .chezmoi.os "linux" -}}
export PATH="/home/linuxbrew/.linuxbrew/bin:$PATH"
{{- end }}

# Hostname-specific
{{ if eq .chezmoi.hostname "work-laptop" -}}
export HTTP_PROXY="http://proxy.company.com:8080"
{{- end }}

# Distro-specific (Linux)
{{ if eq .chezmoi.osRelease.id "fedora" -}}
alias update="sudo dnf upgrade"
{{- else if eq .chezmoi.osRelease.id "ubuntu" -}}
alias update="sudo apt update && sudo apt upgrade"
{{- end }}

~/.config/chezmoi/chezmoi.toml でカスタム変数を設定:

[data]
  email = "[email protected]"
  editor = "nvim"

テンプレートをテスト:

chezmoi execute-template '{{ .chezmoi.os }}'
chezmoi data  # Show all variables
chezmoi cat ~/.bashrc  # Show rendered output

シークレット管理

シークレットをコミットしないよう、パスワードマネージャーと連携します。すべての連携方法については、password-managers.md を参照してください。

1Password の例

設定(~/.config/chezmoi/chezmoi.toml):

[onepassword]
  command = "op"
  prompt = true

テンプレート:

export GITHUB_TOKEN='{{ onepasswordRead "op://Personal/github/token" }}'
export AWS_ACCESS_KEY='{{ onepasswordRead "op://Work/aws/access-key" }}'
Bitwarden の例
export API_KEY='{{ (bitwarden "item" "api-credentials").login.password }}'
pass の例
export SECRET='{{ pass "path/to/secret" }}'

暗号化

ソースディレクトリに保存する機密ファイルを暗号化します。

age を使ったセットアップ
chezmoi age keygen -o ~/.config/chezmoi/key.txt

設定:

encryption = "age"
[age]
  identity = "~/.config/chezmoi/key.txt"
  recipient = "age1..." # Public key from keygen output
暗号化されたファイルを追加する
chezmoi add --encrypt ~/.ssh/id_rsa
chezmoi add --encrypt ~/.aws/credentials

ファイルは encrypted_ 接頭辞付きで保存され、適用時に復号されます。

スクリプトの実行

適用時にセットアップ作業のスクリプトを実行します。

ソースディレクトリに作成します:

chezmoi cd

スクリプトの命名規則:

  • run_once_install.sh - 一度だけ実行します
  • run_onchange_setup.sh - スクリプトが変更されたときに実行します
  • run_always.sh - 適用のたびに実行します

run_once_install-packages.sh の例:

#!/bin/bash
{{ if eq .chezmoi.os "darwin" -}}
brew install ripgrep fd bat
{{- else if eq .chezmoi.osRelease.id "fedora" -}}
sudo dnf install -y ripgrep fd-find bat
{{- end }}

コマンドリファレンス

コマンド一覧については、commands.md を参照してください。

トラブルシューティング

chezmoi doctor    # Check configuration
chezmoi verify    # Verify targets match source
chezmoi diff      # See pending changes
chezmoi status    # File status overview
chezmoi --debug apply  # Verbose output

run_once スクリプトをリセット:

chezmoi state delete-bucket --bucket=scriptState

コメント