F5アプリケーションサービスの自動化:実践ガイド

はじめに

アプリケーションデリバリおよびセキュリティデバイスの導入と構成管理の自動化は、ほぼ必須の取り組みとなっています。2017年のIDG FutureScapeレポートでは、自動化とマルチクラウド管理が、2021年までにビジネスに影響を及ぼす主要な取り組みとして挙げられています。自動化により、アプリケーションに不可欠なセキュリティ、最適化、可用性の各サービスを、拡張性、信頼性、統合性を確保しながら導入できます。また、これらのサービスの提供を、アプリケーション導入の主流モデルとなりつつある、オーケストレーションされたビルド、テスト、デプロイのワークフローに組み込むことができます。

新しい仮想サーバーやプールメンバーの追加といった基本的なタスクを簡単に自動化するだけでも、運用部門はアプリケーション所有者や他の自動化システムにセルフサービス機能を提供できるようになります。また、次世代の自動化ツールの構築など、より生産的な業務に充てる時間を確保できます。

組織がITサービスの提供に複数のクラウドプラットフォームを採用し始めると、自動化の必要性はさらに高まります。特性の異なるプラットフォームを使用して複数の拠点にサービスを展開する場合、自動化は、増大する運用負荷を軽減し、新しいプラットフォームに不慣れなことによるエラーを減らすのに役立ちます。

しかし、何をどのように自動化すればよいのでしょうか。運用モデル、インターフェイス、言語が異なる中、自動化ソフトウェアは、単一デバイスのレイヤーで動作するものから、複数のシステムにまたがるより複雑なツールまで多岐にわたります。Infrastructure-as-a-Service(IaaS)クラウドプラットフォームは、それぞれ仮想インフラストラクチャとサービスを展開するための独自のネイティブツールを提供しています。さらに、F5はさまざまなインターフェイスとオーケストレーションの選択肢を提供しています。こうした幅広いツールと選択肢により、組織に最適な方法で自動化できる一方、適切なツールの選定は容易ではありません。複雑化やツールの乱立というリスクも現実に存在します。

本書では、物理および仮想のF5 BIG-IPアプライアンスの導入、管理、構成を自動化する方法の概要と、ビジネスに適した方法を選択するためのアドバイスをご紹介します。

自動化:主な検討事項

自動化の範囲

自動化には、さまざまな作業が含まれます。その一方には、Bash、TMSH、Pythonなどの言語で記述したシンプルなスクリプトの開発があります。これらのスクリプトをローカルで実行することで、手動の構成作業を迅速化できる場合があります。もう一方には、ソースコード管理、ワークフローオーケストレーター、および複数の自動化ツール(使用する場合)を組み合わせた、完全な「Infrastructure as Code」システムがあります。このシステムでは、リポジトリ内のテキストファイルによってインフラストラクチャの構成を定義し、変更します。この両極の間には、BIG-IPプラットフォームの導入と構成の管理に役立つさまざまな選択肢があります。

ミュータブルとイミュータブル

現在のBIG-IP導入環境の多くは可変と考えられます。つまり、その構成は時間の経過とともに変更されることが想定されます。これは、BIG-IPプラットフォームの多くが、複数のアプリケーションにサービスを提供するマルチテナントデバイスとして導入されているためです。新しいアプリケーションが導入された場合や、既存のアプリケーションがスケールした場合、または追加のサービスが必要になった場合、それに応じてBIG-IPの構成が更新されます。この導入方法により、インフラストラクチャチームは一元化されたインフラストラクチャ群を管理し、共通のプラットフォームからアプリケーションにサービスを提供できます。

