クラウド テンプレート開発者は、テンプレートの展開時に SaltStack Config ミニオンをインストールするプロパティを YAML に追加できます。

テンプレートに追加するコア プロパティには、展開するマシンへのリモート アクセスと、SaltStack Config リソースの構成プロパティが含まれます。この手順では、一部のプロパティのみを扱います。YAML には、この例で使用されていない他の SaltStack Config リソース プロパティが含まれています。詳細については、スキーマを確認してください。

この例では、リモート アクセスのプロパティにユーザー名とパスワードを追加する方法を示していますが、シークレット プロパティを構成して、テンプレートにそのプロパティを追加することもできます。例については、Cloud Assembly のシークレット プロパティを参照してください。

手順

  1. Cloud Assembly で、[デザイン] > [クラウド テンプレート] の順に選択します。
  2. 既存のテンプレートを開きます。
  3. SaltStack Config リソースを見つけて、キャンバスにドラッグします。
  4. ミニオンをインストールするマシンに、SaltStack Config リソースを接続します。
  5. コード ペインで、SaltStack Config リソースにプロパティを追加します。

    使用可能なすべてのプロパティを含める必要はありません。この例で使用している値については、表で説明しています。

    Cloud_SaltStack_1:
        type: Cloud.SaltStack
        properties:
          masterId: saltstack_enterprise_installer
          hosts:
            - ${resource["Cloud_VM_1".id}
          saltEnvironment: sse
          stateFiles:
            - /doe.sls
          variables: 
            user: joe
          additionalMinionParams:
            grains:
              roles:
                - webserver
                - database   
           additionalAuthParams:
             profile:
                tmp_dir: /var/run

    ここでは、この例で使用されている Cloud_SaltStack_1 プロパティについて説明します。

    プロパティ 説明
    masterId この例のスキーマでは、masterId 値は saltstack_enterprise_installer です。

    SaltStack Config[管理] > [マスター キー] で、マスター ID が定義されている場合があります。

    ホスト hosts 値は、ミニオンのインストール先となるマシンまたはマシン クラスタの ID です。SaltStack Config のデフォルトでは、マシンの名前がミニオン ID として渡されます。

    Windows にミニオンを展開する場合は特に、マシン名を 15 文字以下にすることを推奨します。Windows では、15 文字を超えるホスト名は許可されません。

    展開するマシンに対してカスタム命名規則を定義する場合は、Cloud Assembly に展開されたリソースのカスタム命名を参照してください。

    saltEnvironment この例では、sse が状態ファイルの配置場所です。

    SaltStack Config[構成] > [ファイル サーバ] により、状態ファイルを他のファイル サーバに置くこともできます。

    stateFiles この例では、doe.sls は、saltEnvironment で指定されるファイル サーバ ディレクトリに格納される状態ファイルです。
    variables クラウド テンプレートで定義された変数は、ピラーとして Salt 状態に渡されます。この例では、変数 userdoe.sls ファイルに渡されます。

    次の例に示すように、状態ファイル内の変数は Jinja を使用して参照できます。

    {% set username = pillar.get('user', 'random') %}
    
    friend:
      user.present:
        - names:
          -  {{username}}

    doe.sls ファイルを使用すると、クラウド テンプレート内の変数 user で表されるユーザーが存在するようになります。クラウド テンプレートで変数が指定されていない場合は、ユーザー random が存在するようになります。

    additionalMinionParams このプロパティを使用して、ミニオンに追加の構成パラメータを渡します。次のパラメータはディクショナリとして渡す必要があります。

    • grains:このプロパティを使用して、ミニオンにカスタム Salt Grain を割り当てます。1 つ以上の key:value ペアを指定できます。値には、文字列、配列、またはマップを使用できます。

      新しいマシンをプロビジョニングする場合は、カスタム Grain データのみを割り当てることができます。[SaltStack リソースの接続] または [Salt 構成の更新] Day 2 アクションを実行する場合は、カスタム Grain データを割り当てることはできません。

    additionalAuthParams このプロパティを使用して、デフォルトの salt-cloud 構成とマージされる、またはこの構成によってオーバーライドされるミニオンをプロビジョニングするための追加の認証パラメータを渡します。これらのパラメータはディクショナリとして渡す必要があります。

    1 つ以上の key:value ペアを文字列、配列、またはマップとして使用できます。このプロパティの使用方法の例については、「使用事例:Linux 環境で API を使用してミニオンを展開する方法」を参照してください。

    注: [Salt 構成の更新] Day 2 アクションを実行する場合、追加の認証パラメータを割り当てることはできません。
  6. Salt ミニオンをホストするマシンに、remoteAccess プロパティを追加します。

    Salt ミニオンを Linux マシンに展開する場合は、authentication キーの値を usernamePassword または generatedPublicPrivateKey にすることができます。publicPrivateKey はサポートされていません。

    Salt ミニオンを Windows マシンに展開する場合は、authentication キーの値を usernamePassword. にする必要があります。

     remoteAccess:
            authentication: usernamePassword
            username: adminUser
            password: adminPassword
  7. YAML に次のサンプルのようなプロパティが含まれていることを確認します。
    resources:
      Cloud-Network:
        type: Cloud.Network
        properties:
          networkType: existing 
      Cloud_VM_1:
        type: Cloud.vSphere.Machine
        properties:
          image: ubuntu
          flavor: small
          remoteAccess:
            authentication: usernamePassword
            username: adminUser
            password: adminPassword
          networks:
            - network: ${resource["Cloud-Network"].id}
      Cloud_SaltStack_1:
        type: Cloud.SaltStack
        properties:
          masterId: saltstack_enterprise_installer
          hosts:
            - ${resource["Cloud-VM-1"].id}
          saltEnvironment: sse
          stateFiles:
            - /doe.sls
          variables: 
            user: joe
          additionalMinionParams:
            grains:
              roles:
                - webserver
                - database
  8. クラウド テンプレートをテストして展開します。
    ミニオンの展開が失敗する場合は、 ミニオンの展開のトラブルシューティングを参照してください。
  9. 展開されたマシンの Salt 構成プロパティを確認します。
    1. [展開] > [展開] の順に選択して、展開の詳細を開きます。
    2. [トポロジ] タブでマシンをクリックし、右側のペインで [Salt 構成] プロパティを展開します。

      右側のペインで [Salt 構成] プロパティが展開された [トポロジ] タブのスクリーンショット。プロパティには、マスター ID、Salt 環境、状態ファイルがあります。

SaltStack Config でのミニオンの確認

仮想マシンにミニオンをインストールしたら、ミニオンを特定し、リソースに対してジョブまたはコマンドを実行します。

手順

  1. SaltStack Config を開くには、右上隅にあるアプリケーション メニューをクリックし、[Cloud Services コンソール] をクリックします。
  2. [SaltStack Config] サービス タイルをクリックします。
  3. SaltStack Config で、[ミニオン キー] を展開し、[受け入れ済み] をクリックします。
  4. [ミニオン ID] 列で、フィルタ アイコンをクリックし、ミニオンの名前を入力します。
    デフォルトでは、ミニオンの名前は仮想マシンのホスト名になります。この例では、ミニオン ID は salt-vm-010 です。
    SaltStack Config で受け入れ済みのミニオン キーのスクリーンショット。
  5. 詳細を表示するには、ミニオンの名前をクリックします。
    ミニオンに対してジョブまたはコマンドを実行できます。たとえば、[ディスク使用率のサンプル] などです。このジョブは、ミニオンのディスク使用率の統計を返します。
    サンプル ミニオン ID の詳細画面のスクリーンショット

Salt Grain データの表示

仮想マシンへの Salt ミニオンの展開が完了したら、Cloud Assembly でミニオンの Grain を表示できます。

Salt Grain は、ミニオンのオペレーティング システム、ドメイン名、IP アドレス、カーネル、OS タイプ、メモリ、その他多くのシステム プロパティについて収集されます。SaltStack Config にアクセスできない場合、または Cloud Assembly ユーザー インターフェイスから移動しないで Grain データをすばやく表示する場合は、[トポロジ] タブを使用して Grain データを表示します。Grain データの詳細については、Salt Grainを参照してください。

ミニオン Grain を表示するには、次の手順を実行します。

  1. Cloud Assembly で、[リソース] > [展開] の順に選択し、展開を特定します。
  2. [トポロジ] タブで、SaltStack Config リソースに接続されている仮想マシンを選択します。
  3. 右側のペインで [Salt 構成] セクションを特定し、下にスクロールして Grain データのリストを表示します。Cloud Assembly の Grain データのスクリーンショット

ミニオンを展開すると、ミニオンの Grain データが取得されます。Grain データが最後に更新された日時を確認するには、[Salt 構成] セクションの一番下までスクロールします。

Cloud Assembly の最後に更新された Grain データのスクリーンショット
注: Grain データは、 SaltStack Config リソースに [Salt 構成の更新] Day 2 アクションを実行した場合のみ更新されます。 Cloud Assembly の外部で変更が行われた場合は、更新されません。