Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
71
Help us understand the problem. What is going on with this article?
@Esfahan

Vagrantでboxファイル作成

More than 1 year has passed since last update.

概要

Vagrantで、自分好みのカスタマイズをしたboxを作成する。

[関連記事]
Vagrantのインストール、設定手順
VagrantでSSH鍵の設定

必要要件

Windows上で、Git-bashを使います。その他のクライアントソフトでもOKです。
Git-bashダウンロード

下記コマンドで、[Git-bash]$となっているものが、Git-bash上、付いていないものは、サーバーにsshでログインして実行するものとなります。

環境

  • Vagrant 1.8.1

Vagrant起動

ベースとなるOSを選択して、init & up

[Git-bash]$ vagrant init centos67
[Git-bash]$ vagrant up

パッケージに含めたいものを設定をする

パッケージに含めたい必要なミドルエアのインストールや、その他設定を行う。今回は、下記の2つを行う。

  • 新規ユーザーの追加
  • PHPのインストール

まずはVagrantにSSHでログイン

[Git-bash]$ vagrant ssh

1. ユーザの追加

(こちらを参照)
パスワードなしでsudoできるようにする。

2. PHPのインストール

# yum list installed | grep php
# yum install -y php

MACアドレスとのマッピングを無効にする

vagrantでパッケージをした場合などに、MACアドレスとのマッピングがうまくいかなくなり、Vagrantfileで指定しているipアドレスでアクセスができなくなることがあるので、下記コマンドでマッピングを無効にしておく。

ちなみにエラー時にはこんなものが出る。
The following SSH command responded with a non-zero exit status

参考:http://to-developer.com/blog/?p=1827

$ sudo ln -s -f /dev/null /etc/udev/rules.d/70-persistent-net.rules

Vagrant停止

$ exit
[Git-bash]$ vagrant halt

boxファイルの生成

[Git-bash]$ vagrant package
==> default: Clearing any previously set forwarded ports...
==> default: Exporting VM...
==> default: Compressing package to: c:/vagrant/package.box

package.boxが生成されたことを確認

[Git-bash]$ ls | grep box$
package.box

生成したboxファイルをVagrantに登録

[Git-bash]$ vagrant box add mycentos67 package.box
==> box: Box file was not detected as metadata.Adding it directly...
==> box: Adding boc 'mycentos67' (V0) for provider:
    box: Unpacking necessary files from: file://c:vagrant/package.box
    box: Progress: 100% (Rate: 485M/s, Estimated time remaining --:--:--)
==> box: Succesfully added box 'mycentos67' (v0) for 'virtualbox'!
  • 新しいboxが追加されたことを確認
[Git-bash]$ vagrant box list
centos67 (virtualbox, 0)
mycentos67 (virtualbox, 0)

新しいboxでVagrant起動

別のboxを設定することになるので、
現在のVagrantfileがあるディレクトリではなく、別の場所へ移動して、vagrant initしてください。

[Git-bash]$ vagrant init mycentos67
[Git-bash]$ vagrant up
[Git-bash]$ vagrant ssh

中身確認

  • sampleuserのユーザーの確認
$ sudo su - 
# sudo su - sampleuser
$ whoami
sampleuser
$ groups
sampleuser wheel
  • PHPの確認
$ sudo yum list installed | grep php

ログインユーザーを変更

デフォルトのログインユーザーをsampleuserに変更する。

1. vagrantユーザーの.sshディレクトリを、sampleuserのホームディレクトリ直下にコピー。

$ sudo su -
# cp -rp /home/vagrant/.ssh /home/sampleuser/
# chown sampleuser:sampleuser -R .ssh

既に下記と同様のパーミッションになっていると思いますが、念のため確認してください。
正しいパーミッションになっていないと、SSHでログインできません。

$ sudo chmod 700 /home/sampleuser/.ssh
$ sudo chmod 600 /home/sampleuser/.ssh/authorized_keys

2. OSからログアウトして、秘密鍵の場所を確認

[Git-bash]$ vagrant ssh-config
  (**snip**)
  IdentityFile xxxx/vagrant_private_key
  (**snip**)

3. Vagrantfileに追記

[Git-bash]$ vi Vagrantfile

(**snip**)
# IPアドレスの設定
config.vm.network "private_network", ip: "192.168.33.10"

(**snip**)

# ログイン情報設定
config.ssh.guest_port = 22
config.ssh.username = "sampleuser"
config.ssh.host = "127.0.0.1"
config.ssh.private_key_path = "xxxx/vagrant_private_key"

4. Reload

[Git-bash]$ vagrant reload

vagrantユーザー削除

[Git-bash]$ vagrant ssh
$ sudo userdel vagrant

IPアドレス指定でSSHログインできることを確認

Teratermなどで確認。

$ ssh sampleuser@192.168.33.10

以上

SSH周りがうまく行かないときは、こちらも参考にしてみて下さい。
VagrantでSSH鍵の設定 - [Authentication failure. Retrying…]の対処策

[参考]
Vagrant で作った仮想マシンから Box ファイルを作りなおす
Package化したboxを使うときによく出るエラー
Vagrant で作った VM にやってはいけない2つのこと
vagrantでログインする際のユーザーを変更する

71
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Esfahan
WEB系出身。現在はビッグデータの基盤構築、ETLなどがメイン。 / YouTubeで料理チャンネルやってます → https://www.youtube.com/channel/UCDnYBh2TtUAfQ0Z-tl0jTyw / ゲームもやってます -> https://www.youtube.com/channel/UCeqPhExV09EF5o8lZLO15Eg

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
71
Help us understand the problem. What is going on with this article?