ムラウチドットコム エンジニアブログ

日本最大級ブログランキング「にほんブログ村」、シンプルなブログサービス「muragon」を運営するムラウチドットコム メディアグループのエンジニアブログです。

早速 Amazon Linux 2 を立ち上げてみた

先日リリースされたAmazon Linux 2をさっそく試してみました。


Amazon Linux 2の概要

長期サポート (Long-Term Support : LTS)

セキュリティアップデートとバグフィックス、ABIとAPIの互換性が5年間提供されるようです。

オンプレミスでの使用

オンプレミスでの開発環境やテスト環境向けに仮想マシンやコンテナのイメージが提供されるようです。VMware, Hyper-V, VirtualBoxの仮想マシンイメージDockerファイルが既に提供されています。

Amazon Linux Extras リポジトリ

以下のパッケージが含まれています。

  • Python 3.6
  • Ansible 2.4.2
  • memcached 1.5
  • nginx 1.12
  • PostgreSQL 9.6
  • MariaDB 10.2
  • Go 1.9
  • Redis 4.0
  • R 3.4
  • Rust 1.22.1

systemdのサポート

システムプロセス管理がSys-V initからsystemdへ変更になっています。

その他

潜在的なセキュリティ対策として、重要でないパッケージがプリインストールされなくなりました。(以前はjava7がインストールされていましたが、プリインストールされなくなっていました)
また、Amazon Linuxの方は2017.09が最終リリースとなるようです。


Amazon Linux 2のランチ

既にバージョン 2017.12 のAmazon Linux 2のAMIを指定して、EC2インスタンスをランチできるようになっています。



起動するとこんな感じです。

       __|  __|_  )
_| ( / Amazon Linux 2 AMI
___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[ec2-user ~]$


バージョン情報

[ec2-user ~]$ cat /etc/image-id
image_name="amzn2-ami-hvm"
image_version="2017.12"
image_arch="x86_64"
image_file="amzn2-ami-hvm-2017.12.0.20171212.2-x86_64.xfs.gpt"
image_stamp="436e-af55"
image_date="20171213051737"
recipe_name="amzn2 ami"
recipe_id="0926f7cb-442c-96ce-9f9e-00e9-87c7-3223-b67e835f"
[ec2-user ~]$ cat /etc/system-release
Amazon Linux release 2.0 (2017.12) LTS Release Candidate
[ec2-user ~]$ cat /etc/os-release
NAME="Amazon Linux"
VERSION="2.0 (2017.12)"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2.0"
PRETTY_NAME="Amazon Linux 2.0 (2017.12) LTS Release Candidate"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2.0"
HOME_URL="https://amazonlinux.com/"


Amazon Linux Extras リポジトリ

デフォルトでは全てのパッケージが無効になっています。

[ec2-user@ip-172-31-28-46 ~]$ amazon-linux-extras list
0 ansible2 disabled [ =2.4.2 ]
1 emacs disabled [ =25.3 ]
2 memcached1.5 disabled [ =1.5.1 ]
3 nginx1.12 disabled [ =1.12.2 ]
4 postgresql9.6 disabled [ =9.6.6 ]
5 python3 disabled [ =3.6.2 ]
6 redis4.0 disabled [ =4.0.5 ]
7 R3.4 disabled [ =3.4.3 ]
8 rust1 disabled [ =1.22.1 ]
9 vim disabled [ =8.0 ]
10 golang1.9 disabled [ =1.9.2 ]
11 ruby2.4 disabled [ =2.4.2 ]
12 nano disabled [ =2.9.1 ]
13 php7.2 disabled [ =7.2.0 ]
14 lamp-mariadb10.2-php7.2 disabled [ =10.2.10_7.2.0 ]


パッケージを有効にする場合は、以下

[ec2-user ~]$ sudo amazon-linux-extras install ansible2
0 ansible2=latest enabled [ =2.4.2 ]
1 emacs disabled [ =25.3 ]
2 memcached1.5 disabled [ =1.5.1 ]
3 nginx1.12 disabled [ =1.12.2 ]
4 postgresql9.6 disabled [ =9.6.6 ]
5 python3 disabled [ =3.6.2 ]
6 redis4.0 disabled [ =4.0.5 ]
7 R3.4 disabled [ =3.4.3 ]
8 rust1 disabled [ =1.22.1 ]
9 vim disabled [ =8.0 ]
10 golang1.9 disabled [ =1.9.2 ]
11 ruby2.4 disabled [ =2.4.2 ]
12 nano disabled [ =2.9.1 ]
13 php7.2 disabled [ =7.2.0 ]
14 lamp-mariadb10.2-php7.2 disabled [ =10.2.10_7.2.0 ]


内部的には yum が実行されているようです。依存パッケージも同時にインストールされました。

[ec2-user ~]$ yum info ansible
Loaded plugins: langpacks, update-motd
Installed Packages
Name : ansible
Arch : noarch
Version : 2.4.2.0
Release : 1.amzn2
Size : 38 M
Repo : installed
From repo : amzn2extra-ansible2
Summary : SSH-based configuration management, deployment, and task execution system
URL : http://ansible.com
License : GPLv3+
Description :
: Ansible is a radically simple model-driven configuration management,
: multi-node deployment, and remote task execution system. Ansible works
: over SSH and does not require any software or daemons to be installed
: on remote nodes. Extension modules can be written in any language and
: are transferred to managed machines automatically.
[ec2-user ~]$ sudo tail /var/log/yum.log 
Dec 25 09:04:52 Installed: python-httplib2-0.9.2-0.1.amzn2.noarch
Dec 25 09:04:52 Installed: sshpass-1.06-1.amzn2.x86_64
Dec 25 09:04:52 Installed: python2-ecdsa-0.13-9.amzn2.0.1.noarch
Dec 25 09:04:52 Installed: libtommath-0.42.0-5.amzn2.x86_64
Dec 25 09:04:52 Installed: libtomcrypt-1.17-25.amzn2.x86_64
Dec 25 09:04:52 Installed: python2-crypto-2.6.1-13.amzn2.0.1.x86_64
Dec 25 09:04:52 Installed: python-keyczar-0.71c-2.amzn2.noarch
Dec 25 09:04:52 Installed: python2-paramiko-1.16.1-2.amzn2.0.1.noarch
Dec 25 09:04:54 Installed: ansible-2.4.2.0-1.amzn2.noarch


systemd

従来のinitはネットワーク周りを残して、スカスカになっていました。

[ec2-user ~]$ ls -all /etc/rc3.d/
total 0
drwxr-xr-x 2 root root 45 Dec 13 05:16 .
drwxr-xr-x 10 root root 127 Dec 13 05:16 ..
lrwxrwxrwx 1 root root 20 Dec 13 05:16 K50netconsole -> ../init.d/netconsole
lrwxrwxrwx 1 root root 17 Dec 13 05:16 S10network -> ../init.d/network


systemdのサービス起動順をプロットしてみたのはこちらです。

[ec2-user ~]$ systemd-analyze plot > plot.svg

最後に

Amazon LinuxからAmazon Linux 2へはそのまま移行ができないので、AMIの再作成が必要になってきます。
また、systemdまわりが従来のSys-V initからガラッと設定方法が変わってくるので、注意が必要です。
移行に手間がかかりますが、仮想マシンイメージやDockerファイルの提供が行われるようになり開発環境も合わせやすくなったこと、長期サポートが行われるようになり半年毎のローリングアップデートに追われることもなくなるので、早めにAmazon Linux 2への移行をしていきたいところです。

×

非ログインユーザーとして返信する