Mac用。RaspbianでもChefが使えるのでknife-soloを実行するまでのメモ。
RaspbianをSDカードに焼く
- DownloadからRaspbianイメージをダウンロードする
-
.zipの場合は.imgファイルに展開しておく
- SDカードを指す
-
df -hでSDカードのディスク名をチェックする
-
/dev/diskNsXがディスク名なら/dev/rdiskNがrawディスク名となる - 例えば
/dev/disk1s1なら/dev/rdisk1
-
ddコマンドでイメージを焼く
Macがインストールされたハードドライブを間違えて更新しないように指定するディスクは注意して確認すること
実行例: SDカードが/dev/disk2s1で~/Download/2015-05-05-raspbian-wheezy.imgを焼く場合
cd ~/Downloads
sudo diskutil unmount /dev/disk2s1
sudo dd bs=1m if=2015-05-05-raspbian-wheezy.img of=/dev/rdisk2
sudo diskutil eject /dev/disk2s1
raspi-config
最初の起動時にraspi-configが起動する。しない場合はTerminalから sudo raspi-configを実行する。任意のタイミングでraspi-configは呼び出せる。
設定後、rebootを促されたら再起動する。
パーティションの拡張
初期イメージのままだと2GBまでしか使えないのでSDカードをフルに利用するためにパーティションの拡張を実行する。
- Expand Filesystem
日本仕向け設定
日本語フォントがないとja_JP.UTF-8で文字化けするのでLocaleの設定はPCからリモートで繋いでからでも良いかもしれない。
- Internationalisation Options > Change Locale > ja_JP.UTF-8
- Internationalisation Options > Change Timezone > Asia > Tokyo
- Internationalisation Options > Change Keyboard Layout > Generic 101-key PC > Other > Japanese > Japanese > The default for the keyboard layout > No compose key
ホスト名設定
ホスト名を変更しておく、デフォルトだとraspberrypiなので複数台管理するとややこしくなる。
- Advanced Options > A2 Hostname >
rpi01
無線LANの設定
優先LANを使うのであれば必要なし、USB無線LANアダプタ使う場合は無線LANの設定をする。
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="YOUR_SSID"
psk="YOUR_PASSWORD"
# 0: default, 1: stealth
scan_ssid=0
}
YOUR_SSIDやYOUR_PASSWORDを置き換えて、ステルスSSIDならscan_ssidを1に設定するなど。
sudo reboot
IPアドレスのチェック
リブート後、Username: pi Password: raspberry でログインし、IPアドレスを調べる。
ifconfig
実行するコマンドをコピペしていきたいのでIPアドレスがわかったらPCからsshで接続する。(192.168.1.30を置き換えて読む)
ssh pi@192.168.1.30
パッケージを更新
パッケージを更新。時間がかかるのでしばし待つ。
sudo apt-get update
sudo apt-get upgrade
vimを使う
nanoが使いこなせないので /usr/bin/vim.tiny を使う。
sudo apt-get install -y vim
sudo update-alternatives --set editor /usr/bin/vim.tiny
ユーザの作成
電気工作で遊ぶだけならpiユーザのままでいいけど、外部公開するサーバの場合は以下のような対応を行うのが良いと思われる。(<youraccount>のところを自分のアカウント名に置き換えて読む)
-
piユーザでpasswdコマンドを実行しpiユーザのパスワードを変更しておく -
sudo passwdコマンドを実行しrootのパスワードを変更しておく -
sudo adduser <youraccount>でユーザを追加する -
sudo visudoで<youraccount> ALL=(ALL) NOPASSWD: ALLを最後に追加する - Chef Soloを使うため パスワード無し
sudoを実行できるようにしておく
# includedir /etc/sudoers.d
pi ALL=(ALL) NOPASSWD: ALL
<youraccount> ALL=(ALL) NOPASSWD: ALL
sshの設定
sshの公開鍵を送りつける。(ssh-copy-idはHomebrewからインストールできる)
ssh-copy-id 192.168.1.30
追加できたらパスワードなしでssh出来るかチェック。
ssh 192.168.1.30
ログインできたらsudo vi /etc/ssh/sshd_configで編集してrootのログインとパスワード認証を無効にしておく。外部公開するサーバならポートも変更しておく。
# PermitRootLogin yes
PermitRootLogin no
...
# PasswordAuthentication yes
PasswordAuthentication no
一番最後に以下を追加してLAN内からはパスワード認証を許可しておく。
Match Address 192.168.*.*
PasswordAuthentication yes
ssh再起動
sudo /etc/init.d/ssh restart
Chefでセットアップ
chef-soloでセットアップしたい人向け。
jessieではRaspbian側にruby2.1-devを入れておかないとknife solo prepareでchefがインストールされなかった、以下でruby2.1-devをインストールする。
sudo apt-get install ruby2.1-dev
Ruby 2.2.2以上が必要なRack 2.0がインストールされるようになりknife solo prepareでchefがインストールされない場合、自分でchefをインストールする。
sudo gem i rack -v 1.6.4 --no-ri --no-rdoc
sudo gem i chef --no-ri --no-rdoc
あとはChefのレシピ書いてMacからknife-soloで頑張る。
knife solo prepare 192.168.1.30
knife solo cook 192.168.1.30
ChefでPlatformを使って分岐する場合、Raspbianは以下のような値を持つ。
| key | value |
|---|---|
| platform | raspbian |
| platform_family | debian |