Amazon Linux 向けに書いた Ansible Playbook を Amazon Linux 2 に対応させるときに気づいた点をまとめておきます。
個人ブログに書いた「Ansible で Amazon Linux と Amazon Linux 2 を見分ける」も参考にしてください。
TL;DR
Amazon Linux はもともと CentOS とよく似た構成なので、概ね CentOS 6 から 7 への変更点と同じです。
大きな変更点
init デーモン
init デーモンが Upstart から systemd に変更されています。 pstree
コマンドで見ると PID 1 のデーモンが init から systemd に変わっていることがわかります。
$ pstree -p --ascii
systemd(1)-+-agetty(3177)
|-agetty(3178)
|-amazon-ssm-agen(3204)-+-{amazon-ssm-agen}(3208)
| |-{amazon-ssm-agen}(3209)
| |-{amazon-ssm-agen}(3210)
| |-{amazon-ssm-agen}(3211)
| |-{amazon-ssm-agen}(3212)
| |-{amazon-ssm-agen}(3213)
| `-{amazon-ssm-agen}(3215)
|-atd(3162)
|-auditd(2567)---{auditd}(2568)
|-chronyd(2630)
|-crond(3164)
(snip)
$ pstree -p --ascii
init(1)-+-acpid(2415)
|-agetty(2605)
|-amazon-ssm-agen(2250)-+-{amazon-ssm-agen}(2262)
| |-{amazon-ssm-agen}(2263)
| |-{amazon-ssm-agen}(2264)
| |-{amazon-ssm-agen}(2265)
| |-{amazon-ssm-agen}(2266)
| |-{amazon-ssm-agen}(2271)
| |-{amazon-ssm-agen}(2281)
| |-{amazon-ssm-agen}(2282)
| `-{amazon-ssm-agen}(2638)
|-atd(2580)
|-auditd(2258)---{auditd}(2259)
|-crond(2566)
(snip)
ファイルシステム
ファイルシステムが ext4 から xfs に変更されています。
$ df -T /dev/xvda1
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/xvda1 xfs 8376300 1055844 7320456 13% /
$ df -T /dev/xvda1
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/xvda1 ext4 8123812 1072296 6951268 14% /
軽微な変更点
ユーザー
ec2-user の uid と gid が 500 から 1000 に変更されています。
$ id
uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),10(wheel),190(systemd-journal)
$ id
uid=500(ec2-user) gid=500(ec2-user) groups=500(ec2-user),10(wheel)
パッケージ管理
Yum リポジトリがひとつに集約されました。 /etc/yum.repos.d/
以下を見ると、epel リポジトリが削除されたことがわかります。
$ yum repolist
Loaded plugins: langpacks, update-motd
repo id repo name status
!amzn2-core/2017.12/x86_64 Amazon Linux 2 core repository 7,102
repolist: 7,102
$ ls -l /etc/yum.repos.d/
total 4
-rw-r--r-- 1 root root 1003 Dec 12 20:52 amzn2-core.repo
$ yum repolist
Loaded plugins: priorities, update-motd, upgrade-helper
repo id repo name status
!amzn-main/latest amzn-main-Base 5,883
!amzn-updates/latest amzn-updates-Base 738
repolist: 6,621
$ ls -l /etc/yum.repos.d/
total 24
-rw-r--r-- 1 root root 1014 Nov 1 19:45 amzn-main.repo
-rw-r--r-- 1 root root 327 Nov 1 19:45 amzn-nosrc.repo
-rw-r--r-- 1 root root 1041 Nov 1 19:45 amzn-preview.repo
-rw-r--r-- 1 root root 1041 Nov 1 19:45 amzn-updates.repo
-rw-r--r-- 1 root root 957 Mar 1 2013 epel.repo
-rw-r--r-- 1 root root 1056 Mar 1 2013 epel-testing.repo
NTP クライアント
NTP クライアントが ntpd から chronyd に変更されています。
$ ps aux | grep -e ntpd -e chronyd
chrony 2633 0.0 0.8 120480 4356 ? S 22:53 0:00 /usr/sbin/chronyd
$ ps aux | grep -e ntpd -e chronyd
ntp 2506 0.0 0.8 29772 4280 ? Ss 22:53 0:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
MTA
MTA が Sendmail から Postfix に変更されています。
$ alternatives --display mta
mta - status is auto.
link currently points to /usr/sbin/sendmail.postfix
/usr/sbin/sendmail.postfix - priority 30
slave mta-mailq: /usr/bin/mailq.postfix
slave mta-newaliases: /usr/bin/newaliases.postfix
slave mta-pam: /etc/pam.d/smtp.postfix
slave mta-rmail: /usr/bin/rmail.postfix
slave mta-sendmail: /usr/lib/sendmail.postfix
slave mta-mailqman: /usr/share/man/man1/mailq.postfix.1.gz
slave mta-newaliasesman: /usr/share/man/man1/newaliases.postfix.1.gz
slave mta-sendmailman: /usr/share/man/man1/sendmail.postfix.1.gz
slave mta-aliasesman: /usr/share/man/man5/aliases.postfix.5.gz
Current `best' version is /usr/sbin/sendmail.postfix.
$ alternatives --display mta
mta - status is auto.
link currently points to /usr/sbin/sendmail.sendmail
/usr/sbin/sendmail.sendmail - priority 90
slave mta-mailq: /usr/bin/mailq.sendmail
slave mta-newaliases: /usr/bin/newaliases.sendmail
slave mta-rmail: /usr/bin/rmail.sendmail
slave mta-sendmail: /usr/lib/sendmail.sendmail
slave mta-pam: /etc/pam.d/smtp.sendmail
slave mta-sendmailman: /usr/share/man/man8/sendmail.sendmail.8.gz
slave mta-mailqman: /usr/share/man/man1/mailq.sendmail.1.gz
slave mta-newaliasesman: /usr/share/man/man1/newaliases.sendmail.1.gz
slave mta-aliasesman: /usr/share/man/man5/aliases.sendmail.5.gz
Current `best' version is /usr/sbin/sendmail.sendmail.
まとめ
ひとつの Playbook の中で Amazon Linux と Amazon Linux 2 に対応するのはなかなか大変なので、fork して別の Playbook を書いたほうが楽かもしれませんね。