Ubuntu前書きSaltStack(Salt)は、構造化された反復可能な方法でインフラストラクチャを簡単に管理するために使用できる強力なリモート実行および構成管理システムです。このシリーズでは、Saltデプロイメントから開発、ステージング、および実稼働環境を管理する1つの方法を示します。Salt状態システムを使用して、繰り返し可能なアクションを記述および適用します。これにより、後で同じ状態で簡単にオンラインに戻すことができるという知識があるため、環境を破壊することができます。masterサーバーの初期構成を完了することから始めました。これで、このサーバーが実行され、Saltコマンドを自分自身に発行できるようになります。+`コンポーネントを設定することにより、ソルトマスターの範囲を拡大します。これにより、必要に応じてDigitalOceanアカウントに接続してリソースを増やすことができます。個々のコンポーネントと環境全体のプロパティを定義するプロファイルを作成します。masterサーバーを設定する必要があります。そのサーバーの非ルートユーザーアカウントを使用して、このガイドの手順を完了します。DigitalOceanアカウントにもアクセスする必要があります。APIを活用し、さまざまな環境を構成するサーバーを作成および制御します。この目的のためにAPIトークンを作成する必要があります。これについてはガイドで説明します。+`に設定ファイルを作成することから始めます。これは、作成するすべてのサーバーの共通オプションとして使用されます。今すぐファイルを作成して開きます。`オプションのみです。minion:+`キーを使用します。cloudminion:このキーの下で、SaltマスターサーバーのIPアドレスを指定することから始めます。minionがプロビジョニング後にマスターに接続できるようにするため、最も重要な設定です。master:Note次に、いくつかの鉱山機能を設定する必要があります。Saltミニオンは、Salt実行モジュールの結果をSaltマスターの中央リポジトリに送り返すように設定できます。このシステムは、ミニオンサーバーが他のミニオンと重要な情報を共有するための手段を提供します。2つの鉱山機能をセットアップします。これらは、ミニオンのパブリックIPアドレスとプライベートIPアドレスをソルトマスターに返すだけです。他のミニオンは、ピアへの接続方法を学習するために、この情報をマスターに照会できます。eth1完了したら、ファイルを保存して閉じます。DigitalOceanクラウドプロバイダーをセットアップする次に、DigitalOceanクラウドプロバイダーファイルを構成します。これには、DigitalOceanアカウントに接続するために必要な情報と、作成するサーバーに使用する一般的な設定が含まれます。プロバイダー情報のディレクトリを作成することから始めます。/etc/salt/cloud.providers.d/do.conf内部では、別のYAML構造を作成します。構造内の最上位キーは、プロバイダーの名前になります。ここでは「do」を使用します。`は、使用するクラウドを指定します。digital_ocean次に、DigitalOceanアカウントに移動してAPIトークンを作成する必要があります。[このリンク]に従うことにより、コントロールパネルのAPIセクションにアクセスできます。ページの右上隅にある[新しいトークンを生成]ボタンをクリックします。APIトークン]次のページで、わかりやすい名前を入力し、「トークンを生成」をクリックします。token]次のページの下部に向かって、新しいトークンが表示されます。token]この値は再度表示されないため、ページを離れる前にこの値をコピーします。これを忘れた場合は、トークンを破棄して新しいトークンを生成してください。+`オプションをコピーした生成されたトークンの値に設定します。personal_access_token:次に、SSHキー情報を指定します。minionをセットアップするために、最初にSSHを使用してサーバーにログインする必要があります。+`をDigitalOceanに追加したSSHキーの名前に設定する必要があります。スクリプトとスクリプト引数を指定して、新しいミニオンにデプロイされるSaltの正確なバージョンを制御できるようにする必要があります。git完了したら、ファイルを保存して閉じます。materによってプロバイダー構成が選択されていることがわかります。----------次のように入力して、APIキーをテストできます。do展開可能な地域のリストが表示されます。SSHキーファイルを作成する先に進む前に、プロバイダーファイルで参照したSSH秘密キーファイルを作成する必要があります。必要なディレクトリ構造を作成することから始めます。+`というファイルを作成します。+`ディレクティブで指定したDigitalOceanキーの1つに関連付けられているプラ​​イベートキーの内容を貼り付けます。*に次のように入力して、秘密鍵の内容を取得できます。~/.ssh/id_rsaこれは次のようになります。+」のファイルに貼り付け、ファイルを保存して閉じます。Saltがキーを使用するには、それを含むファイルとディレクトリに正しい権限が必要です。次を入力して許可を設定します。/etc/salt/pki/cloud/do.pemこれで、Saltは秘密キーを読み取り、それを使用して新しいサーバーにログインできます。クラウドプロファイルのセットアップDigitalOceanプロバイダーが構成されたので、プロファイルを作成できます。これらのプロファイルは、新しいサーバーインスタンスを構築するときに使用するプロパティを定義します。いくつでも設定できます。+`ディレクトリに保存します。今すぐそのディレクトリを作成します。/etc/salt/cloud.profiles.dこのガイドでは、構成する環境ごとに個別のファイルを使用します。/etc/salt/cloud.profiles.d/dev-profiles.conf各プロファイルは、トップレベルのプロファイル名で指定されます。名前は、提供された詳細を使用してドロップレットを作成するときに使用するものです。+`プロファイルを指定します。これには、すべての開発マシンで共有される基本的なプロパティが含まれます。64ビットを使用することを指定しています。NYC3は、ソルトマスターが展開されている地域であり、必要に応じてプライベートネットワークを使用して通信できます。これを念頭に置いて、プライベートネットワーク(これは構成で使用されます!)およびIPv6も有効にします。これらのコマンドから返される情報を使用して、必要に応じてサイズと領域を変更できます。do返される出力では、使用するサイズと場所に関連付けられている「スラッグ」は、構成内で使用する必要がある名前です。+`は次のようになります。Trueこのプロファイルは、必要な詳細のほとんどを提供しますが、ミニオンにいくつかのカスタムソルトグレインを含めることも必要です。これらは、インフラストラクチャおよびそれらが属する環境で果たす役割に基づいて、特定のマシンをターゲットにするために使用されます。これを行うには、基本プロファイルを「拡張」します。拡張により、既存のプロファイルの特性を継承する新しいプロファイルを指定し、新しい値を追加できます。継承はかなり難しいため、1つの拡張機能のみを許可します(拡張機能を拡張しません)。リスト項目(グレインなど)は、以前のデータを追加するのではなく置換します(そのため、環境内のすべてのサーバーで共有されていても、ベースで環境を指定できませんでした)。Webサーバー固有のプロファイルは非常に単純です。元の属性をすべて使用し、指定した2つの粒子を追加します。ロール「webserver」を使用しています。これについては、チュートリアル全体で照合します。開発環境は、「dev」値によって示されます。dev私たちのデータベースプロファイルは、ほぼ同じように機能します。+」プロファイルIDを使用します。dev完了したら、ファイルを保存して閉じます。ステージング環境用に同様のファイルを作成します。次を入力してファイルを作成します。+`プロファイルとまったく同じです。拡張プロファイルは、環境と名前のみを変更して、以前の定義とも厳密に一致します。ロードバランサーの拡張プロファイルも追加します。これは、開発環境には存在しないサーバータイプであるためです。stage完了したら、ファイルを保存して閉じます。最後に、生産プロファイルを作成しましょう。/etc/salt/cloud.profiles.d/prod-profiles.conf実稼働プロファイルは、ステージングプロファイルとほぼ完全に同一です。文字列「stage」のすべてのインスタンスを「prod」に変更するだけです。prod完了したら、ファイルを保存して閉じます。次のように入力して、プロファイルがピックアップされていることをテストします。do設定したすべてのプロファイルのリストが表示されます。環境マップを作成するこれで、必要な個々のサーバーの作成方法を正確に定義するプロファイルが作成されました。これらを使用して、必要なサーバーを一度に1つずつ簡単に作成できます。+`は、「マップ」と呼ばれる追加の設定ファイルも活用できます。マップを使用すると、作成する完全なインフラストラクチャの概要を説明するために、作成したプロファイルを参照できます。プロファイルタイプごとに作成するサーバーの名前を指定します。+`というマップファイルを保持するディレクトリを作成します。/etc/salt/cloud.maps.d開発環境を定義することから始めましょう。[前の記事]で、設定する環境の概要を思い出した場合、開発環境は2つのサーバー:Webサーバーとデータベースサーバー。これを知っていると、開発マップファイルは次のようになります。dev-db最上位の項目は、リソースのプロビジョニングに使用されているプロファイルを示します。プロファイル名の下にあるリスト(ダッシュで示されている)は、スピンアップするサーバーの名前を示しています。この例では、「dev-web」というWebサーバーと「dev-db」というデータベースサーバーを定義します。+」をこのファイルにポイントすることで同時に作成できます。完了したら、ファイルを保存して閉じます。次に、ステージング環境マップを作成しましょう。/etc/salt/cloud.maps.d/stage-environment.mapステージング環境には、2つのWebサーバー、2つのデータベースサーバー、およびロードバランサーがあります。冗長サーバーに番号を付けて、それらを区別します。マップは次のようになります。stage-lbこれにより、合計5台のサーバーをプロビジョニングできます。完了したら、ファイルを保存して閉じます。最後に、次のように入力して、運用環境のマップファイルを作成できます。/etc/salt/cloud.maps.d/prod-environment.mapこれは、ステージング環境マップにかなり似ています(使用されるサーバー名とプロファイルの明らかな例外を除きます)。本番環境には追加のロードバランサーがあり、フェイルオーバーを構成できます。prod-lb2実稼働環境に必要なベアサーバーは、このファイルで試運転できます。完了したら保存して閉じます。テスト環境のプロビジョニングマップファイルが作成されたので、環境の一部またはすべてを簡単に起動できます。これを行う前に、Saltブートストラップスクリプトをマスターサーバーにダウンロードする必要があります。マスターはミニオンに接続し、スクリプトをアップロードして実行し、作成したサーバーでソルトミニオンを起動します。次のように入力して、ブートストラップスクリプトをダウンロードします。-uこのコマンドは、ブートストラップスクリプトの最新バージョンを使用していることを確認するために、時々実行する必要があります。+`コマンドを使用して任意の環境を起動できます。最小限のリソースでプロセスを実証するため、これを開発環境でテストします。これがないと、Saltは1つのサーバーがブートストラップを完了するのを待ってから、次のサーバーで作業を開始します。+`フラグを使用して、使用したい環境マップをポイントする必要があります。完全なコマンドは次のようになります。/etc/salt/cloud.maps.d/dev-environment.mapそのファイルで定義されている2つのサーバーの作成を確認するように求められます。[N/y]「Y」と入力してサーバーを作成します。サーバーが作成されたら、次のように入力してSalt接続を確認できます。test.pingSaltマスターミニオンと新しい開発マシンの両方から応答を受け取る必要があります。プロビジョニングプロセス中に、Saltマスターは新しいサーバーのキーを生成して受け入れてから、それらをミニオンマシンに配置しました。+`を使用する必要はありません。新しいサーバーはすぐに応答するはずです。+`コマンドを発行できます。この時点で開発マシンを使用する予定がない場合は、次のように入力して、開発マシンを再度破棄してください。/etc/salt/cloud.maps.d/dev-environment.mapこれにより、APIを介してサーバーが破壊され、ストアからミニオンキーが削除されます。別の方法として、名前で個々のマシンを破棄することもできます。[N/y]この時点で他のマップファイルを自由にテストして、構成する環境に必要なサーバーを正しくプロビジョニングできることを確認してください。結論この時点で、SaltマスターサーバーはDigitalOceanクラウドプロバイダーを使用してリソースを完全にスピンアップできる必要があります。個々のマシンの特性のプロファイルを作成し、セットアップごとに必要な個々のサーバーを簡単に説明するマップを確立しました。[次のガイド]では、Saltの構成管理について詳しく説明します。再現可能なNginx構成をセットアップすることにより、機能が向上します。