概要
- 今回は、インフラ運用のTips を紹介します。
- AWS に構築された(複数の)EC2 インスタンスにおいて、”yum update”コマンドによるパッチ更新の作業を行う方法を記載します。OSでパッチ更新を行う方法としては、1台ずつssh コマンドでログインしコマンドを実行する方法やSystems Manager のPatch Managerを使用するパッチ管理、構成管理ツールの ansible を使用する方法などいくつか考えられます。今回は、Systems Manager のRun Command を使用します。
- 今回の作業で、Systems Manager のRun Command を採用した理由は、以下となります。
- 1回限りの作業でありできるだけ手軽に実現させたかった
- 特定のパッケージのみ更新したい
- パッチ更新だけでなく任意のコマンドを実行したい
- 今回の記事に記載するコマンドは、Amazon Linux 2 のOSを前提としています。使用するOS に応じて、コマンドの指定は変更ください。
Run Command によるパッチ更新手順
インスタンスにSSM のアクセス許可を設定する
- インスタンスに、SSM (Systems Manager) のアクセス許可を設定します。以前は、AmazonEC2RoleforSSM のAWS管理ポリシーをアタッチしていましたが、現在は非推奨となり、AmazonSSMManagedInstanceCore のAWS管理ポリシーをアタッチします。
Run Command のAWS-RunShellScript コマンドでパッチ更新する方法
- マネジメントコンソールからSystems Manager のRun Command を選択します。
- 「Run command」を押し、コマンドドキュメントから「AWS-RunShellScript」を選択します。
- コマンドのパラメータに、yum updateコマンドなど指定します。シェルスクリプトを使用することも可能です。
- 今回は、セキュリティパッチの更新、特定のパッケージを更新します。以下のコマンドを指定しました。なお、yum updateコマンドの前に、yum updateinfo、yum list installed コマンドを使用しセキュリティパッチやパッケージの適用状況を確認しています。
date yum updateinfo yum list installed | egrep "awscli|amazon-ssm-agent" sudo yum update -y awscli sudo yum update -y amazon-ssm-agent sudo yum update -y --security yum updateinfo yum list installed | egrep "awscli|amazon-ssm-agent" date
- Working Directory、Execution Timeout は今回指定していませんが、コマンドやシェルスクリプトによっては考慮が必要になります。
- ターゲットを指定します。以下は1台のインスタンスですが、実際にはこの方法で複数のインスタンスに対しパッチ更新を行います。
- 出力オプションに、S3 バケットへの書き込みを選択します。コンソールからもコマンドの出力結果を確認できますが、行数が多ければ省略されてしまうため、S3 バケットへ書き込みます。
- 「実行」を押します。コマンドが正常に送信されたことを確認します。
- 数分後、コマンドのステータスが「成功」に変わりました。
- インスタンスを選択、「出力の表示」を選択します。
- Output からコマンドの出力結果が確認できます。行数が多ければ、「output truncated」となり省略されます。S3 バケットを参照し、コマンドの出力結果を全て確認することができます。
- 以下は、Run Command でパッチ更新を行う前のyum updateinfo、yum list installed の結果です。
sh-4.2$ yum updateinfo Loaded plugins: extras_suggestions, langpacks, priorities, update-motd amzn2-core/2/x86_64 | 3.6 kB 00:00:00 Updates Information Summary: updates 276 Security notice(s) 122 important Security notice(s) 26 low Security notice(s) 128 medium Security notice(s) updateinfo summary done sh-4.2$ yum list installed | egrep "awscli|amazon-ssm-agent" amazon-ssm-agent.x86_64 3.1.1732.0-1.amzn2 installed awscli.noarch 1.18.147-1.amzn2.0.1 installed
- 以下は、Run Command でパッチ更新を行った後のyum updateinfo、yum list installed の結果です。無事にセキュリティパッチの更新が行われ、他のパッケージも更新されました。
sh-4.2$ yum updateinfo Loaded plugins: extras_suggestions, langpacks, priorities, update-motd amzn2-core/2/x86_64 | 3.6 kB 00:00:00 Security: kernel-5.15.167-112.165.amzn2.x86_64 is an installed security update Security: kernel-5.10.167-147.601.amzn2.x86_64 is the currently running version updateinfo summary done sh-4.2$ yum list installed | egrep "awscli|amazon-ssm-agent" amazon-ssm-agent.x86_64 3.3.859.0-1.amzn2 @amzn2-core awscli.noarch 1.18.147-1.amzn2.0.2 @amzn2-core