LoginSignup
13
11

More than 5 years have passed since last update.

Alpine Linux を VirtualBoxに入れてVagrant化してみた(その2)

Last updated at Posted at 2016-03-13

Alpine Linux を VirtualBoxに入れてVagrant化してみた(その1)
http://qiita.com/hexaforce/items/59c06cbeead814113a6b

続きです。

VagrantSSHのためのユーザ設定

まず、DNSが通ってないので悲しいことにネットが繋がりません。(IP直打ち仕様?)
localhost:~# setup-dns -d localhost -n 8.8.8.8

次に、apk というパッケージ管理コマンドがありますがmainレポジトリしか設定されてません。
/etc/apk/repositoriesにレポジトリを追加します。

一見して無いものを追加、ミラーは適時合わせてください。
localhost:~# cat /etc/apk/repositories

echo "http://dl-1.alpinelinux.org/alpine/v3.3/main" >> /etc/apk/repositories
echo "http://dl-1.alpinelinux.org/alpine/v3.3/community" >> /etc/apk/repositories
echo "http://dl-1.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories
echo "http://dl-1.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories
echo "http://dl-1.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories

※edgeは不安定というより新しいもの、既存のものとlibのバージョンが合わなくなるため非推奨といったものがあります。MongoDBなど

パケージ更新
localhost:/# apk update

とりあえず、vagrantユーザのために curl と sudo が欲しいので
localhost:~# apk add curl sudo

vagrantのssh設定は面倒なのでデフォルトで行います。
(vagrant init した時のデフォルトVagrantfileでいけるようにする)

Vagrantデフォルト
・sshdの設定は鍵認証かつパスワード認証であること
・秘密鍵はvagrant自体が最初から持っていて不変
・秘密鍵はvagrantのバージョンがあがっても変わらない
・公式公開鍵はGithubにある(橋本Mitchell さんのやつ?)
・ssh先は127.0.0.1:2222
・sshユーザは「vagrant」パスワードも「vagrant」

・vagrantユーザの追加
localhost:~# addgroup vagrant
localhost:~# adduser vagrant -g vagrant -G wheel -s /bin/ash
localhost:~# echo "vagrant ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

・ssh鍵の設定
localhost:~# su - vagrant
localhost:~$ mkdir ~/.ssh
localhost:~$ chmod 0700 ~/.ssh
localhost:~$ curl -L -o ~/.ssh/authorized_keys https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub
localhost:~$ chmod 0600 ~/.ssh/authorized_keys

これで vagrant ssh できる設定ができました。
shutdown して package します。

localhost:~$ sudo su
localhost:~# shutdown -h now

できませんよね〜

http://wiki.alpinelinux.org/wiki/Alpine_Linux_Init_System
にもあるように Alpineでは OpenRC を使います。

localhost:~# poweroff

Vagrant BOXイメージの作成

VMイメージのあるディレクトリで vagrant package すると「package.box」ができます。

$ cd ~/VirtualBox\ VMs/alpine-3.3.1-x86_64
$ vagrant package --base alpine-3.3.1-x86_64
$ ls | grep package.box
package.box

どこか適当なディレクトリで動くか実験します。
$ mkdir ~/test
$ mv package.box ~/test
$ cd ~/test
$ vagrant init alpine-3.3.1-x86_64
$ vagrant box add alpine-3.3.1-x86_64 package.box
$ vagrant up
$ vagrant ssh

お疲れ様でした!と言いたいところですが、何やらvagrantがエラー吐いてます・・・
Vagrantは仮想マシンを立ち上げたあと実際にSSHしてある程度のプロビジョニングを行います。
RHELやUbuntuなど一般的なOSでは問題がありませんがAlpineに合わせて設定されていないためエラーがでます。
Vagrantfileに修正が必要となります。

vagrantのデフォルトShellは /bin/bash で Alpineは /bin/ash です。
下記の1行を追加します。
[Vagrantfile追加]
config.ssh.shell = "/bin/ash"

VirtualBoxから起動した場合は問題ありませんが、vagrantから起動した場合 eth1 が無視されます。
private_network を有効にして auto_config: false を追加します。
[Vagrantfile修正]
# config.vm.network "private_network", ip: "192.168.33.10"
         ↓
config.vm.network "private_network", ip: "192.168.33.10", auto_config: false

vagrantデフォルトの同期フォルダ設定が働いてエラーがでます。それを無効化します。
下記の1行を追加します。
[Vagrantfile追加]
config.vm.synced_folder ".", "/vagrant", disabled: true

もしセキュアな仕様・要件がある場合は sshd.conf をいじったり ssh-keygen で鍵変更したり Vagrantfile をいじったりなどご自身で行ってください。
vagrant公式リファレンスにいろいろ載ってます。

Alpine基本的な使い方
http://wiki.alpinelinux.org/wiki/Alpine_setup_scripts

自分専用のカスタムISOの作り方
http://wiki.alpinelinux.org/wiki/How_to_make_a_custom_ISO_image

[補足]最低限知っといたほうがいいVagrantコマンド

VMマシンの状態確認
$ vagrant status

登録されているboxイメージリスト確認
$ vagrant box list

VMマシンの初期化
$ vagrant destroy
もしくは
$ vagrant destroy [VMマシン名]
VMマシンがdefaultしか無い場合defaultが初期化されます。
vagrant init した時マシンが1つも無いとdefaultが自動作成されます。

boxイメージ削除
$ vagrant box remove [boxイメージ名]

boxイメージ追加
$ vagrant box add [boxイメージ名] [boxファイルパス]

vagrant起動定義(Vagrantfileが作られます)
$ vagrant init [boxイメージ名]

vagrant ssh確認
$ vagrant ssh-config

VMマシンの停止(ACPIを止めるやつ)
$ vagrant halt

最後に

今課題として
・同期ファイルを設定したい
・AlpineのXorgを動かしたい
と思っています。
VBoxGuestAdditionsがビルドできると可能性ありそう・・・

13
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11