2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vagrantで自前のboxを作成する

Last updated at Posted at 2019-12-12

公式でboxを配布していますが、一度最初からやってみたいなと思い、やってみました。
ちなみにWindows環境でやっています。

手順というよりは、作業ログみたいな感じで記録します。

用意するもの

・Linuxのインストールメディア(ISO)
Docker公式が推している軽量のLinux「Alpine Linux」とか、「Ubuntu」とかやりやすそうですね。
ここでは手元にあった「RedHat Enterprise Linux」を使用します。「CentOS」でも同じだと思います。

・Vagrant
・VirtualBox

上記2つはインストール前提で話を進めます。

VirtualBoxの設定

まずはLinuxをインストールしていきます。

「新規」をクリックして下記のように設定しました。
・仮想マシン名は「rhel7」
・Typeは「Linux」、バージョンは「Red Hat(64bit)」
・メモリ512MB、ファイルタイプVDI、可変サイズ、容量8GB

起動する前に「設定」をしました。
・NICはアダプタ1のみでNAT割り当てにする(デフォルト設定)
・オーディオを無効化する
・USBを無効化する

OSインストール

・デバイスの光学ドライブにインストールメディアを指定する
・言語は「日本語」を指定
・ソフトウェアの選択は、適宜設定する
・イーサーネットはこの段階では設定しない
・rootパスワードは、本家ドキュメントに合わせて「vagrant」
・ユーザーの作成で「vagrant」、パスワードも「vagrant」
・ライセンス同意

インストール完了後、再起動してrootでログインする

NIC有効化

このままだとssh等で繋げられないのでNICを設定します。
私の環境では「ifcfg-enp0s3」を利用します。

ssh
ls -l /etc/sysconfig/network-scripts/ifcfg-enp0s3
sed -i -e "s/ONBOOT=no/ONBOOT=yes/" /etc/sysconfig/network-scripts/ifcfg-enp0s3
ls -l /etc/sysconfig/network-scripts/ifcfg-enp0s3

Guest Additions

VirtualBox上で
[デバイス]→[光学ドライブ]→[Guest Additions CD イメージの挿入]

ssh
mkdir /mnt/cdrom
ls -ld /mnt/cdrom

mount /dev/cdrom /mnt/cdrom/
cd /mnt/cdrom/
pwd
ls -l VBoxLinuxAdditions.run
sh VBoxLinuxAdditions.run

その他

この辺は環境に合わせて自由に設定してみてください。
・デフォルトランレベル
・不要なサービスの停止
・ホストオンリーアダプタの利用

sudoの設定

ssh
visudo

下記を記載する
vagrant ALL=(ALL) NOPASSWD: ALL

ssh
su - vagrant
sudo ls /root

SELinuxの設定

ssh
ls -l /etc/sysconfig/selinux
vi /etc/sysconfig/selinux

下記を記載する
SELINUX=disabled

ファイアウォールの設定

ssh
systemctl status firewalld
systemctl stop firewalld
systemctl status firewalld

鍵の登録

ssh
ls -ld /home/vagrant/.ssh
mkdir -m 700 -p /home/vagrant/.ssh
ls -ld /home/vagrant/.ssh

ls -l /home/vagrant/.ssh/authorized_keys
touch /home/vagrant/.ssh/authorized_keys
chmod 600 /home/vagrant/.ssh/authorized_keys
chown -R vagrant:vagrant /home/vagrant
ls -l /home/vagrant/.ssh/authorized_keys

vi /home/vagrant/.ssh/authorized_keys

下記を記載する
text:ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key

ssh
cat /home/vagrant/.ssh/authorized_keys

※やらないと、boxの起動時に「default: Warning: Authentication failure. Retrying...」とメッセージが出続ける

ボックスの作成、登録

ssh
shutdown -h now

コマンドプロンプトで操作

コマンドプロンプト
vagrant --version

ボックス化

コマンドプロンプト
vagrant package --base [名前.box]

登録

コマンドプロンプト
vagrant box add [VM名] [名前.box]
vagrant box list

初期化

コマンドプロンプト
vagrant init [ユーザ名]/[VM名]

カレントに「Vagrantfile」が生成される
テキストエディタで開き、下記を追記する
config.vm.box = "[名前]"
config.ssh.guest_port = 22
config.ssh.username = "vagrant"
config.ssh.host = "127.0.0.1"
config.ssh.private_key_path = "C:/Users/[ユーザ名]/.vagrant.d/insecure_private_key"
config.ssh.insert_key = false

ボックスの起動

起動

コマンドプロンプト
vagrant up

ステータス確認

コマンドプロンプト
vagrant status

接続

コマンドプロンプト
vagrant ssh

停止

コマンドプロンプト
vagrant halt

設定確認

コマンドプロンプト
vagrant ssh-config

再起動

コマンドプロンプト
vagrant reload

boxのコピー

配布する際など、boxをコピーする場合はこちら

コマンドプロンプト
vagrant package [VM名] --output [名前.box]
2
5
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
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?