ただし、BIG-IPプラットフォームが独立したアプリケーションスタックの一部として導入され、特定のBIG-IPが提供するサービスが特定のアプリケーションまたはサービスに結び付けられる場合もあります。この場合、BIG-IPの設定はイミュータブルとして扱うことができます。つまり、設定は起動時またはソフトウェアイメージの一部としてインストールされ、BIG-IPインスタンスのライフサイクル中には変更されません。設定を変更するには、ソフトウェアイメージまたは起動エージェントのスクリプト内容を変更してから、再デプロイします。このモデルは一般に「nuke and pave」と呼ばれます。全体としてはあまり一般的ではありませんが、アプリケーション単位のインスタンスに対応する新しいBIG-IPライセンスモデル、高度なライセンスツール、さらにF5 cloud libs(クラウド環境でのBIG-IPのオンボーディングを支援するために設計されたNode.jsスクリプトおよびライブラリのセット)などのツールが利用可能になったことで、コードとインフラストラクチャの両方を密接に結び付けた分離スタックをアプリケーションに必要とする組織にとって、この導入モデルは現実的な選択肢となりつつあります。

宣言型と命令型

自動化インターフェースを利用者に提供する方法には、2つの概念モデルがあります。最も一般的な「第1世代」の自動化スキーマは、命令型モデルを採用する傾向があります。命令型の自動化モデルでは、通常、利用者は達成したいことに加え、そのための具体的な手順(一般にAPI呼び出し)も把握しておく必要があります。そのため、高度なサービスの構成の詳細を理解する負担だけでなく、サービスを自動化ツールと統合するための複雑さや作業も、利用者が担うことになりがちです。これは、単にサンドイッチを注文し、作り手が必要な作業とその順序を判断して作ってくれることを期待するのではなく、サンドイッチを作るために必要な作業を一つひとつ指定して注文するようなものです。

これに対し、宣言型インターフェースでは、利用者(人間またはマシン)が必要なものを指定することでサービスを作成できます。自動化の対象には、求める結果に基づいて構成を作成するためのワークフローまたはサービステンプレートが事前に設定されているため、必要なすべての手順を詳しく把握する必要はありません。宣言型インターフェースは初期設定がやや複雑ですが、適切なサービステンプレートを構築すれば、その複雑さは運用の簡素化によって相殺されます。そのため、一般に、自動化システムを構築する際に推奨される仕組みです。

直接または管理ツール経由

もう1つ検討すべき点は、自動化API呼び出しをサードパーティ製ツールから変更対象のデバイスに直接行うか、追加の管理ツールを介して行うかです。管理ツールを使用すると、運用を抽象化して簡素化できるほか、管理対象に直接接続する場合と比べて、制御やログ記録のレイヤーを追加できる可能性があります。ただし、迅速な変更が不可欠な状況でも管理レイヤーの高可用性を確保できるよう、そのツールをサポートする必要があります。

API、スタートアップエージェント、CLIのどれを使用しますか?

BIG-IPデバイスの自動化には、BIG-IPの機能の大部分を公開するREST APIが最も一般的に使用されます。このAPIでは、文書化されたスキーマが提供されています。Ansibleなどの自動化ツール向けにF5が提供するモジュールでも、REST APIが広く使用されています。REST APIは、設定項目ごとの命令型インターフェイスを提供するだけでなく、F5のiAppテンプレートの起動にも使用できます。その際、iAppサービスの設定値は、API呼び出し内のJSONペイロードとして渡されます。また、iControl LX機能の追加により、1回のAPI呼び出しで複数ステップの処理を実行できる、ユーザー定義のAPIエンドポイントも作成できます。

BIG-IPの設定を自動化する一般的な方法として、起動時に実行され、外部情報を取得してBIG-IPプラットフォームを設定できるスタートアップエージェントの使用も挙げられます。スタートアップエージェントは、デバイスを「オンボーディング」するための初期設定によく使用され、GitHubなどのサードパーティサイトや独自のリポジトリから追加のスクリプトや設定ファイルを取得できます。特に、アプリケーションごとに固定された設定を選択している場合は、スタートアップエージェントを使用してBIG-IPプラットフォームを完全に設定することもできます。

最も一般的な起動時設定はcloud-initです。Microsoft Azureを除くすべてのBIG-IP VEイメージで有効になっていますが、AWSおよびOpenStack環境へのデプロイに最適です。F5はcloud-initに加えて、起動時のBIG-IP設定を支援する一連のクラウド起動ライブラリを提供しています。

