仮想サーバやロードバランサー等のリソースや、ファイアーウォールやセキュリティグループのルール等、何度も利用する構成を定型化して、
システムを一括で配備したい、開発/検証/本番等の環境を同一の内容で構築したい、他のシステムでも再利用できるようにしたい、
といった要求事項に対応します。
K5では、システム上で提供される複数の仮想リソースを使用して、環境を自動で構築する"オーケストレーション" 機能が提供されています。
"オーケストレーション" 機能では、仮想ルータ、サブネット等のネットワークの設定や、ロードバランサー、仮想サーバ等のサーバの設定、
ファイアーウォールやセキュリティグループ等のアクセス制御設定等のシステムのかたまりを、「スタック」として扱います。
スタックを、YAML形式のテキストで定義したものを "テンプレート" と呼びます。
テンプレートを、ポータルやAPI経由で投入すると、オーケストレーション機能が働いてシステムを一括で構築することが出来ます。
本パターンでは、セキュリティグループを作成/更新するテンプレートを例として、スタックの作成/更新と、スタックの削除を記載します。
※セキュリティグループ以外の、実際のテンプレートの活用例は、以下を参照してください。
※本パターンはセキュリティグループを作成/更新するだけのため、システム構成のイメージ図は省略します。
(1) テンプレートの内容
テンプレートでは、以下のセキュリティグループを設定します。
セキュリティ グループ | テンプレート内容 | スタック作成で設定される セキュリティグループのルール |
---|---|---|
SG_test_A | ルール無し | egress のルールが1つも無い場合、 デフォルトの egressルールが作成されます |
SG_test_B | egress のルールを1つ設定 | 設定した egress ルールのみ 作成されます |
SG_test_C | ingress のルールを1つ設定 | 設定したingress ルールと、 デフォルトの egressルールが作成されます |
SG_test_D | egress のルールを1つ設定 | SG_test_Bと同じ |
(2) スタックの作成
ポータルでは、以下の手順でスタックを作成します。
項目 | 設定値 | 備考 |
---|---|---|
スタック名 | (適宜入力してください) | 英数字と、"_"、"-"、"." のみ使用可。先頭文字は英字。 |
テンプレート指定方法 | "YAML" | テンプレートの指定方法は以下があります - URL - ファイル - YAML |
テンプレートファイル | 以下のテンプレートの内容を 編集したものをコピー/ペースト | テンプレートの指定方法に合わせて、 項目名が以下のように変わります - URL - ファイル - YAML |
タイムアウト(分) | 10分 | 適宜入力してください |
失敗時のリソース削除 | 「削除する」をチェックしない | テンプレート実行失敗時に、 失敗するまでに作成したリソースを 削除する場合はチェックします。 |
(3) スタックの確認
スタックが作成されたら、テンプレートの内容と実際の設定状況を照合して確認してください。
※スタックが "CREATE_COMPLETE" となっていても、セキュリティグループのルール数が制限値を超えていて、
ルールが作成されていない等がありえます。
(1) テンプレートの内容
テンプレートでは、以下のセキュリティグループを更新します。
セキュリティ グループ | テンプレート内容 | スタック更新で設定される セキュリティグループのルール |
---|---|---|
SG_test_A | SG_test_Bに対する ingress/egress ルールを追加 | egress のルールがあるため、 設定したルールが作成されます |
SG_test_B | SG_test_Aに対する ingress/egress ルールを追加 | |
SG_test_C | ルール設定無し | 更新前の状態にかかわらず、 デフォルトの egressルールが作成されます |
SG_test_D | ルール設定無し |
(2) スタックの更新
ポータルでは、以下の手順でスタックを更新します。
項目 | 設定値 | 備考 |
---|---|---|
スタック名 | (スタック名) | 更新対象となるスタック名が表示されます。 |
テンプレート指定方法 | "YAML" | テンプレートの指定方法は以下があります - URL - ファイル - YAML |
テンプレートファイル | 以下のテンプレートの内容を 編集したものをコピー/ペースト | テンプレートの指定方法に合わせて、 項目名が以下のように変わります - URL - ファイル - テンプレートファイル |
テンプレートに渡すパラメータ | (設定済の値) | スタックの作成時に、テンプレートの parameters セクションで 定義された値があれば表示されます スタックの更新時に、テンプレートの parameters セクションに 同じ項目が定義されているとエラーになります テンプレートに同じ項目がある場合は、ポータルでは削除してください |
タイムアウト(分) | 10分 | 適宜入力してください |
(3) スタックの確認
スタックが更新されたら、テンプレートの内容と実際の設定状況を照合して確認してください。
※スタックが "UPDATE_COMPLETE" となっていても、セキュリティグループのルール数が制限値を超えていて、
ルールが更新されていない等がありえます。
(1) スタックの削除
ポータルでは、以下の手順でスタックを削除します。
(2) スタックの削除についての注意事項
テンプレート配備 パターンを利用した場合のメリット・効果は以下の通りです。
スタックを作成/更新で使用するテンプレートは、1つのテンプレートすべてまとめて記載するのではなく、複数のテンプレートに分割することを推奨します。
1つのテンプレートにどこまでの内容を盛り込むか、以下の観点での検討してください。
(1) システムに対する変更のタイミングによる検討
システムに対する変更のタイミングが重なることが想定される内容により、記載内容を分割します。
具体例としては、以下の内容で区分すること等があげられます。
- 仮想ルータやネットワーク系のテンプレート
- ファイアーウォール用のテンプレート (頻繁に変更が入ることを想定)
- セキュリティグループ用のテンプレート(頻繁に変更が入ることを想定)
- オートスケールのテンプレート
- NASサーバのテンプレート 等々
(2) 設定方式よる検討
本パターンで記載したセキュリティグループでは、スタックの新規作成時に、以下のように相互参照をするセキュリティグループを
まとめて作成することはできません。
セキュリティグループ | セキュリティグループに設定する内容 | ||
---|---|---|---|
接続先 | 方向 | プロトコル | |
SG_a | SG_b | 送信 | ssh |
SG_b | SG_a | 受信 | ssh |
セキュリティグループについては、以下のような分割の方式が考えられます。
- セキュリティグループをテンプレートのみで作成
相互参照を含むセキュリティグループをテンプレートのみで作成する場合は、本パターンで記載したように、
新規作成用と更新用のテンプレートを作成します。
新規作成用のテンプレートでセキュリティグループを作成し、更新用のテンプレートでルールを設定します。
新規作成用テンプレートと更新用テンプレートを残しておくことで、ある時点での設定状態を残しておくことが可能です。
なお、セキュリティグループのテンプレートを他システムで流用できるようにする等、再利用性を高めるためには、
セキュリティグループに何らか変更を加える際に、新規作成用のテンプレートと更新用のテンプレートで整合性がとれるよう
留意してください。
- セキュリティグループのグループをテンプレートで作成し、APIでセキュリティグループのルール追加/削除
テンプレートと APIを併用する方式です。
APIは、テンプレートよりも逐次変更に向いています。
逆に、逐次変更であることから、ある時点のセキュリティグループの状態を再現するという用途には不向きです。
API処理をシェルスクリプト化する等、再現性を高める工夫が必要になります。
- セキュリティグループのグループを APIで作成し、APIでルール追加/削除
テンプレート化を行わない、という選択もあります。
システムの再利用性を高めるにはテンプレートは適していますが、類似のシステムを作ることがないのであれば、
利用者が手慣れた手段 (APIまたはポータル) でセキュリティグループを設定することも合わせて検討してください。