初期設定完了後のCeontOS7をVagrantBox化する

プログラミング

VagrantでCentOS7を構築して初期設定をします。その後CentOS7のベースイメージとして使用できるようにBox化します。VagrantでCeontOS7を構築する手順は以下を参考にしてください。
参考:VagrantでCentOS7を構築してSSH接続する

CentOS7の初期設定

vagrantユーザのパスワードを設定

# rootユーザになる
[vagrant@centos7 ~] sudo su

# vagrantユーザのパスワードを設定
[root@centos7 ~] passwd vagrant
Changing password for user vagrant.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

vagrantユーザをsudo可能にする

# sudo可能なグループ「wheel」にvagrantユーザを所属させる
[root@centos7 ~] usermod -aG wheel vagrant

# vagrantユーザがsudo可能か試す
[root@centos7 ~] su - vagrant
[root@centos7 ~] sudo ls -la /root

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

# rootのパスワードを入力します。
# rootが所有するファイル一覧が参照できたら完了
[sudo] password for vagrant:
total 28
dr-xr-x---.  2 root root  130 Jul  9 12:11 .
dr-xr-xr-x. 18 root root  237 Jul  9 12:09 ..
-rw-r--r--.  1 root root   18 May 11  2019 .bash_logout
-rw-r--r--.  1 root root  176 May 11  2019 .bash_profile
-rw-r--r--.  1 root root  176 May 11  2019 .bashrc
-rw-r--r--.  1 root root  100 May 11  2019 .cshrc
-rw-------.  1 root root 1186 Jun  6 07:43 original-ks.cfg
-rw-r--r--.  1 root root  129 May 11  2019 .tcshrc
-rw-------.  1 root root  912 Jul  9 12:11 .viminfo

SELinuxの無効化

SELinuxはセキュリティの向上に役立ちますが、開発環境では障害になることが多いので今回は無効化しておきます。

#現在の状況
[root@centos7 vagrant] getenforce
Enforcing
# [Enforcing] SELinux有効でありアクセス制御が有効となる
# [permissive] アクセス制御は無効だが警告メッセージを表示する
# [disabled] SELinux無効

# 無効化する
[root@centos7 vagrant] vi /etc/selinux/config
# 7行目あたりの以下を変更します
# 【変更前】
SELINUX=enforcing
# 【変更後】
SELINUX=disabled

# 再起動する
[root@centos7 vagrant] reboot

# 再起動後以下にようになれば成功
[root@centos7 ~] getenforce
Disabled

パッケージ管理の更新

[root@centos7 ~] yum -y update

wgetのインストール

# wgetのインストール
[root@centos7 ~] yum -y install wget

firewallの無効化

# firewallの無効化
[root@centos7 ~] systemctl stop firewalld
[root@centos7 ~] systemctl disable firewalld
[root@centos7 ~] systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

タイムゾーンの設定

タイムゾーンを日本に設定します。

# 設定前のタイムゾーン確認
[root@centos7 ~] timedatectl status
               Local time: Thu 2020-07-09 13:42:09 UTC
           Universal time: Thu 2020-07-09 13:42:09 UTC
                 RTC time: Thu 2020-07-09 13:42:30
                Time zone: UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: yes

# タイムゾーンを日本に設定
[root@centos7 ~] timedatectl set-timezone Asia/Tokyo

# 設定後のタイムゾーン確認
[root@centos7 ~] timedatectl status
               Local time: Thu 2020-07-09 22:44:22 JST
           Universal time: Thu 2020-07-09 13:44:22 UTC
                 RTC time: Thu 2020-07-09 22:44:22
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: yes

ここまででCeontOS7の初期設定は完了です。

CentOS7のBox作成

vagrantを停止

$ vagrant halt

Boxを作成するためのパッケージを生成

$ vagrant package
==> default: Clearing any previously set forwarded ports...
==> default: Exporting VM...
==> default: Compressing package to: C:/all/vagrant/centos7_base/package.box

# パッケージが生成されたか確認する
$ dir
2020/07/13  14:12    <DIR>          .
2020/07/13  14:12    <DIR>          ..
2020/07/13  11:02    <DIR>          .vagrant
2020/07/13  14:12       632,137,513 package.box

Boxをvagrantに登録

$ vagrant box add base/centos7 package.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'base/centos7' (v0) for provider:
    box: Unpacking necessary files from: file://C:/all/vagrant/centos7_base/package.box
    box:
==> box: Successfully added box 'base/centos7' (v0) for 'virtualbox'!

# vagrantに登録されたか確認する
$ vagrant box list
base/centos7       (virtualbox, 0)

vagrantfileの作成

自作したBoxを元にvagrantfileを作成します。

# 作業ディレクトを作成する
$ mkdir base-centos7
$ cd base-centos7

# vagrantfileを作成する
$ vagrant init base/centos7
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

# 共有フォルダを作成する
$ mkdir share

# vagrantfileが作成されたか確認する
$ dir 
2020/07/13  14:25    <DIR>          .vagrant

vagnratfileを編集

# 37行目あたりの下記のコメントアウトを外してIDアドレスを変更します。
# 【修正前】
# config.vm.network "private_network", ip: "192.168.33.10"
# 【修正後】
config.vm.network "private_network", ip: "192.168.33.15"

# 46行目あたりの下記コードを修正します。
# 左がWindowsで右がCentOS8の共有フォルダになります。
# 【修正前】
# config.vm.synced_folder "../data", "/vagrant_data"
# 【修正後】
config.vm.synced_folder "./share", "/share"

vagrant upで起動

$ vagrant up

起動後にターミナルソフト(teraterm)でログインします。
ホスト:192.168.33.15
ポート:22
サービス:SSH2
ユーザ:vagrant
パスワード:*******

パスフレーズでログインすることができれば成功

pocketcode

30代のWEB系企業エンジニアです。毎回同じようなことを検索してしまうので、自分の備忘録的に書いています。サイトのデザインはQiita(https://qiita.com)さんに寄せています。