構成管理サービス
構成管理に関する重要用語
◉プロビジョニング
複数の**ITリソース(サーバー/ネットワーク/DB/ストレージなど)**をシステムの利用状況や障害発生の状況に応じて、動的に利用したり割り当てる
◉デプロイ
サーバーに**ファイル(バイナリファイル/ソースコード)やアセット(その他ドキュメントをまとめたもの)**を配置して、利用できる状況にすること
AWSでは環境構築に関わる作業を自動化するためのサービスが提供されている
コードによるインフラストラクチャ構成管理
◉オンプレ環境構築時の課題
- 作業中にミスが発生する可能性がある
- 導入後に構成変更があることを考慮して、インフラストラクチャ管理(設計書やサーバーのパラメータなど)が必要
◉Infrastructure as Code(IaC)
- インフラストラクチャ構築作業をコードで記述して管理する考え方
- 定義ファイルをコーディングして、コードを実行することでリソースのプロビジョニングが可能
- コードをそのまま流用できる
- インフラストラクチャ構築手順のバージョン管理が簡単にできる
バージョン管理
アプリケーション開発やドキュメント作成時などの履歴を管理すること
AWS CloudFormation
AWS内の全てのインフラストラクチャリソースを自動でプロビジョニングできるサービス
◉テンプレート
- CloudFormationの設定ファイルのこと
- AWSリソースをJSON or YAMLフォーマットで記述する
◉スタック
テンプレートを利用してCloudFormationによってプロビジョニングされるAWSリソースの集合
◉JSONとYAMLのフォーマット
キーとバリューで構成されていて、構造化データを表現するフォーマット
◎JSON
{
"key1": "連続したデータの表記",
"key2": "カンマを使って区切る"
}
{
"key": ["配列の表記", "角カッコを使用する"]
}
◎YAML
key1: 連続したデータの表記
key2: 改行して記述する
key:
- 配列の表記
- 行頭にハイフンを記述する
key:
key2: 入れ子は半角2文字分のインデントをつける
◉CloudFormationの設定
主要な項目 | 説明 |
---|---|
AWSTemplateFormatVersion | CloudFormationテンプレートのバージョンを指定 |
Description | テンプレートの説明を記述 |
Pamameters | テンプレート実行時に利用できる値を指定 |
Resources | プロビジョニングしたいAWSリソースとその設定を記述 |
Outputs | スタック作成後に出力したい項目を指定 |
◎JSON形式
{
"AWSTemplateFormatVersion" : "version date",
"Description" : "JSON string",
"Metadata" : {
"template metadata"
},
"Parameters" : {
"set of parameters"
},
"Rules" : {
"set of rules"
},
"Mappings" : {
"set of mappings"
},
"Conditions" : {
"set of conditions"
},
"Transform" : {
"set of transforms"
},
"Resources" : {
"set of resources"
},
"Outputs" : {
"set of outputs"
}
}
◎YAML形式
---
AWSTemplateFormatVersion: "version date"
Description:
String
Metadata:
template metadata
Parameters:
set of parameters
Rules:
set of rules
Mappings:
set of mappings
Conditions:
set of conditions
Transform:
set of transforms
Resources:
set of resources
Outputs:
set of outputs
AWS Elastic Beanstalk
- Webアプリケーションやサービスをサーバーにデプロイでき、実行環境の管理を行うことができる
- 自動的に容量プロビジョニング/負荷分散/拡張/アプリケーションの状態の監視を行う
◉対応言語
- Java
- .NET
- PHP
- Node.js
- Python
- Ruby
- Go
- Dockerにも対応
◉デプロイサーバー
- Apache HTTP Server
- Nginx
- Passenger
- IIS(Microsoft Internet Information Services)
その他の構成管理サービス
◉AWS OpsWorks
- サーバー構築作業を自動化する構成管理サービス
- デプロイ/プロビジョニング/リリース後の監視機能
- Chef/Puppetなどのサーバーの構成を自動化するツールを利用できる
◎自動化できる手順
- EC2インスタンスを作成し、サーバーを準備
- Chefのレシピを実行して、必要なソフトウェアをサーバーにインストール
- Chefのレシピを実行して、アプリケーションをデプロイ
Chef
・インフラにおけるサーバ構成管理や、サーバへのファイル展開作業(プロビジョニング)を自動化するオープンソース・ソフトウェア
・Rubyで実装
・この構成管理の情報を「レシピ(Recipe)」、レシピの集合体である「クックブック(Cookbook)」として定義
Puppet
・OS設定やアプリケーションの構築を自動化するオープンソース・ソフトウェア
・マニフェスト(manifest)に記述
・サーバの台数によらずマニフェストの構成どおりにインフラを自動的にセットアップする
◉AWS CodeDeploy
アプリケーションのデプロイを自動化するサービス
参考