起動後にスタートアップエージェントを使用してプラットフォームを構成する場合、外部ソースを使用する際の障害管理には十分注意してください。特に、スケーリングイベントの一環としてインスタンスが起動される可能性がある場合は注意が必要です。外部リソースを利用できない場合、システムはどのように動作するでしょうか。需要に対応しようとして、追加の「ゾンビ」デバイスが作成されることはないでしょうか。

場合によっては、自動化システムがユーザーとして動作し、CLIコマンドを実行できます。API呼び出しでは対応しきれない問題を解決できることもありますが、一般にサポートが難しく、ソリューションも脆弱になるため、この方法は最終手段としてください。

テンプレートとプレイブック

テンプレートとプレイブックを使用すると、デプロイを自動化し、一定程度標準化されたインフラストラクチャを構築できます。適切なレベルで標準化することで、インフラストラクチャの堅牢性とサポート性が向上します。適切に作成されたテンプレートは宣言型インターフェイスを提供するため、リクエスト元のエンティティ(ユーザーまたはマシン)は、実装の詳細ではなく、必要なプロパティを把握するだけで済みます。テンプレートのみを使用してデプロイし、テンプレートの修正によってのみ問題に対処することで、サービス品質の向上につながる可能性があります。通常、問題は一度修正すれば、新しいテンプレートからサービスを再デプロイできるためです。

プラットフォーム統合

プラットフォーム統合ツールは、BIG-IPサービスの設定を、プライベートクラウドやコンテナ管理システムなどのコンピューティングプラットフォームと連携させます。その仕組みはプラットフォームや実装によって異なりますが、一般に次の3つのモデルに分類されます。

既存のプラットフォーム構成へのF5サービスの組み込み
このモデルでは、F5をOpenShift Container Platform Routerとして使用したり、F5をOpenStack Load Balancing as a Service (LBaaS)システムと併用したりするなど、既存のプラットフォーム構成を利用してF5サービスを組み込みます。プラットフォームネイティブのインターフェースを使用してサービスを設定し、付属のドライバーやその他のソフトウェアがプラットフォームの設定指示をF5の設定へシームレスに変換するため、これらの仕組みを使用しても運用手順をほとんど変更する必要はありません。ただし、容易に導入できるのは、プラットフォームネイティブのインターフェースから利用できる機能に限られる点に注意してください。

プラットフォームイベントのサブスクライブ

もう1つの一般的な統合方法は、ソフトウェアモジュール(Container Connector for KubernetesやContainer Connector for Mesosなど)がプラットフォーム内のイベントをサブスクライブし、そのイベントに基づいて構成を変更する方法です。サービスの提供対象となるアプリケーションにタグまたはラベルを付け、必要なタグが付いたイベントを監視するようコネクターソフトウェアを構成することで、デプロイするイベントとサービスを選択できます。

プラットフォーム管理ツールとの統合

多くのプライベートクラウドプラットフォームには、自動化を目的とした管理システムが備わっています。たとえば、VMwareには複数の管理・統合ツールがあり、その1つであるvRealize Orchestrator(vRO)では、BIG-IPの構成に対応するサードパーティ製プラグインを利用できます。ほかにも、OpenStack HEATテンプレートシステム用のプラグインがあります。

サービスディスカバリ

サービスディスカバリは完全な自動化ソリューションではありませんが、環境の変化に合わせてBIG-IPの設定を連携させるための、シンプルかつ強力な手段です。サービスディスカバリでは、APIを介してクラウドシステムを定期的にポーリングし、リソースの一覧を取得して、それに応じてBIG-IPの設定を変更します。バックエンドのコンピューティングリソースをスケーリングする際、ロードバランサーが新しいリソースを認識する必要があるため、リソースが自動スケーリンググループに構成されている環境では特に有用です。サービスディスカバリコンポーネントは、F5のクラウド自動スケーリングソリューションに付属しており、対象はAWSおよびAzureです。

一般的な自動化ツール:リソースガイド

考えられるすべての自動化ツールやオーケストレーションツールを網羅することはできませんが、F5のお客さまが利用している代表的なツール、ユースケース、機能を以下にまとめます。

