[レポート] 【初級】AWS におけるシステム運用管理の自動化 #AWSSummit
AWS Summit Tokyo 2019 Day1 で開催された「【初級】AWS におけるシステム運用管理の自動化」についてレポートします。
セッション情報
スピーカー:橋本 拓也氏 (アマゾン ウェブ サービス ジャパン株式会社)
セッション名:【初級】AWS におけるシステム運用管理の自動化
AWS が提供する運用管理の自動化ソリューションを活用することで、オペレーションコストを最小限に抑えることができます。本セッションでは AWS Systems Manager、AWS Config、Amazon CloudWatch などを活用して、人の手を煩わせずに AWS 上に構築したシステムを運用・管理するための基本的なノウハウをご紹介します。
自己紹介
- クラウドサポートエンジニア、入社5年目
- スタートアップでWebアプリの開発、インフラ管理を行っていた
- 夜間対応などもあったので、自動化に興味があった
セッションのねらい
- 下記のような人に運用の自動化に向けた第一歩を伝える
- 効率的な運用がまだできていない人
- クラウドのメリットが受けれてない人
アジェンダ
- システム運用の課題と、AWSを活用した自動化による解決
- AWS Systems Manager(SSM)でハイブリッド環境のサーバ運用を自動化
- AWS Config でリソースの変更を追跡
- Amazon CloudWatch Events でイベントに自動的に反応
- 自動化の発展と例外への対応
システム運用の課題と、AWSを活用した自動化による解決
- ガバナンスとアジリティの観点から考える自動化
- ガバナンス
- モニタリング、管理/監査、レポート
- アジリティ
- 実験/挑戦、生産性、変化への追従
- お互いはトレードオフの関係にある
- AWSでは両方を実現することができる
- 鍵は運用の自動化
- ガバナンス
- 自動化によって解決できる運用の課題
- 課題
- オペレーションミスが避けれない
- イベントの検知と対処にタイムラグが発生する
- 厳密に運用するほど、人的コストが増大する
- 解決
- オペレーションミスの可能性が低くなる
- イベントに対してすばやく反応することができる
- 定型的な作業の人的コストを削減することができる
- 課題
- 注意 :何を自動化するか、慎重に選択する
- 自動化する、という仕事それ自体にもコストがかかる
- 自動化対象として適している作業の特徴
- 単純な作業である
- 手順が固まっている
- 繰り返し発生する
- AWSにおいて運用自動化を担うサービス軍
- リソースとアプリケーションを監視すする
- Amazon CloudWatch
- ユーザの操作とリソース設定を継続的に監査する
- AWS CloudTrail
- AWS Config
- リソースを管理してオペレーションを実行する
- AWS Systems Manager
- リソースとアプリケーションを監視すする
AWS Systems Manager(SSM)でハイブリッド環境のサーバ運用を自動化
- SSMとはどんなサービスなのか
- オンプレとEC2を両方管理できる
- SSMエージェントが必要(Linux、Windows)
- ハイブリッド環境を管理できる
- 課題:どのサーバに何がインストールされているかわからない
- OSバージョンは何か?
- 必要なアプリケーションが入っているか?
- 不要なアプリケーションが入っていないか?
- セキュリティパッチ適用済みのバージョンか?
- SSMインベントリで解決できる
- SSMエージェントがOSやアプリケーションの構成情報を収集してきてくれる
- インベントリの収集と詳細な分析
- 複数のアカウント、リージョン、オンプレミスの環境
- インベントリ情報を一括して取得できる
- Athenaでインベントリに対してクエリが実行できる
- カーネルバージョンなどで検索などができる
- 複数のアカウント、リージョン、オンプレミスの環境
- 課題:たくさんのサーバに対して、定期的に同じ処理を行いたい。毎週金曜日の夜にサーバを停止し、毎週月曜日の朝に再開させるなど。
- オペレーションミスの可能性
- 単純作業であったとしても、作業工数がかかる
- 対象サーバ群は前回と同じか?追加や削除はなかったか?
- SSMメンテナンスウィンドウで解決できる
- 決まった時間に、マネージドインスタンス群に対して指定したタスクを実行できる
- 「SSM ドキュメント」という形で定義されたタスクを実行
- AWSの提供する定義済みSSMドキュメント(100種類以上)が利用可能
- もしくは、要件にあわせて独自にドキュメントを定義
- SSMドキュメントの具体例
- AWS-StopEC2Instance:EC2インスタンスを停止する
- AWS-CreateImage:EC2インスタンスからAMIを作成する
- AWS-CopySnapshot:データボリュームのスナップショットを複製する
- AWS-RunPowerShellScript:任意のPowerShellスクリプトを実行する
- ドキュメントのタイプ
- Automation
- AWSサービスに処理を指示
- Command
- サーバの中でコマンドを実行
- Automation
- 決まった時間に、マネージドインスタンス群に対して指定したタスクを実行できる
- 課題:運用中のサーバが「あるべき状態」を保っているか不安
- アンチウィルスソフトが起動しているか定期的にチェックなど
- 人で作業しているとミスが発生する
- 人でチェックしていると検知するまでの時間、修正作業が発生する
- SSMステートマネージャで解決できる
- 「あるべき状態」を保つため、定期的にSSMドキュメントを実行
- インストールされていなければインストールする
- インストールされていて起動していない場合は起動する
- 例
- AWS-RunAnsiblePlaybookを実行してあるべき状態にする
- AWS-InstallPowerShellModule を使用して、PowerShell DSCを実行する
- 「あるべき状態」を保つため、定期的にSSMドキュメントを実行
AWS Configでリソースの変更を追跡
- 課題:AWSリソースが「あるべき状態」を保っているか不安
- 誰がいつ、どのような変更を行ったのか、状態の履歴を記録したい
- 違反状態を検知した場合、修復のために割り込み作業が発生してしまう
- AWS Configで解決できます
- リソースの変更履歴を保持
- ルールに反する変更を修復
- Configルールと修復アクションを設定しておくと自動的に修復される
- 修復アクション
- Automationタイプのドキュメントを使用する
- マネージドルールでは80以上のルールを提供している
- s3-bucket-public-read-prohibited: S3がパブリックになっていないか
- required-tags:リソースに指定したタグが付与されていること
- タグによるコスト分析を行っている場合などに使用
- access-key-rorated:指定した日数以内にアクセスキーがローテーションされていること
Amazon CloudWatch Eventsでイベントに自動的に反応
- 課題:定型的な運用に人手がかかってしまっている
- 特定のイベントが発生した際に、なるべく早く何らかの対処を行う
- CloudWatch Eventsで解決できる
- イベントソースとターゲットをルールで紐付けるサービス
- イベントソースはIAMやEC2
- ターゲットはLambdaやSNS
- EC2が停止したイベントにLambdaやSNSをターゲットとして実行できる
- イベントソースとターゲットをルールで紐付けるサービス
- 自動化の例
- 管理者以外によるアクセス権限の変更を検知したい
- IAMの変更を誰かが行った
- Lambdaが実行され、操作のチェックを行う
- 違反していればメールを送信、権限の剥奪
- 管理者以外によるアクセス権限の変更を検知したい
- SSMとCloudWatch Eventsの使い分け
- どちらを使ってもいいが、より適している方を使用する
- SSM
- SSMエージェントによって管理対象に何かをしたいとき
- CloudWatch Events
- 汎用的なイベントドリブントリガーとして機能する
- 何らかの出来事に反応してタスクを実行したいとき
自動化の発展と例外への対応
- 自動化はいちど設定すれば終わりではない
- 現実的には、すべてをいちどに自動化することは困難
- 運用の自動化は発展を続けるプロセス
- まずは、繰り返しの回数の多い単純作業から部分的に自動化
- 自動化されていない作業を拾い集めて、範囲を広げる
- まだ自動化できていない例外的な状況に、以下に対応するか
- 例:SSMセッションマネージャの活用
- 課題:自動化から漏れていた作業が発覚し、例外的にEC2インスタンスにログインして操作する必要が生じた
- 例外的にポートを開けるなどはしたくない
- SSMセッションマネージャを使用するとブラウザなどからサーバを操作することができる
- 操作記録がCWに残る
- SSHのポートが閉じていても使用することができる
- 課題:自動化から漏れていた作業が発覚し、例外的にEC2インスタンスにログインして操作する必要が生じた
- SSM 新機能 OpsCenterの紹介
- オペレーターのTODOリストみたいなもの
まとめ
AWSサービスで運用の課題を解決する
課題 | サービス |
---|---|
どのサーバに何がインストールされているのかわからない | SSM インベントリ |
たくさんのサーバに対して、定期的に同じ処理を行いたい | SSM メンテナンスウィンドウ |
運用中のサーバが「あるべき状態」を保っているか不安 | SSM ステートマネージャ |
運用中のAWSリソースが「あるべき状態」を保っているか不安 | AWS Config |
定期的な運用に人手がかかってしまっている | Amazon CloudWatch Events |
感想
私自身あまりSSMを使っていなかったのですが、使いこなすととてつもなく便利だなと感じました。どんどん触ってお客様の運用に活かせればと思いました。