LoginSignup
1
1

More than 3 years have passed since last update.

VagrantでCentOS 7の仮想マシンを作成・操作する

Last updated at Posted at 2017-11-14

VagrantでCentOS 7の仮想マシンを作成・操作する

Vagrantは仮想VMを管理するツールです。
Vagrantを利用して、Oracle VM VirtualBoxでCentOS 7のゲストOSを作成・操作する方法を紹介します。

環境

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で指定したシェルスクリプトを作成します。

\Vagrant\install_docker.sh
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」で他のコマンドを調べられます。

1
1
1

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
1
1