クラウド業界の標準を知ることで、ホームラボへの新しいデバイスやユーザーの追加を自動化することができます。
、クラウドプロバイダーがクラウドインスタンスの初期化と設定データを提供するために使用する標準です。新しいインスタンスの初期起動に最もよく使われ、ネットワークのセットアップ、アカウントの作成、SSHキーのインストールなど、新しいシステムをオンラインにするために必要なあらゆることを自動化し、ユーザーがアクセスできるようにします。
記事で、Raspberry Pi のようなシングルボードコンピュータの OS イメージをカスタマイズして同様の目的を達成する方法を紹介しました。Cloud-initでは、Imageにカスタムデータを追加する必要はありません。ImageでCloud-initを有効にすると、仮想マシン、物理サーバー、そして小さなRaspberry Piでさえも、まるで自分の「ホームプライベートクラウド」のクラウドインスタンスであるかのように振る舞うことができます。新しいマシンを接続し、電源を入れるだけで、自動的に一部になります。
正直に言うと、Cloud-initはホームラボを念頭に置いて設計されていません。Cloud-initは、多くの顧客に対応する必要がある大規模なクラウドプロバイダのために設計されており、小規模なイメージのセットを維持し、顧客ごとにイメージをカスタマイズすることなくインスタンスにアクセスするメカニズムを顧客に提供します。管理者が一人のホームラボは、同じ課題に直面することはありません。
クラウドイニットについて
Cloud-init用に構成されたインスタンスが起動され、サービスが実行されると、その構成内のCloud-initチェックし、実行中のクラウドのタイプを決定します。各主要クラウドプロバイダーには、構成情報をどこでどのように取得するかをインスタンスに指示するデータソース構成があります。その後、インスタンスはデータソース情報を使用して、クラウドプロバイダから提供された構成情報と顧客から提供された構成データを取得します。
データを取得した後、Cloud-initはインスタンスを構成し、ネットワークの設定、認証キーのコピーなどを行い、最後に起動プロセスを完了します。リモートユーザは、 Ansibleや ホームラボ ようなツールを使用してさらに設定したり、ワークロードを受け取ってタスクを割り当てたりする準備が整った状態で、インスタンスにアクセスできます。
構成データ
前述したように、Cloud-initはクラウドプロバイダとインスタンスユーザの2つのソースからの設定データを使用します。ホームラボでは、ネットワークとインスタンス情報を提供するクラウドプロバイダと、設定情報を提供するユーザの両方の役割を果たします。
クラウドプロバイダのメタデータファイル
クラウドプロバイダの役割では、HomeLabデータソースはプライベートクラウドインスタンスのメタデータファイルを提供します。このデータソースファイルには、インスタンスID、クラウドタイプ、Pythonバージョン、ホストに割り当てられるSSH公開鍵などの情報が含まれています。DHCPを使用していない場合、メタデータファイルにはネットワーク情報も含まれます。
ユーザー提供のユーザーデータファイル
Cloud-initの真価はユーザーデータファイルにあります。サブスクライバがクラウド・プロバイダに提供し、データ・ソースに含まれるAnsibleデータ・ファイルは、インスタンスを通常のマシンからユーザのフリート・メンバーに変えます。ユーザーデータファイルは実行可能スクリプトの形で提供され、通常のスクリプトと同じように動作します。また、クラウドサービス設定YAMLファイルの形で提供され、 Puppet 利用して設定タスクを実行することもできます。
データソース
データ・ソースは、インスタンスにメタデータとユーザー・データ・ファイルを提供するクラウド・プロバイダーによって提供されるサービスです。インスタンス・イメージまたはISOは、どのデータ・ソースが使用されているかをインスタンスに通知するように構成されます。
例えば、Amazon AWSはインスタンスのカスタムデータでインスタンスのHTTPリクエストに応答する メタデータ ファイルを提供します。他のクラウドプロバイダーも独自のメカニズムを持っています。幸運なことに、自宅のプライベートクラウドプロジェクトにはNoCloudデータソースもあります。
データソースは、構成情報をカーネルコマンドによるキーと値のペアとして、またはマウントされたISOファイルシステムによるユーザーデータとメタデータファイルとして提供することができます。これらは仮想マシン、特に仮想マシンを作成する自動化と組み合わせると便利です。
AWSのEC2データソースのように動作するNoCloudNetデータソースもあり、IPアドレスやDNS名を提供し、そこからHTTP経由でユーザーデータやメタデータを取得することができます。これは、Raspberry Piや 、冗長化されたサーバーアプライアンスなど、ホームラボの物理的なマシンに最も役立ちます。NoCloudは機能しますが、より手作業による注意が必要で、クラウドインスタンスのアンチパターンです。
ホームラボ用クラウドイニット
Cloud-initがどのようなもので、ご自宅のラボにどのように役立つのか、ご理解いただけたと思います。Cloud-initは、主要なクラウドプロバイダーによって認められている素晴らしいツールであり、家庭で使用することで教育や楽しみを提供したり、ラボへの新しい物理サーバや仮想サーバの追加を自動化したりすることができます。この後の記事では、簡単な静的Cloud-initサービスと複雑な動的Cloud-initサービスの作成方法を詳しく説明し、それらを自宅のプライベートクラウドに組み込む方法を説明します。




