経緯
ドットインストールで「git入門」の学習をしようとしたところ、Linux環境が必要とのことだったため構築。
何年か前に一度構築したことがあったが、手順は完全に頭から消えていた。
一番参考になったのはこちらのページ。わかりやすい。
【Linux環境構築】VagrantとVirtualBoxとは?使い方を初心者向けに解説!
環境
ローカルPCのOS:Windows10
仮想マシンのOS:CentOS 7.0
VirtualBoxをインストール
よくわからないが、とりあえず言われるがままに謎の箱をインストール。
ローカルPCはWindows10なので、Windows hostsを選択。
Vagrantをインストール
こちらもよくわからないまま、インストール。
HashiCorpという会社が開発しているらしく、めっちゃ日本っぽいやんと思ったら、創業者のMitchell Hashimotoはやはり日本人の血が入っているらしい。すげぇ。
ダウンロードページで、Windows用を選択。(ダウンロードに30分~1時間くらいかかった)
Vagrantの環境準備
まずはコマンドプロンプトを開いて、Vagrantがインストールされていることを確認。
> vagrant -v
Vagrant 2.2.14みたいなバージョンの数字がでればOK。
次に、フォルダをつくります。
なんとなくCドライブ直下にしました。
> mkdir C:\vagrant
CentOSのインストール
仮想環境として利用したい無償OSを探して、Vagrantの中にインストールします。
この中から適当に選んで、「Copy」ボタンを押してダウンロード用のURLをコピーしてきます。
VirtualBox用とも書いててそれっぽいこちらを選んでみました。
CentOS 7.0 x64 (Minimal, VirtualBox Guest Additions 4.3.28, Puppet 3.8.1 - see here for more infos)
もう一度コマンドプロンプトを開き、先ほど作成したフォルダに移動します。
> cd C:\vagrant
Vagrantに仮想マシン(OS)をインストールします。
> vagrant box add centos-7.0 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box
addの後ろの「centos-7.0」はなんでもいいみたい。
URL部分はコピーしてきたものを貼り付けてください。
Progressが100%になって、Successfully added box 'centos-7.0' (v0) for 'virtualbox'!みたいなのが出たらインストール完了です。
再度コマンドプロンプトを開いて、Vagrantの初期化を行うコマンドを実行します。(「centos-7.0」はインストール時に付けた名前)
> cd C:\vagrant (念のため)
> vagrant init centos-7.0
すると、C:\vagrantにVagrantfileなるものが作成されます。
作成されたVagrantfileをテキストエディタ(メモ帳でもなんでもOK)で開き、修正していきます。
修正するのは1ヶ所で、「config.vm.network "private_network", ip: "192.168.33.10"」の前の#を消すだけ。
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.box = "centos-7.0"
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port
# config.vm.network "forwarded_port", guest: 80, host: 8080
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine and only allow access
# via 127.0.0.1 to disable public access
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
# Create a private network, which allows host-only access to the machine
# using a specific IP.
config.vm.network "private_network", ip: "192.168.33.10" ←ここのコメントアウト(#)を外す
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end
#
# View the documentation for the provider you are using for more
# information on available options.
# Enable provisioning with a shell script. Additional provisioners such as
# Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
# documentation for more information about their specific syntax and use.
# config.vm.provision "shell", inline: <<-SHELL
# apt-get update
# apt-get install -y apache2
# SHELL
end
仮想マシンを起動
こちらのコマンドで仮想マシンを起動します。
> vagrant up
ところが、ここでエラーが発生。。
Stderr: VBoxManage.exe: error: Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter #2' (VERR_INTNET_FLT_IF_NOT_FOUND).
VBoxManage.exe: error: Failed to attach the network LUN (VERR_INTNET_FLT_IF_NOT_FOUND)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole
ググったところ、こちらの記事の手順で解消できました。
再度気を取り直して、vagrant upを実行すると、VirtualBoxにマウントできたみたいな内容のログが吐かれた。
仮想マシンの起動完了。
Vagrantから仮想マシンにログイン
vagrant upした後に、こちらのコマンドを実行。
> vagrant ssh
こんな感じで表示されたらログインできてます。
> vagrant ssh
c:\vagrant>vagrant ssh
Last login: Thu Jul 16 08:48:31 2015 from 10.0.2.2
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$
例えば、pwdとかしてみると、カレントディレクトリがわかりました。
[vagrant@localhost ~]$ pwd
/home/vagrant
[vagrant@localhost ~]$
ちなみに、初期のユーザとパスワードはこのようになってるようです。
ユーザー | パスワード |
---|---|
vagrant | vagrant |
root | vagrant |
ログアウト(exit)して、仮想マシンを停止(vagrant halt)しておきます。
[vagrant@localhost ~]$ exit
Abgemeldet
Connection to 127.0.0.1 closed.
c:\vagrant>vagrant halt
==> default: Attempting graceful shutdown of VM...
c:\vagrant>
VirtualBoxから仮想マシンにログイン
WindowsのスタートメニューからVirtualBoxを開きます。
開くとvagrant~みたいなマシンが選択できるようになっているので、起動を押すとターミナルが開いてログインできます。
仮想マシンの言語設定
まずは、localeコマンドで今の言語がどのように設定されているか(環境変数)を確認します。
[vagrant@localhost home]$ locale
LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=
なぜかドイツ語っぽいので、英語に変更します。
[vagrant@localhost home]$ LANG=C
LANGという環境変数をC(英語)にするというような意味らしいです。
[vagrant@localhost home]$ locale
LANG=C
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=
これで英語になりました。
仮想マシンの時刻設定
dateコマンドで時刻を表示してみます。
[vagrant@localhost home]$ date
Thu Feb 4 14:06:59 CET 2021
CET(中央ヨーロッパ時間)になってます。
タイムゾーンでも確認してみます。
[vagrant@localhost home]$ timedatectl status
Local time: Thu 2021-02-04 14:20:54 CET
Universal time: Thu 2021-02-04 13:20:54 UTC
Timezone: Europe/Berlin (CET, +0100)
NTP enabled: n/a
NTP synchronized: no
RTC in local TZ: no
DST active: no
Last DST change: DST ended at
Sun 2020-10-25 02:59:59 CEST
Sun 2020-10-25 02:00:00 CET
Next DST change: DST begins (the clock jumps one hour forward) at
Sun 2021-03-28 01:59:59 CET
Sun 2021-03-28 03:00:00 CEST
やはりヨーロッパっぽいので、日本のタイムゾーンに変更します。(途中でrootユーザのパスワードを入力する必要があります。)
[vagrant@localhost home]$ timedatectl set-timezone Asia/Tokyo
==== AUTHENTICATING FOR org.freedesktop.timedate1.set-timezone ===
Authentication is required to set the system timezone.
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ===
[vagrant@localhost home]$
もう一度タイムゾーンを確認すると、、
[vagrant@localhost home]$ timedatectl status
Local time: Thu 2021-02-04 22:23:59 JST
Universal time: Thu 2021-02-04 13:23:59 UTC
Timezone: Asia/Tokyo (JST, +0900)
NTP enabled: n/a
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
[vagrant@localhost home]$ date
Thu Feb 4 22:24:49 JST 2021
日本時間になりました。