VagrantでCentOS 7の仮想マシンを作成・操作する
Vagrantは仮想VMを管理するツールです。
Vagrantを利用して、Oracle VM VirtualBoxでCentOS 7のゲストOSを作成・操作する方法を紹介します。
環境
- Windows 7
- Oracle VM VirtualBox 5.1.30
- Vagrant 1.9.5
- TeraTerm
- プロキシ環境なし
Vagrantプラグイン投入
次のプラグインを投入します。
-
teratermプラグイン
- 自動的にTeraTermを起動し、ゲストOSにログインできる
-
vbguestプラグイン
- 仮想VMのカーネル更新時に自動的にGuest Additionsも更新してくれる
- Guest Additionsの更新により、ホストOSとゲストOS間のファイル共有のマウントを維持できる
コマンドプロンプト上で、次のコマンドを実行します。
> vagrant plugin install vagrant-teraterm
> vagrant plugin install vagrant-vbguest
Vagrantfile作成
仮想VMを1つ作ります。
コマンドプロンプト上で次のコマンドを実行し、ディレクトリやVagrantfileを作成します。
なお、ホストOSとゲストOS間の共有ディレクトリとして、commonディレクトリも作成します。
> mkdir \Vagrant
> cd Vagrant
> mkdir CentOS7-001
> cd CentOS7-001 ←\Vagrant\CentOS7-001へ移動
> vagrant init ←Vagrantfile作成
> mkdir common ←共有ディレクトリ作成
> cp Vagrantfile Vagrantfile_bak ←Vagrantfileのバックアップを作成
Vagrantfile編集
「Vagrantfile」を参考にして、Vagrantfileを次の内容に変更します。
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.synced_folder "./common", "/vagrant", type: "virtualbox"
config.vm.box_check_update = false
config.vm.network "private_network", ip: "192.168.1.12"
config.vm.provision "shell", path: "../install_docker.sh"
config.vm.provider "virtualbox" do |vb|
vb.name = "CentOS7-001"
vb.memory = "1024"
# vb.gui = true
end
if Vagrant.has_plugin?("vagrant-vbguest")
config.vbguest.auto_update = true
end
if Vagrant.has_plugin?("vagrant-teraterm")
config.teraterm.exe_path = 'D:\tool\net\TeraTerm\ttermpro.exe'
config.teraterm.ini_path = "../TERATERM.INI"
config.teraterm.log_path = "teraterm.log"
config.teraterm.extra_args = "/ssh-v"
end
end
- config.vm.box
- ベースとなるVagrant環境を指定
- Vagrant環境は次の方法で調べられる
- HashiCorp > Vagrant > [FIND BOXES]
- 「CentOS」で検索すると「centos/7」が出てくるので、それをクリック
- config.vm.synced_folder
- ホストOSとゲストOSで共有するディレクトリを指定
- config.vm.box_check_update
- ゲストOS起動時に、config.vm.boxで指定したboxに変更があった場合に自動的に反映させるかどうかを指定
- config.vm.network "private_network"
- ゲストOSのIPアドレスを指定
- config.vm.provision "shell", path: "../install_docker.sh"
- 「vagrant up」や「vagrant reload」コマンドで「--provision」オプションを指定すると、ここで指定したスクリプトが実行される
- これによりソフトウェア更新や投入などの処理を自動化できる
- config.vm.provider
- ゲストOSの名前やメモリ容量等を指定
- 参考
- 以降はプラグインの設定(設定方法は各プラグインのトリセツを参考)
シェルスクリプト作成
先ほどVagrantfileのconfig.vm.provisionで指定したシェルスクリプトを作成します。
sudo yum -y update kernel
sudo yum -y install kernel-devel kernel-headers dkms gcc gcc-c++
sudo yum remove docker docker-common docker-selinux docker-engine
sudo yum -y update
sudo yum -y install git
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum makecache fast
sudo yum -y install docker-ce
sudo systemctl start docker
sudo systemctl enable docker.service
ls /usr/lib/systemd/system | grep docker
systemctl status docker.service
このシェルスクリプトでは、次の処理を行います。
- kernel更新
- 既存ソフトウェアを一括更新
- Gitクライアント投入
- Docker投入
TERATERM.INI作成
Vagrantfileのconfig.teraterm.ini_pathで指定したTERATERM.INIを作成します。
ttermpro.exeのディレクトリにTERATERM.INIがあるはずですので、
それを「D:\Vagrant」ディレクトリにコピーします。
ゲストOS起動
「vagrant up」コマンドでゲストOSを起動します。
また、起動後に「config.vm.provision」で指定したスクリプトを実行させるよう「--provision」オプションを付けます。
なお、最初の起動の場合、ベースのVagrant環境の取得に時間を要します。
> vagrant up --provision
以上で、CentOS 7のゲストOSが作成され、自動的にgitクライアントやDockerが投入されます。
正しくセットアップできたかどうかを、Oracle VM Virtual Boxを起動して確認することもできます。
ゲストOS操作
先述のとおり、teratermプラグインを投入してあるので、
「vagrant teraterm」コマンドを実行すれば、
自動的にTeraTermが起動されゲストOSにログイン(ユーザーはvagrant)してくれます。
> vagrant teraterm
ホストOSとゲストOS間でのファイル共有
ホストOS(Windows)上で/Vagrant/CentOS7-001/commonにファイルを作成すれば、
ゲストOS(CentOS)の/vagrantディレクトリから参照できます。
その他のvagrantコマンド
- ゲストOS停止
- vagrant halt
- ゲストOS再起動
- vagrant reload
「vagrant --help」で他のコマンドを調べられます。