-------------------------

言語統合

言語

ステータス

例と出典

Python

F5による提供

https://github.com/F5Networks/f5-common-python

Go

ユーザー投稿

https://github.com/f5devcentral/go-bigip

PowerShell

F5サポート対象

https://devcentral.f5.com/wiki/icontrol.powershell.ashx

構成管理およびインフラストラクチャ自動化ツール

ツール

ステータス

例と出典

Ansible

F5提供

https://github.com/F5Networks/f5-ansible

Terraform

F5提供

https://github.com/f5devcentral/terraform-provider-bigip

Puppet

F5によるコントリビューション

https://github.com/f5devcentral/f5-puppet

Chef

ユーザー提供

https://github.com/target/f5-bigip-cookbook

SaltStack

サードパーティ

https://docs.saltstack.com/en/latest/ref/runners/all/salt.runners.f5.html

インフラストラクチャテンプレートシステム

プラットフォーム

ステータス

例と出典

AWS

F5サポート対象2

https://github.com/F5Networks/f5-aws-cloudformation

Azure

F5サポート対象1

https://github.com/F5Networks/f5-azure-arm-templates

Google

F5対応1

https://github.com/F5Networks/f5-google-gdm-templates

OpenStack

F5サポート対象1

https://github.com/F5Networks/f5-openstack-hot

----------------------------

Startup AgentsとCloud Scripts

Cloud-init
https://devcentral.f5.com/articles/f5-in-aws-part-5-cloud-init-single-nic-and-scale-out-of-big-ip-in-v12-21476

Cloud libs
https://github.com/F5Networks/f5-cloud-libs

---------------------------

プラットフォーム統合
コンテナ管理プラットフォーム

プラットフォーム

ステータス

例と出典

Kubernetes

F5サポート対象1

https://github.com/F5Networks/k8s-bigip-ctlr

Marathon

F5サポート対象1

https://github.com/F5Networks/marathon-bigip-ctlr

CloudFoundry

F5サポート対象1

https://github.com/F5Networks/cf-bigip-ctlr

プライベートクラウドプラットフォーム

プラットフォーム

ステータス

例と出典

OpenStack (LBaaS)

F5サポート対象1

https://github.com/F5Networks/f5-openstack-lbaasv2-driver

OpenStack (Heat)

F5サポート対象1

https://github.com/F5Networks/f5-openstack-hot

VMWare (vRO)

サードパーティ

https://bluemedora.com/products/f5/big-ip-for-vrealize-operations/

-------------------

オーケストレーションツールとワークフローツールに関する注意事項

上記のツールと統合機能は、アプリケーションの可用性、セキュリティ、スケーリングの各サービスを提供するために、BIG-IPプラットフォームの導入と構成を自動化する手段です。これらのサービスは不可欠ですが、フルスタックアプリケーションの導入を構成する一要素にすぎません。サーバー、データ、コンパイル済みのアプリケーションコード、インフラストラクチャを含む完全なアプリケーションスタックを、連携させてテスト済みの形で構築するには、単純な自動化ツールだけでは不十分です。

関連するワークフローを備え、複数の自動化システムと連携する、より上位レベルのオーケストレーションツールが必要です。これらのツールは、継続的インテグレーション/継続的デリバリー(CI/CD)の実践で最も一般的に使用されます。CI/CDを実際に導入するうえで、自動化は不可欠です。オーケストレーションツールは複数ありますが、Jenkinsが最も一般的なツールの1つです。また、ワークフローの例では、Jenkins、F5、Ansibleを使用して、F5のInfrastructure as Code機能をCI/CDワークフローに組み込む方法を紹介しています。ただし通常、オーケストレーションツールは、いずれかの構成自動化ツールを介して実際に変更を行い、サービスをデプロイします。

ライセンス

BIG-IPプラットフォームを稼働させるにはライセンスが必要なため、自動化のクリティカルパスにライセンス取得を組み込むことが有効です。BIG-IP仮想デバイスを迅速にスケールアップまたはスケールダウンしたり、テストや開発用に作成したりする必要がある、変化の激しい環境では、ライセンスモデルを慎重に検討する必要があります。

