シェルスクリプトで作るコンフィグ管理サーバ
TRANSCRIPT
シェルスクリプトで作るコンフィグ管理サーバ
2016/4/21 Thu第 18 回 JAWS-UG 札幌 勉強会
自己紹介
• 小倉 大 ( おぐら まさる )• 株式会社スカイ 365• 元オンプレミスのネットワークエンジニア
• AWS 歴 6 か月
• 好きな AWS サービス : まだない
日々、オンプレミスでやっていたことを
AWS で活用することができないかを考えて
います
オンプレミスでやっていた
コンフィグ管理って AWS でもできるかな
オンプレミスのコンフィグ管理
ネットワーク網
コンフィグ管理サーバ
ルータ
スイッチ
ロードバランサ
ファイアウォール
① コンフィグ管理サーバでスクリプトを実行し、定期的にネットワーク機器全台のコンフィグを取得する
② コンフィグに差分があった場合は、メールを送信する
データセンター内
①
②
コンフィグ管理をするメリット
• 機器交換をする時に、コンフィグ管理サーバに保存してある最新のコンフィグから復旧できる
• 設定の変更箇所を確認できる• 意図しない設定変更を検知できる• 設定変更した内容が正しいか確認できる
これと同じようなことを AWS でやってみる
と
AWS のコンフィグ管理
Amazon Linuxインターネット
①
① コンフィグ管理サーバでスクリプトを実行し、定期的に指定した AWS アカウントのインスタンス等の情報を取得する
② コンフィグに差分があった場合は、 Slack へ通知する
②
コンフィグ管理サーバ
スクリプトの動き
0. 各 AWS アカウントで IAM ユーザを作成し、IAM ユーザ情報を記載したファイルを用意
1. IAM ユーザの情報をスクリプトに入力
2. AWS CLI の環境変数を設定
3. AWS CLI のコマンドを実行
4. 差分があれば Slack へ通知
あとは、 AWS アカウントごとに 2 ~ 4 を繰り返す
※ シェルスクリプトは GitHub に置いてありますhttps://github.com/MasaruOgura/shellscript/blob/master/getconfig.sh
スクリプトの動き ( 補足 )2. AWS CLI の環境変数を設定
export AWS_ACCESS_KEY_ID=xxxx export AWS_SECRET_ACCESS_KEY=yyyy export WS_DEFAULT_REGION=zzzz export AWS_DEFAULT_OUTPUT=text AWS CLI のアウトプットは 3 種類 json, text, or table
スクリプトの動き ( 補足 )3. AWS CLI のコマンドを実行
EC2 インスタンス一覧 aws ec2 describe-instances IAM ユーザ一覧 aws iam list-users セキュリティグループ一覧 aws ec2 describe-security-groups
スクリプトの動き ( 補足 )4. 差分があれば Slack へ通知
AWS で同じようなサービスがあったような
AWS CloudTrail, AWS ConfigAWS CloudTrailAWS アカウントの操作をロギングするサービスで、 SNS(Simple Notification Service) で通知可能
AWS ConfigAWS リソースのインベントリを取得し、リソースの設定履歴を監査、リソースの構成の変更を通知することができるフルマネージドサービス
単一の AWS アカウント向けで、
複数の AWS アカウントの一元管理には向い
ていない と思います
まとめ
複数の AWS アカウントを運用には今回作成
したシェルスクリプトが利用できるかも
ご清聴ありがとうございました
Appendix【 AWS 】 CLI の初期設定について(認証情報とコマンド補完)http://www.task-notes.com/entry/20141026/1414322858
シェルスクリプトで tsv ファイルと csv ファイルを処理する方法 http://millay-diary.info/blog/post-201/
対象のディレクトリがなかったら作成するシェルスクリプトワンライナー
http://qiita.com/yoccola/items/d4c346b74204d298166c
Incoming WebHooks を使って slack に POST するシェルスクリプトhttp://qiita.com/tiida26/items/9092245ad44cf7b20ef5
AppendixUNIX シェルスクリプトハンドブックhttp://www.amazon.co.jp/UNIX%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%83%8F%E3%83%B3%E3%83%89%E3%83%96%E3%83%83%E3%82%AF-Technical-handbook-001-%E9%96%A2%E6%A0%B9/dp/4797326522
GitHub( シェルスクリプトが置いてある URL)https://github.com/MasaruOgura/shellscript/blob/master/getconfig.sh