Vagrantを使ってCentOS8の環境を立ち上げプロビジョニングによって日本語開発環境として成立させる最小構成


Vagrantを使ってCentOS8の環境を立ち上げプロビジョニングによって日本語開発環境として成立させる最小構成

内容としてはVagrantを使ってCentOS7の環境を立ち上げプロビジョニングによって日本語開発環境として成立させる最小構成のCentOS8版です。
CentOS8を触ってみたくて、DockerでCentOS8の環境を利用しようとしたとき、systemctlとかtimedatectlのコマンドが利用できないことがあったので、まずはVagrantでCentOS8を用意しようと思い立ち、せっかくなのでQiitaにまとめました。

環境情報

  • Vagrant 2.2.6
  • CentOS 8

ローカルのディレクトリ構成

.
├── Vagrantfile
└── provision.sh

各ファイルの中身

Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box = "centos/8"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.provider "virtualbox" do |vb|
    vb.customize ["modifyvm", :id, "--memory", "2048"]
  end
  config.vm.provision :shell, :path => "./provision.sh", :privileged => true
end

provision.sh

CentOS8では、dnf(yum)のupdateで以下のエラーが出てしまいます。

default: Failed to set locale, defaulting to C

これを解消するために、langpacks-jaもプロビジョニングで最初にインストールします。

#!/bin/sh

systemctl stop firewalld
systemctl disable firewalld

timedatectl set-timezone Asia/Tokyo
localectl set-locale LANG=ja_JP.UTF-8
source /etc/locale.conf

# langpacks-jaは以下のエラーが出るため必要となるパッケージ
# default: Failed to set locale, defaulting to C
dnf install -y langpacks-ja
dnf install -y vim

# Vagrantfileにsync_folderを指定するとCentOS8でエラーになったので解消するための以下を追記
dnf install -y elfutils-libelf-devel
dnf -y update

vagrant upして色々確認してみる

起動後にvagrant sshで接続し、状態を確認してプロビジョニングが適用されていることが確認できました。

$ vagrant up
$ vagrant ssh

$ cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core) 

$ timedatectl status
               Local time: 月 2020-01-06 07:38:23 JST
           Universal time: 日 2020-01-05 22:38:23 UTC
                 RTC time: 日 2020-01-05 22:38:21
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

$ localectl status
   System Locale: LANG=ja_JP.UTF-8
       VC Keymap: us
      X11 Layout: n/a