APIを使用して、このイメージを使用したドロップレットの展開を自動化します。APIクライアントを使用します。前提条件Rubyは、APIへの接続に使用するコンピューターにインストールする必要があります。gemもこの環境にインストールする必要があります。スクリプトで使用するhttps://www.digitalocean.com/community/tutorials/how-to-use-the-digitalocean-api-v2[APIトークンを生成]が必要です。Image]に基づいてマスターイメージを作成し、デフォルト構成をセットアップしてから、それを使用してスナップショットイメージを作成します。スナップショットのコストは、ファイルシステム内の使用済みスペースの量に基づいて、ギガバイトあたり月額0.05ドルです。APIを使用して、カスタマイズされたLAMPスタックの複数のインスタンスをデプロイできます。+」という名前の新しいドロップレットを作成し、[アプリケーション]タブでLAMPイメージを選択します。14.04サーバーを提供します。液滴を作成するとき、マスタースナップショットイメージの生成に使用します。できる限り小さい液滴プランを選択することが重要です。スナップショットを作成すると、同じプランまたはより大きなプランで液滴を作成するためにのみ使用できます。1GBのドロップレットを使用してマスタースナップショットを作成した場合、それを使用して1GB、2GBまたはその他の大規模なプランでドロップレットを起動できますが、このスナップショットから512MBのRAMを持つドロップレットを起動することはできません。新しいドロップレットが作成されたら、SSHクライアントを使用してそれに接続します。新しいドロップレットに接続したので、設定を構成したり、マスターイメージから展開されたすべてのドロップレットに必要なパッケージをインストールしたりできます。この場合、2つの追加のPHPモジュールをインストールします。curlとImagemagick。php5-imagickスナップショットを作成する必要なソフトウェアを追加したので、ドロップレットの電源をオフにしてスナップショットを作成できます。実行中のシステムのスナップショットを取得することは可能ですが、電源を切ると、ファイルシステムが一貫した状態になります。poweroffコントロールパネルからスナップショットを作成することもできますが、このチュートリアルでは、この時点からAPIを使用してDigitalOceanアカウントを操作します。+`コマンドで実行できます。最初のステップは、DropletKitクライアントを含めることです。token)APIからスナップショットを作成するには、マスタードロップレットのIDを取得する必要があります。これを行うには、APIのドロップレットエンドポイントを呼び出します。+」という名前のドロップレットを探します。見つかった場合、スクリプトはこのドロップレットのID番号を表示します。ドロップレットID番号を取得したので、ドロップレットIDをドロップレットエンドポイントのスナップショットアクションに渡すことにより、このドロップレットのスナップショットを作成するようAPIに指示できます。ドロップレットIDに加えて、新しいイメージに使用されるスナップショット名も渡します。+」という名前を付けることにしました。'lamp-image')作成したスナップショットリクエストは、スナップショットプロセスのステータスを追跡するために使用できるイベントID番号を返します。[このチュートリアル]は、イベントIDの使用に関する詳細情報を提供します。ステップ2:スナップショットからドロップレットを展開するこれで、構成でドロップレットを展開するために使用できるマスタースナップショットイメージが作成されました。ドロップレットで行ったように、新しいスナップショットのイメージIDを取得するためにAPIをクエリする必要があります。+`という名前の画像のIDを表示します。画像のID番号を取得したので、液滴の展開を開始できます。3リージョンのマスタースナップショットを使用して新しい2GBドロップレットを作成します。スナップショットイメージは、ドロップレット作成用に指定した領域に存在する必要があることに注意してください。endpoint]を使用して、画像を追加の領域に転送できます。'')client.droplets.create(droplet)ステップ3:ユーザーデータを使用したカスタマイズAPIを使用してカスタム構成で新しいドロップレットを展開できるようになりましたが、新しいドロップレットを個別にさらにカスタマイズすることができます。作成時にユーザーデータをドロップレットに送信することで、追加のカスタマイズを実行できます。この例では、名前を含むカスタムのindex.htmlファイルを新しいドロップレットにプリロードします。+`コマンドを使用して、Webルートのindex.htmlファイルにHTMLをドロップしています。他のコマンドを使用することで、新しい仮想ホストをドロップレットに直接設定したり、リモートサーバーから追加の設定の詳細をプルダウンしたり、ssh接続を介して実行できるほぼすべての操作を選択したりできます。[ユーザーデータの詳細については、こちらをご覧ください]。ステップ4:まとめるAPIを介してスナップショットイメージに基づいてドロップレットを展開し、コンテンツをカスタマイズできるようになったので、さらに一歩進んで、イメージに基づいて新しいドロップレットを起動するインタラクティブスクリプトを作成します。次のスクリプトは、スナップショットイメージが既に作成されており、そのIDが利用可能であることを前提としています。userdata)client.droplets.create(droplet)コードの内訳このスクリプトには、最初にDropletKitクライアントが含まれ、指定したAPIトークンを使用して新しいクライアント接続を初期化します。token)次に、領域、液滴サイズ、マスタースナップショットイメージのIDなど、液滴のオプションをいくつか指定します。'2gb'次に、ユーザーに新しいドロップレットの名前を入力するように促し、この情報をスクリプトが作成プロセスに提供するユーザーデータに含めます。/var/www/html/index.html"index.htmlページにサイト名を含めたら、それをサニタイズして、ドロップレット名として使用できることを確認する必要があります。ドロップレット名にスペースを含めることはできないため、スペースはダッシュに置き換えます。sitename.gsub!(/\s/,'-')次に、これらすべての変数をまとめて、新しいドロップレットを作成するリクエストを送信します。userdata)client.droplets.create(droplet)次のステップAPIを使用して、オンデマンドでカスタムドロップレットを作成し、作成時に独自の設定またはファイルを含めることができます。このスクリプトに機能を追加して、これらの基本を拡張することもできます。可能な改善点は次のとおりです。APIのhttps://developers.digitalocean.com/documentation/v2/#domains[DNSエンドポイント]を使用して、新しいドロップレットの起動時にDNSレコードを自動構成します。領域や液滴サイズなどの追加の入力をユーザーに要求します。ユーザーデータのruncmd呼び出しを使用して、Webコンテンツを新しいドロップレットにダウンロードするか、MySQLデータベースに入力します。