概要
今回、Linuxで用意されているchronyを用いてNTPサーバの設定を行う。
その際は、仮想環境を用いりながらと環境作成をvagrantを通して構築を行い、
環境構築をプロビジョニング化する。
要件
・NTPサーバ2台(サーバ側とクライアント側)を用意し、クライアント側がホスト側を参考に、
時刻ができるようにする。
・vagrantを用いて、作成した環境をCLI上から構築・確認できるようにする。
・作成したサーバは内部ネットワークでのみ疎通ができるようにする。
(外部またホストOSとの疎通はできない設定)
構成図
構築環境
OS(ホスト):MacOS 10.15.4 Darwin Kernel Version 19.4.0
OS(仮想):Linux CentOS 7.9.2009
仮想環境:virtualbox 6.1.32
使用ソフトウェア:vagrant 2.2.4
作成手順
①Vagratnfileを作成し、仮想環境の基本設定を行う
■ディレクトリ構成
今回の構築においてホストOS側のディレクトリ構成は以下のようにする。
home--「ユーザー名」--Desktop--work----vagrant_ntp #参照先NTPサーバ
|
--vagrant_ntp_client #クライアント側のNTPサーバ
①−1 上記のようにディレクトリーを作成する。
# mkdir /home/「ユーザー名」/Desktop/work/vagrant_ntp
# mkdir /home/「ユーザー名」/Desktop/work/vagrant_ntp_client
①−2 作成後は、それぞれvagrant環境の立ち上げを行っていく。
# cd /home/「ユーザー名」/Desktop/work/vagrant_ntp
# vagrant init
# cd /home/「ユーザー名」/Desktop/work/vagrant_ntp_client
# vagrant init
※上記コマンド「vagrant init」にて仮想環境の設定ファイルであるVagrantfileを、
それぞれのディレクトリの直下に作成される。
■設定項目
Vagrantfileには事前に設定項目が複数存在している。
デフォルトでは全てコメントアウトされているが、今回必要な箇所をコメントアウトを外したり、
また、値を追加したのが下記のようになる。
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.hostname = "testntp"
config.vm.synced_folder "./", "/vagrant"
config.vm.network "private_network", ip: "192.168.22.10", virtualbox__intnet: true
end
設定項目 | 説明 |
---|---|
config.vm.box | 今回使用するboxを選択 |
config.vm.hostname | それぞれのサーバのホスト名を入力 |
config.vm.synced_folder | ホスト側とゲスト側で共有するフォルダーを記入。 イメージとしてどこのフォルダーを仮想側と同期させますかと言った感じ |
config.vm.network | 仮想サーバ側で設定するIPを入力 |
それぞれこのような意味を持つ設定項目となる。
〜設定項目詳細については以下を参照〜
https://weblabo.oscasierra.net/vagrant-config-vm/
Tips
上記設定項目でも出てきている、vagrantならではのboxとnetworkの意味とその種類について、備忘録としてまとめておきます。
box:
vagrantではあらかじめOSのパッケージのようなものを用意してくれており、
そのパッケージのようなものをboxと言う。
使用者は使用したOS(box)を指定するだけで、
ローカルまたはvagrant cloud上から自動的にプロビジョニングしてくれる。
要するにわざわざOSのメディアだったりファイルを使用者が用意することなく、
構築が可能になる。
network:
基本サーバのIPを設定する項目になるが、
それ以外にも「どのようなネットワークで構築するか」を設定することができる。
要するにどことどこを通信できるようにするかを決めることができる。
(仮想OSどうしだけかホストOSと仮想OSどうしだけか、
はたまた仮想OSと外部ネットワークどうしを可能にするかなど)
■設定後の疎通確認
①−3 設定後は実際にvagrantを立ち上げて設定したIPとホスト名、仮想サーバどうしで疎通ができているかを確認する。
# vagrant up 仮想サーバの立ち上げ
# vagrant ssh 仮想サーバへのアクセス
$ hostname config.vm.hostnameで設定した値が確認できる
$ ip addr config.vm.networkで設定した値が確認できる。
$ ping [参照するNTPサーバのIP]
②起動したサーバにてchronyの設定
■chronyの設定ファイルの変更
②−1 同期先NTPサーバの設定ファイル(/etc/chrony.conf)を修正する
allow 192.168.22.0/24 ⇦clientが疎通できる許可をここで設定する
他はデフォルトの状態にしておく。
②−2 clientNTPサーバの設定ファイル(/etc/chrony.conf)を修正する
server 0.centos.pool.ntp.org iburst 削除
server 1.centos.pool.ntp.org iburst 削除
server 2.centos.pool.ntp.org iburst 削除
server 3.centos.pool.ntp.org iburst 削除
server 192.168.22.10 iburst 追加
同期先NTPサーバのIPを設定する。
■設定の反映(サービスの再起動)
②-3 サービスを再起動してステータスが正常なことを確認する。
# systemctl start chronyd
# systemctl status chronyd
chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
Active: active (running) since 土 2023-08-19 13:33:37 UTC; 11s ago
~省略~
③client側の同期の確認
■同期先の確認
③-1 client側にて設定したNTPサーバに同期できているか確認。
chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 192.168.22.10 2 6 17 15 -2638ns[ +25us] +/- 5581us
※「*」があれば正常に同期が行えている。
全体を通して
NTP自体の設定・構築は簡単だった。
vagrantを通じてのvirtualboxの設定、ネットワーク関連に苦戦。
仮想環境の構築について今後もっと詳しい箇所まで触れてみたい
vagrantでできることをもっと知りたい
次回やってみたいこと…
上記でも述べましたが、今回でvagrantについてすごい興味を持てたので、
もっとvagrantの機能について触れていきたいと思います。
その中でもvagrantを通じてのAWS構築にも挑戦できたらと思います。
ざっと調べると、vagrant-awsを導入することで実現可能とのこと。
上記サイトも参考にしつつ、設定を行なっていきたいと思います。