公開鍵を登録する
ssh-copy-idを使うのが楽。
ローカル
ssh-copy-id ubuntu-server-10.04
GitHubにサーバの公開鍵を登録
リモート
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub
セットアップ・スクリプトを走らせる
setup-ubuntu-server.sh
# !/bin/sh
echo 'Refresh packages'
dpkg -l > default_packages
sudo apt-get update
sudo apt-get upgrade
echo 'Install tools'
sudo apt-get install -y screen zsh git-core curl wget
echo 'Clone dotfiles from GitHub'
mkdir -p $HOME/works
git clone --recursive git@github.com:aereal/dotfiles.git $HOME/works/dotfiles
echo 'Make dotfiles symlink on $HOME'
for f in \
.gemrc .gitconfig .gitignore .irssi .proverc \
.pryrc .psqlrc .re.pl .screen .screenrc \
.zsh.d .zshrc .zshenv; do
ln -s $HOME/works/dotfiles/$f $HOME/
done
echo 'Change default shell to zsh'
chsh -s `which zsh`
echo 'Install rbenv'
curl -L https://raw.github.com/fesplugas/rbenv-installer/master/bin/rbenv-installer | bash
export PATH=$HOME/.rbenv/bin:$PATH
eval "$(rbenv init -)"
echo 'Install dependencies'
rbenv bootstrap-ubuntu-10-04
echo 'Install Ruby 1.9.3 p194'
CONFIGURE_OPTS=--enable-shared rbenv install 1.9.3-p194
rbenv rehash; rehash
echo 'Update gems'
gem update --system
gem update
echo 'Install Bundler'
gem install --pre bundler
- 次のパッケージをインストール
- zsh
- screen
- git-core
- curl
- wget
- dotfilesをcloneしてきてsymlinkをはる
- サブモジュールもinit && update
- ログインシェルをzshに
- rbenvをインストール
- rbenvでRubyのインストールに必要なライブラリをインストール (bootstrap-ubuntu-10-04)
- Ruby 1.9.3p194をインストール
- RubyGemsとプリインストールされているgemをアップデート
- Bundlerをインストール
ローカル
scp setup-ubuntu-server.sh ubuntu-server-1004:
ssh -t ubuntu-server-1004 'sh setup-ubuntu-server.sh'
どうして自動化したがるの?
zsh以外のシェルを使おうとは思っていない (慣れの問題)。
しかしzshをインストールするまで、インタラクティヴシェル上でコマンドを入力した場合、zshのヒストリに残らない。
ヒストリは財産であるので、失われるのは渡し難い。
そこで操作を記録、永続化するためにシェルスクリプトを用いる。
できるだけローカルから ssh-copy-id
や scp
などを駆使して、どこかしらのzshのヒストリに残るようにする。
chef-soloなどのツールもあるが、大袈裟すぎるのとそれら自体をインストールするためにけっきょく他の手段を使わなければいけないため、最初からシェルスクリプトのみを用いることに。