今回は、**「MacのVagrantにubuntuをインストール&起動する方法」**をご紹介します。
とはいえ文章で言われても「なんのこっちゃ」ですよね。
図にすると、こんなことを行います。
自分の持っているMac PC、の上で動いているMacOS、の上に用意された仮想環境VirtualBox、の上で動いているVagrant、の、上で!ubuntuっていうOSを使えるようにするのが目的です。
今回ご紹介する手順は、以下の通りです。
A)MacにVagrantがインストールされているか確認する
B)テストディレクトリ(フォルダ)を作る
C)テストディレクトリ(フォルダ)の中にubuntuをインストールする
D)Vagrantfileを編集する
E)Vagrantfileを読み込む(=vagrant up)
F)おまけ:ubuntuにログインしてみる
なお、今回導入した環境・使用したソフトは以下の通りです。
MacOS High Sierra 10.13.6
Vagrant 2.2.4
VirtualBox 6.0.4
#MacのVagrantにubuntuをインストール&起動させよう
###A) MacにVagrantがインストールされているか確認する
そもそもMacにVagrantが入っているか確認するためには、ターミナルでwhich vagrant
と入力すればOKでした。
$ which vagrant
/usr/local/bin/vagrant
無事にインストールされているようです。
※もしVagrantのインストールがまだの場合は、関連記事「【超入門】VagrantをMacにインストールしてみよう」も合わせてご覧ください。
###B) テストディレクトリ(フォルダ)を作る
次に、vagrant_test(名前は自由です)というファイルを作り、その中にubuntuをインストールしていきます。
# vagrant_testというディレクトリを作る
$ mkdir vagrant_test
# vagrant_testディレクトリ内に移動する
$ cd vagrant_test/
# vagrant_testディレクトリ内にいることを確認する
$ pwd
/Users/tachibananokotone/vagrant_test
これで、きちんとディレクトリが作られていることがわかりました。
###C) テストディレクトリ(フォルダ)の中にubuntuをインストールする
では、こちらにインストールしてきましょう。
$ vagrant init bento/ubuntu-18.04
このあと"A Vagrantfile has been placed in this directory."うんちゃらかんちゃら・・・と出てくれば成功です。
ls
で展開してみると、きちんと「Vagrantfile」という名前のファイルが作られていることがわかります。
$ ls
Vagrantfile
###D) Vagrantfileを編集する
発行されたVagrantfileをを編集しましょう。
まず、Vagrantfileを開きます。
$ vi Vagrantfile
viエディタが立ち上がって、何やら大量の文字が出てきたと思いますが、# config.vm.network "private_network"...
と書かれている行を見つけてください。ちなみに私は35行目あたりに見つけました。
$ #config.vm.network "private_network", ip:"192.168.33.10"
文頭でコメントアウトしている#
を取り除きます。
$ config.vm.network "private_network", ip:"192.168.33.10"
「このネットワークで動かしてね〜」という、VirtualBoxさんへの伝言になる部分がアクティベートされました。
これで、ファイルの編集は完了です。
エスケープキー**【Esc】**と、ファイルを保存してからviを終了するコマンド:wq
を入力し、viからターミナルに戻りましょう。
######【余談】 viからターミナルに戻るには、さまざまな方法があります。
:q viの終了 (何も書き込まずに終了したい場合)
:wq ファイルに書込んだものを上書き保存してviを終了
:q! 編集結果をファイルに書込まずに終了
:wq! リードオンリーのファイルに強制的に書き込んで終了
###E) Vagrantfileを読み込む(=vagrant up)
さて、次が最後です。
Vagrantfileの準備ができたので、「これで仮想環境を整えてください」とVirtualBoxに伝えてあげましょう。
$ vagrant up
少し時間がかかるかもしれませんが、ubuntuが起動を始めます。
==> default: Successfully added box 'bento/ubuntu-18.04' (v201812.27.0) for 'virtualbox'!
最終的にこちらのメッセージが出れば、ubuntuのインストール&起動は完了です!
###F) おまけ:ubuntuにログインしてみる
せっかく立ち上げたんだから、ログインしてみたいわ〜という方は、以下のコマンドをお試しください。
$ vagrant ssh
Welcome to Ubuntu 18.04.1 LTS
ちゃんとwelcomeしてくれるはずです♪
ログアウトして元の環境に戻る場合は、下記を実行してください。
$ exit #ubuntuからログアウトする
logout
$ vagrant halt #Vagrantをシャットダウンする
==> default: Attempting graceful shutdown of VM...
$ pwd #現在の作業ディレクトリを表示
/Users/tachibananokotone/vagrant_test
B)で作ったファイル(vagrant_test)に戻ってきていますね。
お疲れさまでした!
#シンタックスエラーが出てしまった場合
よっしゃVagrantfileも修正したし、あとはインストールだ〜!
vagrant up
ドーン!
しかし、こんなエラーが出てしまいました。
$ vagrant up
Vagrant failed to initialize at a very early stage:
There is a syntax error in the following Vagrantfile. The syntax error
message is reproduced below for convenience:
2: syntax error, unexpected *
-*- mode: ruby -*-
^
シンタックスエラー。
「2行目のプログラムの構文が間違ってるぞ〜!」と言われていますね。
config.vm.network
のコメントアウトの他に、いじってないはずなんだけどな・・・。
と思いつつ、ご指摘された-*- mode: ruby -*-
周辺をみてみると、こんな感じになっていました。
#
-*- mode: ruby -*-
# vi: set ft=ruby :
はぁ。
2行目にスペースが入ってるからいけないのですかね?(初心者)
何が正しいのかわからないと、対処の仕方もわからないので、「vagrantfile "-*-" "mode: ruby"」で検索してみました。
# -*- mode: ruby -*-
# vi: set ft=ruby :
なるほど。
正しい構文は、こちららしい。
どうやら1行目の無駄な改行とインデントが、エラーの原因のようです。
というわけで、スペースを削除したいんだけど、deleteキーが効かないんですね・・・。
なぜならコマンドモードになっているためです。
viには「編集モード」と「コマンドモード」があって、後者のモードでは、文字の追加・削除・コピーなどといった編集ができません。
そのためコマンドという、決められたキーを打つ必要があります。
viのコマンドモードで文字を削除するにはx
と打ち込みます。
カーソルがある位置の文字を削除してくれます。
消しすぎた!という時は、a
で文字を追加することができますよ。
詳しくは「vimの基本操作」を参照させていただきました。
https://qiita.com/tasaki-i3/items/49ebad1dca20c669ad25
動画の方がわかりやすいよ〜という方は、ぜひこちらをご参照ください♪
Youtube資料「MacのVagrantにubuntu-18.04をインストールする方法」
https://www.youtube.com/watch?v=VMYNyo58tMg&list=PLrgWyumghXpFkW3nK6rYDJT_R6LRX9aHe&index=5&t=47s
では〜