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