目標
vagrant up
するだけで
- デフォルトのシェルがzsh
- preztoのセットアップも完了している
ような環境を実現する。
はじめに注意
初期状態ではroot権限でprovisionスクリプトが実行されるので、スクリプト内の$HOME
は/root
に置換されてしまう *1。
今回はこの仕様がpreztoセットアップの妨げになるため、Vagrantfileのconfig.vm.provision
にprevileged: false
を指定し、一般ユーザ(vagrant
)で実行されるようにしておく。
config.vm.provision "shell", privileged: false, path: "./vagrant_init.sh"
参考: qiita.com
作成したVagrantfileとprovision用スクリプト
Vagrantfile
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "generic/ubuntu2204" config.vm.synced_folder "./share", "/share" config.vm.provision "shell", privileged: false, path: "./vagrant_init.sh" end
vagrant_init.sh
#!/bin/sh sudo apt update -qq sudo apt install -y -qq zsh git # === zsh === ## "setopt EXTENDED_GLOB"はpreztoインストール時に自動設定されるので書かなくてよい git clone --recursive https://github.com/sorin-ionescu/prezto.git $HOME/.zprezto ## https://qiita.com/honono-bonono/items/66c37d99ffddc66d3a06 ln -s $HOME/.zprezto/runcoms/zlogin $HOME/.zlogin ln -s $HOME/.zprezto/runcoms/zlogout $HOME/.zlogout ln -s $HOME/.zprezto/runcoms/zpreztorc $HOME/.zpreztorc ln -s $HOME/.zprezto/runcoms/zprofile $HOME/.zprofile ln -s $HOME/.zprezto/runcoms/zshenv $HOME/.zshenv ln -s $HOME/.zprezto/runcoms/zshrc $HOME/.zshrc sudo chsh -s $(which zsh) vagrant