この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
コンニチハ、千葉です。
昔こんな記事を書きましたが、今回はRHEL7版をお届けします。RHEL公式ドキュメントを引用していますので、野良ではない情報をお届けします。確認コマンドも載せてますのでご利用ください。
はじめに
初期構築っていっても色々あると思いますが、私がやりたかった対象は以下です。
- ホスト名
- 時刻同期
- 文字コード
- タイムゾーン
初期設定
タイムゾーン
タイムゾーンは、timedatectl set-timezone
で設定します。
$ sudo timedatectl set-timezone Asia/Tokyo
設定した内容を確認してみます。localがJSTに設定されました!
$ sudo timedatectl
Local time: Wed 2019-02-06 13:28:26 JST
Universal time: Wed 2019-02-06 04:28:26 UTC
RTC time: Wed 2019-02-06 04:28:25
Time zone: Asia/Tokyo (JST, +0900)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
選択できるタイムゾーンの一覧を確認もしてみました。
$ sudo timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
・・・
ついでにdateコマンドで確認しました。JSTになってました。
$ date
2019年 2月 6日 水曜日 14:00:38 JST
ホスト名
ホスト名は、hostnamectl
で設定します。
staticをつけると、従来のhostnameと同じ動作で、/etc/hostnameに保存されます。
$ sudo hostnamectl set-hostname --static example.com
リブートしてもホスト名を維持するように、cloud-initの設定を変更します。
$ sudo echo 'preserve_hostname: true' >> /etc/cloud/cloud.cfg
サーバーを再起動しても設定が維持されました。
$ sudo hostname
example.com
参考: - https://aws.amazon.com/jp/premiumsupport/knowledge-center/linux-static-hostname-rhel7-centos7/ - https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/networking_guide/sec_configuring_host_names_using_hostnamectl - https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/networking_guide/ch-configure_host_names
時刻同期
EC2を利用する場合は、AWSが提供しているAmazon Time Sync Service を利用することが多いと思います。手順では、chrony
を使ってTime Sync Serviceと時刻同期します。169.254.169.123
向けに時刻同期するように設定します。
$ sudo yum erase 'ntp*'
$ sudo yum install chrony
$ sudo echo '#Add TimeSync' >> /etc/chrony.conf
$ sudo echo 'server 169.254.169.123 prefer iburst' >> /etc/chrony.conf
サービスの起動設定もしておきましょう。
$ sudo systemctl start chrony
$ sudo systemctl enable chrony
反映されているか確認してみました。問題なさそうです。
$ chronyc sources -v
210 Number of sources = 5
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 169.254.169.123 3 6 377 4 -78us[ -57us] +/- 2181us
^- sv1.localdomain1.com 2 6 377 3 -199us[ -199us] +/- 35ms
^- 122x215x240x52.ap122.ftt> 2 6 377 3 +580us[ +580us] +/- 26ms
^? m.moe.cat 2 7 40 263 -6668us[ -926ms] +/- 56ms
^- ntp-b2.nict.go.jp 1 6 377 5 +483us[ +503us] +/- 2998us
$ chronyc tracking
Reference ID : A9FEA97B (169.254.169.123)
Stratum : 4
Ref time (UTC) : Wed Feb 06 04:59:45 2019
System time : 0.000035181 seconds slow of NTP time
Last offset : +0.000020663 seconds
RMS offset : 0.003982427 seconds
Frequency : 42.591 ppm fast
Residual freq : +1.527 ppm
Skew : 1.347 ppm
Root delay : 0.003383718 seconds
Root dispersion : 0.000520247 seconds
Update interval : 64.8 seconds
Leap status : Normal
文字コード
文字コードはlocalectl
コマンドを使用します。
$ sudo localectl set-locale LANG=ja_JP.utf8
設定されているか確認してみます。
$ sudo localectl status
$ localectl status
System Locale: LANG=ja_JP.utf8
VC Keymap: us
X11 Layout: n/a
ついでにdateコマンドで日本語が表示されるかもみてみました。
$ date
2019年 2月 6日 水曜日 14:00:38 JST
サーバーの再起動
さいごに設定が永続されているか確認するために再起動しておきましょう。
ユーザーデータで初期設定
EC2構築時に、ユーザーデータを利用するとログインせずに設定できますので、こちらもあわせて利用するといいでしょう。 EC2作成時に以下のユーザーデータを設定しましょう。
#!/bin/sh -ex
# timezon
timedatectl set-timezone Asia/Tokyo
# hostname
hostnamectl set-hostname --static example.com
echo 'preserve_hostname: true' >> /etc/cloud/cloud.cfg
# time sync
yum erase 'ntp*'
yum install chrony
echo '#Add TimeSync' >> /etc/chrony.conf
echo 'server 169.254.169.123 prefer iburst' >> /etc/chrony.conf
systemctl start chrony
systemctl enable chrony
# locale
localectl set-locale LANG=ja_JP.utf8
さいごに
RHEL7の初期構築コマンドをまとめました。ユーザーデータ利用すると、ログインせずにできるので圧倒的楽です。ぜひご活用ください。