パブリッククラウドでは、クラウドマーケットプレイスで提供されているBIG-IPの従量課金版を利用する方法があります。従量課金インスタンスではライセンスが自動的に適用され、利用量または契約期間に応じた料金がクラウドプロバイダーを通じて請求されます。

もう1つの選択肢は、サブスクリプション(または永続ライセンス)として購入した再利用可能なライセンスプールを、F5 BIG-IQ License Managerと併用することです。これにより、プール内のライセンスを割り当てたり、取り消したりできます。

スタートアップエージェントとAPI呼び出しを使用して、ライセンス付与の手順を自動化できます。その場合、クラウドプラットフォームのユーティリティライセンスであっても、F5ライセンスサーバーへのアウトバウンドインターネットアクセスが必要です。

状況に応じた使い分け

組織によっては、適切な自動化およびオーケストレーションツールの選定が非常に簡単な場合もあれば、難しい場合もあります。他のコンポーネントですでにツールや手法を採用しており、BIG-IPをそのシステムに統合するだけであれば簡単です。特定のツールと統合しない場合でも、豊富なiControl REST APIをiControl LXの機能やcloud-initと組み合わせることで、BIG-IPを既存の自動化ツールに比較的容易に統合できます(特に、1回のAPI呼び出しで複雑な構成も作成できるiAppテンプレートと組み合わせる場合)。

ただし、ゼロから始める場合は、より複雑になる可能性があります。他のソリューションを選定する場合と同様に、まず要件を把握する必要があります。本書で要件リストを作成することはできませんが、評価に役立つ一連の質問と推奨事項を以下に示します。

  • 自動化モデル: 宣言型モデルなら、オーケストレーションの利用者ははるかに簡単に操作できます。目的を達成するための手順をすべて把握する必要はなく、何を実現したいかを指定するだけで済みます。
  • 想定されるプラットフォームと環境: 現時点では、コンテナや各種クラウドプラットフォームがアプリケーションインフラストラクチャの主要な要素になることは避けられないと考えられます。それを踏まえて計画してください。
  • スキル: 基盤となるテクノロジーの一部について、すでにスキルをお持ちでしょうか。こうしたスキルは、所属部門にはなくても、社内の別部門に存在する可能性があります。その場合は、組織ですでに採用している言語を使用するツールを選ぶとよいでしょう。
  • サポート可能性: サポート可能なシステムのみを構築してください。当然のことに思えるかもしれませんが、成功の鍵は、過剰な運用負荷を生じさせずに自動化のメリットを最大限に引き出せるよう、組織内で実現可能な複雑さのレベルを選ぶことです。

F5プライベートクラウドソリューションパッケージ

F5 private cloud solution packagesを利用すると、さまざまなプライベートクラウド環境でF5アプリケーションサービスを提供するために必要なテクノロジーとサービスを容易に導入できます。このパッケージは、ソフトウェア、ハードウェア、プロフェッショナルサービスを組み合わせ、さまざまなプライベートクラウドプラットフォーム向けに検証済みのターンキーソリューションを提供します。private cloud solution packagesを使用することで、他のプラットフォームにも展開可能なモデル環境を構築し、複数の環境にわたって、より統一された一貫性のあるアプリケーションデリバリおよびセキュリティサービスを提供できます。

まとめ

IT自動化のさらなる進展は避けられません。主要なアプリケーションデリバリおよびセキュリティサービスの提供に戦略的に取り組むことで、組織が展開するアプリケーションのセキュリティと可用性を維持できます。また、自動化は、特に複数のプラットフォームやパブリッククラウドを利用する場合に、運用負荷の軽減にも役立ちます。

適切な自動化システムの選定は容易ではありません。利用可能なスキルセットとシステムのサポート性を考慮し、関係者が連携して包括的に取り組むことが理想的です。どのソリューションを選択しても、アプリケーションの展開先を問わず、アプリケーションに不可欠なエンタープライズグレードのサービスを提供できるよう、BIG-IPプラットフォームとF5の専門知識が支援します。

2018年2月9日公開