企業が新たな収益源を開拓するため、あるいは単に競争力を維持するためにデジタル変革戦略を追求する中で、大きな原動力となるのはスピード、つまり真に優れた顧客体験を迅速に提供できる能力の必要性です。 組織が DevOps 方法論を採用するにつれて、現在のネットワーク アーキテクチャが制限要因になっていることがわかってきました。 従来のネットワーク アーキテクチャは静的であり、人為的エラーの影響を受けやすく、管理には多大な運用投資が必要です。 拡張された継続的インテグレーション/開発 (CI/CD) パイプラインの一部として、アプリケーションの展開をサポートするネットワーク インフラストラクチャだけでなく、DNS や負荷分散などのネットワーク サービスも自動化することが不可欠です。
ネットワークの自動化により、組織は俊敏性を高めることができ、より動的で信頼性の高いネットワーク、運用効率の向上、導入時間の短縮、より一貫性のあるアプリケーション導入が可能になります。
プログラミング可能性は、運用の自動化を実現する重要な要素です。 F5 は長年にわたりこの概念を採用し、すべての F5® BIG-IP® アプリケーション配信コントローラ (ADC) にわたってプログラマビリティをサポートし、アプリケーション ネットワーク サービス ファブリックの俊敏性と拡張性を実現しています。 BIG-IP ADC の物理エディションと仮想エディションの両方に、柔軟でプログラム可能な管理、制御、およびデータ プレーンが備わっています。
ネットワーク プログラマビリティに対する包括的なアプローチにより、運用やビジネス イベント、または機会に応じて運用がオンデマンドで対応できるようになります。 ネットワーク プログラマビリティを実現する F5 の製品ポートフォリオにより、組織は効率的に自動化とオーケストレーションを行うことができます。
F5 と Puppet は提携し、包括的なソリューションを通じて継続的インテグレーションと継続的デプロイメント (CI/CD) をサポートする現代のビジネスの俊敏性のニーズに応えています。 Puppet は、コンピューティング、ネットワーク、ストレージ リソースの管理を自動化するための統合されたソフトウェア定義のアプローチを提供する、商用サポート付きの構成管理ツールである Puppet Enterprise を提供しており、組織がよりシームレスにアプリケーションを配信できるように支援します。
Puppet Enterprise は、IT 自動化に対する宣言型のモデルベースのアプローチを採用しており、単純で反復的なタスクの自動化から大規模なパブリック クラウド、プライベート クラウド、ハイブリッド クラウドの導入まで、さまざまな機能を実行できます。 これらのクラウド環境で構成変更をモデル化、テストし、展開する機能により、インフラストラクチャ リソースを効率的に使用できます。モジュールによる Puppet の拡張性により、組織は既存のフレームワークを基盤として BIG-IP デバイスをサポートできます。
一般的な Puppet インフラストラクチャでは、管理対象システムごとにソフトウェア エージェントがインストールされています。 これらのエージェントは、システムに関する「ファクト」と呼ばれる複数の情報を定期的に Puppet マスター サーバーに送信します。 Puppet マスターは、受信したファクトとマニフェスト (Puppet コードで構成された Puppet プログラム) を使用して、最終的な構成を定義するカタログをコンパイルし、そのカタログをエージェントに送り返します。 エージェントはカタログで定義されたシステム状態を適用できます。
ソフトウェア エージェントがノード内で直接実行されるサーバーの場合とは異なり、Puppet インフラストラクチャでは、BIG-IP デバイスのエージェントを実行するプロキシを設定できます。 これで、BIG-IP デバイスを Puppet の管理下に置き、ソリューションが提供するメリットを享受できるようになります。 Puppet エージェントは、Puppet マスターとは別のサーバー上に存在することも、同じサーバー上で実行することもできます。
Puppet 言語ファイルはマニフェストと呼ばれ、 .ppファイル拡張子で名前が付けられます。 Puppet 言語の中核はリソースの宣言です。 言語のその他の部分はすべて、リソースの宣言方法に柔軟性と利便性を追加するために存在します。 Puppet マスターは常に現在のノードの環境によって設定されたメイン マニフェストを使用します。ここでは、宣言的な方法でリソースを記述できます。
F5 と Puppet の共同ソリューションのデータフローを図 1 に示します。
この共同実装の鍵となる 2 つの機能は、iControl API と Puppet ネットワーク デバイス管理です。 F5 iControl API は Puppet プロキシと F5 BIG-IP デバイス間の通信を提供し、Puppet Network Device Management は組織がネットワーク デバイスを構成するのに役立ちます。 Puppet ネットワーク デバイスと F5 iControl API を使用すると、Puppet F5 モジュールを導入し、BIG-IP デバイスに Puppet 管理を導入できます。 Puppet F5 モジュールは、仮想サーバーの導入と管理、プールとプール メンバーの構成と管理など、BIG-IP オブジェクトを管理するためのリソースを提供します。 Puppet は F5 モジュールを使用して BIG-IP デバイス用に定義されたリソースを見つけ、F5 モジュールに保存されているカスタム クラスまたは定義済みタイプを自動的に読み込みます。
この F5 と Puppet の共同ソリューションは、次のことに役立ちます。
Puppet F5 モジュールは、一般的なアプリケーションの展開に必要なサーバー ノード、プール、仮想サーバーなどの BIG-IP オブジェクトを作成および構成できます。 複数の BIG-IP デバイスを導入する場合、組織は Puppet モジュールを使用して、デバイスのライセンス、DNS および NTP 設定、内部および外部 VLAN、セルフ IP、ルート ドメインなどのすべての初期 BIG-IP オンボーディング タスクを自動化できます。
BIG-IP デバイス上で一般的な HTTP アプリケーションを構成するには、ノード、モニター、プロファイルを設定し、仮想 IP アドレスを展開するなどを行う必要があります。 これは、単一の BIG-IP デバイスで自動化を行わなくても管理できるように思えるかもしれませんが、大規模なエンタープライズ アプリケーションを提供するために、複数のデータ センターにまたがる複数の F5 デバイスを構成するのは複雑で時間がかかり、エラーが発生しやすくなります。 宣言型のモデルベースの Puppet マニフェストを使用すると、組織はデータセンター全体の複数の BIG-IP デバイス上でアプリケーションの展開を管理および自動化できます。
デプロイメントを開始するには、Puppet マスターをインストールし、Puppet エージェントを実行できるプロキシ システムを作成します。 さらに、iControl gem や Faraday gem を含むすべての依存関係をプロキシ ホスト (Puppet エージェント) 上の Puppet Ruby 環境にインストールする必要があります。 展開は図 2 に示されています。
F5 モジュールを使用する前に、Puppet プロキシの Puppet 構成ディレクトリ ( /etc/puppetまたは/etc/puppetlabs/puppet ) にdevice.confファイルを作成する必要があります。
[bigip1] f5 と入力 URL https://admin:admin@10.192.74.111
上記の例では、 管理者:admin@10.192.74.111 F5 デバイスの Puppet ログインを参照します: <ユーザー名>:<パスワード>@<BIGIP の IP アドレス>。
次に、site.pp、<devicecertname>.pp ノード マニフェスト、またはいくつかの profiles::<profile_name> マニフェスト ファイル内の関連するクラス ステートメントまたはノード宣言に構成を入力します。 以下は、BIG-IP プラットフォーム上で HTTP アプリケーションを構成するためのサンプル Puppet マニフェスト ファイル (site.pp) です。
node bigip1 { f5_node { '/Common/web_server_1': 確認 => '存在', アドレス => '10.1.20.11', 説明 => 'Web サーバー ノード 1', 可用性要件 => 'すべて', ヘルス モニター => ['/Common/icmp'], }-> f5_node { '/Common/web_server_2': 確認 => '存在', アドレス => '10.1.20.12', 説明 => 'Web サーバー ノード 2', 可用性要件 => 'すべて', ヘルス モニター => ['/Common/icmp'], }-> f5_node { '/Common/web_server_3': 確認 => '存在', アドレス => '10.1.20.13'、 説明 => 'Web サーバー ノード 3'、 可用性要件 => 'すべて'、 ヘルス モニター => ['/Common/icmp']、 }-> f5_pool { '/Common/web_pool': 確認 => '存在'、 メンバー => [ { 名前 => '/Common/web_server_1'、ポート => '80'、}、 { 名前 => '/Common/web_server_2'、ポート => '80'、}、 { 名前 => '/Common/web_server_3'、ポート => '80'、}、 ]、 可用性要件 => 'すべて'、 ヘルス モニター => ['/Common/http_head_f5']、 }-> f5_virtualserver { '/Common/http_vs': 確認 => 'present'、 プロバイダー => 'standard'、 default_pool => '/Common/web_pool'、 宛先アドレス => '10.1.10.240'、 宛先マスク => '255.255.255.255'、 http_profile => '/Common/http'、 サービスポート => '80'、 プロトコル => 'tcp'、 ソース => '0.0.0.0/0'、 ソースアドレス変換 => 'automap' } }
この例では、次の 3 つのタスクについて説明します。
puppet device (Puppet Network Device コマンド) を実行する前は、BIG-IP デバイスに仮想サーバー、プール、またはノードは構成されていません。 puppet device -v --user=rootコマンドを実行すると、デバイス プロキシ ノードによって証明書が生成され、F5 デバイスに分類が適用されます。
以下に示すように、すべてのタスクは失敗することなく正常に完了しました。
$ sudo puppet device -v --user=root –trace 情報: https://10.192.74.111:443 の bigip1 に構成を適用し始めています 情報: pluginfacts を取得しています 情報: プラグインを取得しています 情報: bigip1 のキャッシュ カタログ 情報: 構成バージョン '1498175426' を適用しています 通知: /Stage[main]/Main/Node[bigip1]/F5_node[/Common/web_server_1]/ensure: 作成済み 通知: /Stage[main]/Main/Node[bigip1]/F5_node[/Common/web_server_2]/ensure: 作成済み 通知: /Stage[main]/Main/Node[bigip1]/F5_node[/Common/web_server_3]/ensure: 作成済み 通知: /Stage[main]/Main/Node[bigip1]/F5_pool[/Common/web_pool]/ensure: 作成済み 通知: /Stage[main]/Main/Node[bigip1]/F5_virtualserver[/Common/http_vs]/ensure: 作成済み 情報: ノード[bigip1]: ノード[bigip1]のすべてのイベントのスケジュールを解除しています 注意: 0.50 秒でカタログを適用しました
Puppet によって、完全に構成された新しい仮想サーバーが作成されました (図 3)。 このサーバーは、新しく作成されたプール全体で HTTP アプリケーションの負荷を分散しています (図 4)。 プールには、新しく作成された 3 つの Web サーバーが含まれます (図 5)。
すべての Puppet F5 モジュールはべき等性があり、つまり、ノード状態が設定された状態または目的の状態と一致しない場合にのみタスクが実行されます。 つまり、同じマニフェストが再度実行された場合、Puppet はこれらのオブジェクトを再構成しません。
情報: https://10.192.74.111:443 の bigip1 に構成を適用し始めています 情報: pluginfacts を取得しています 情報: プラグインを取得しています 情報: bigip1 のキャッシュ カタログ 情報: 構成バージョン「1498522983」を適用しています 注意: 1.51 秒でカタログを適用しました
自動化は DevOps と CI/CD の重要なコンポーネントであり、多くの場合、構成管理から始まります。 F5 と Puppet の共同ソリューションにより、運用チームはアプリケーション インフラストラクチャ スタック全体の構成を展開、自動化、管理できるようになります。 これにより、アプリケーション開発者はインフラストラクチャ リソースを柔軟にスケールアップおよびスケールダウンし、アプリケーション テストを自動化し、アプリケーション開発の期間を短縮できるようになります。 その結果、組織はこれまでにないレベルの俊敏性と拡張性を実現できます。
F5とPuppetの共同ソリューションがビジネスにどのように役立つかについて詳しくは、 forge.puppet.com/f5/f5をご覧ください。