便利になった AWS Systems Manager Distributor を使ってソフトウェアを最新に保とう!!

こんにちは 園部です。

サーバー内にインストールしたソフトウェアのバージョン管理は、時としてトラブル・運用負荷となることがあります。

「ちょっと、この役割のサーバには、●●ソフトウェアはインストールするルールじゃないですか?」
「このサーバに、入っている▲▲ソフトウェアは推奨バージョンじゃない!」
「あれ? 全部、■■ソフトウェアをインストールしているのに、一部のサーバだけ新しい機能使えない」
「新しいバージョンがリリースされたけど、またアップデート作業を計画して実施するのか....」

そんな声にこたえてくれるのが、 AWS Systems Manager Distributor です。

ちょうど昨年の今頃にリリースされましたが、使いこなすには少し手間がかかる面がありました。今年になってからいくつかのアップデートに経て、使いやすくなっているので改めてやってみたいと思います!

最近のアップデート

以前、やってみた

やってみる

シナリオ

Datadog Agent を対象ソフトウェアとします。推奨する(利用して欲しい)バージョンを事前にパッケージ登録を行い、対象サーバへインストール出来るようにします。パッケージのバージョン管理機能で、推奨バージョンが変更になった場合はパッケージのデフォルトバージョンを変更し、最新が利用出来るように保ちます。
最後に State Manager を利用し特定タグが付与されているサーバには、定期的に最新バージョンへ自動で更新します。

パッケージ準備

AWS Systems Manager >>> ディストリビューター >>> パッケージの作成 を選択

「簡易」「高度」の2種類の作成方法が登場したのが、最近のアップデートの1つです。以前は、インストールシェルやハッシュ値を事前に用意しなければいけませんでしたが、「簡易」ではその部分がサポートされます。

(マニフェストファイルとインストーラーを保管する)S3 を選択 > ソフトウェアを追加 >>> 事前に用意した rpm を選択

以下を選択します。

  • ターゲットプラットフォーム
  • プラットフォームのバージョン
  • アーキテクチャ

こちらがもう一つの最近のアップデートです。インストールされたソフトウェアに対して、「アンインストール&再インストール」または「インプレースアップデート」を実行できます。

インストールスクリプトとアンインストールスクリプト にソフトウェアをインストール、アップデート、アンインストールするスクリプトを記載します。

マニフェスト を確認 >>> パッケージの作成 を選択

※ 個人環境によるものか判別がつきませんでしたが、100MB を超えるインストーラーをアップロードするとエラーとなりました。

初回インストール

Distributor のパッケージを利用して、v6.0.0 を1台のサーバへインストールしてみます。

※ ここでは、Distributor の利用条件 はクリアしている前提で進めます。

AWS Systems Manager >>> ディストリビューター >>> 作成したパッケージを選択 >>> 1回限りのインストール を選択

必要な内容を選択します。

この場では、1台だけを手動で選択します。

実行 を選択

ランコマンドが実行され、成功します。

Datadog 画面でもインスタンスが登録され、Agent バージョンが v6.0.0 であることが確認できました。

アップデート

利用しているソフトウェアに新しいバージョンが出たとして、先ほど作成したパッケージに新しいバージョンを追加します。

AWS Systems Manager >>> ディストリビューター >>> 作成しているパッケージ >>> バージョン >>> バージョンの追加 を選択

先ほど、パッケージを作成した際と同様の流れで入力します。

作成したバージョンを選択 >>> デフォルトバージョンの設定 を選択

今度はタグ( Key:Datadog,Value:On )を活用して Datadog Agent を v6.7.0 へ更新します。

AWS Systems Manager >>> ディストリビューター >>> 作成したパッケージを選択 >>> 1回限りのインストール を選択

ランコマンドが実行され、成功します。

Datadog 画面でもインスタンスが登録され、Agent バージョンが v6.7.0 であることが確認できました。

自動アップデート

ここまで来ましたので、State Manager を利用して特定タグ( Key:Datadog-AutoUpdate,Value:On ) が付与されたサーバに対して、インストールおよび更新を実行するようにします。

※ パッケージのデフォルトバージョンを v6.0.0 へ戻しておきます。

AWS Systems Manager >>> ディストリビューター >>> 作成したパッケージを選択 >>> スケジュールへのインストール を選択 > 必要な内容を入力 > 関連付けの作成 を選択

関連付けによる処理が実行されます。

Datadog 画面でもインスタンスが登録され、Agent バージョンが v6.0.0 であることが確認できました。

※ パッケージのデフォルトバージョンを v6.7.0 へ戻しておきます。

先ほど作成した State Manager で設定した周期(ここでは30分)後に、処理が実行され、Datadog 画面でもインスタンスが登録され、Agent バージョンが v6.7.0 であることが確認できました。

さいごに

人の手にかかっている単純かつ量が多い作業はなるべく、(部分的でも)自動化していきたいものです。 Systems Manager がどんどんアップデートされていくことでカバーされる範囲が広がってきています。業務にマッチしないものを無理に採用する必要はありませんが、使えそうなものは積極的に利用して、運用も Happy になりたいものです。