この例では、SaltStack Config を使用して構成設定をすばやく展開および管理するために状態ファイルを適用するもう 1 つの例を紹介します。この例では、3 つの異なるタスク(サービスのインストール、サービスの開始、サービスを実行しているノードへのファイルの展開)を処理する、若干複雑な状態ファイルを示します。

注意:

この実践例には環境を変更する手順が含まれているため、実行する場合は注意が必要です。本番環境ではなく、テスト環境または開発環境内のノードを使用している場合に限り、この例を試すようにしてください。

CentOS (Linux) ノードでの Apache Web サーバの構成

Apache Web サーバを構成して展開する状態ファイルを作成するには、次の手順を実行します。

  1. SaltStack Config ファイル サーバ内に新しいファイルを作成します。
    1. SaltStack Config ユーザーインターフェイスのサイド メニューで [構成] > [ファイル サーバ] をクリックします。
    2. 最初にファイル サーバ ワークスペースを開くと、ファイル ディレクトリと空の新しいファイルが表示されます。この空のファイルを使用して新しいファイルを作成します。
  2. 空の新しいファイルを使用して、新しい状態ファイル (SLS) を作成します。
    1. [Saltenv] メニューをクリックして、[base] を選択します。
    2. ラベルなしのメニューの横に、ファイルパスとファイル名を入力します。/apache/centos.sls を使用します。
    3. ファイルの本文に、次の状態ファイルのコード(YAML 構文を使用)をコピーして貼り付けます。
      install_apache:
        pkg.installed:
          - name: httpd
          
      ensure_service_running:
        service.running:
          - name: httpd
          - watch:
            - pkg: install_apache
            
      default_html_page:
        file.managed:
          - name: /var/www/html/index.html
          - source: salt://apache/index.html
      
      注:
      この状態ファイルには、3 つの異なる Salt 実行モジュールを実行する 3 つの手順が含まれています。この状態ファイルをミニオンに適用すると、 SaltStack Config は以下を実行します。
      • ミニオンに Apache (httpd) をインストールします。
      • Apache サービスを開始します。
      • ミニオンにホストされているサンプルの HTML インデックス ページを展開します。
    4. 状態ファイルを保存します。
    5. 新しいファイルがファイル サーバ ディレクトリの [base > apache > centos.sls] に表示されていることを確認します。
  3. サンプルの HTML インデックス ページをファイル サーバに追加します。
    1. ファイル サーバ ワークスペースで [作成] ボタンをクリックして、新しいファイルを追加します。
    2. ラベルなしのメニューをクリックして、[base] を選択します。
    3. ラベルなしのメニューの横に、このファイルのファイルパスとファイル名を入力します。/apache/index.html を使用します。
    4. ファイルの本文に、次の HTML コードをコピーして貼り付けます。
      <html>
      <head><title>SaltStack Config Example></title></head>
      <body>
      <h1>SaltStack Config Example</h1>
      
      Hello, world!
      
      </body>
      
    5. HTML ファイルを保存します。
    6. 新しいファイルがファイル サーバ ディレクトリの [base > apache > index.html] に表示されていることを確認します。
  4. 新しいジョブを作成します。
    1. サイド メニューで [設定] > [ジョブ] の順にクリックして、ジョブ ワークスペースを開きます。
    2. [ジョブの作成] ボタンをクリックします。
      注:

      [ジョブの作成] ボタンが表示されない場合は、新しいジョブを作成する権限がありません。チュートリアルを完了するために、ユーザーに代わってこのジョブにアクセスする方法、またはこのジョブを作成する方法については、vRealize Automation の管理者に確認してください。

  5. [新規ジョブ] 画面で新しいジョブの詳細を入力し、ジョブを保存します。
    フィールド サンプル値

    [名前]

    このジョブに「Apache Web サーバの構成」などのわかりやすい名前を付けます。

    [説明]

    「ターゲットとなる CentOS ノードに Apache Web サーバを構成して、サンプルの HTML インデックス ページと一緒に展開する」など、このジョブの目的を他のユーザーに伝える説明を追加します。

    [コマンド]

    [salt] を選択します。

    salt コマンドは、ミニオンに対して実行されるジョブで使用されます。

    [ターゲット]

    このメニューからは何も選択しないでください。このフィールドを空白のままにすると、ジョブの実行時にターゲットを選択できます。

    [関数]

    このフィールドをクリックして、「state.apply」と入力すると、このモジュールを選択できるようになります。

    このフィールドでは、このジョブの実行時に適用される Salt モジュールを選択します。

    [環境]

    メニューから base を選択します。

    [状態]

    apache.centos メニューから新しく作成した状態ファイルを選択します。

    [引数]

    このモジュールでは引数を使用できないため、空白のままにします。

  6. ジョブが作成されたので、ジョブのターゲットを選択してジョブを実行します。
    1. サイド メニューで [ミニオン] をクリックしてミニオン ワークスペースを開き、ターゲットを表示します。
    2. [すべてのミニオン] テーブルで、このジョブのターゲットにする CentOS ミニオンを見つけます。このミニオンの横にあるチェックボックスをオンにして、[ジョブの実行] ボタンをクリックします。
    3. [ジョブの実行] ダイアログ ボックスで [ジョブ] メニューをクリックし、前の手順で作成した「Apache Web サーバの構成」ジョブを選択します。必要に応じて、ジョブの名前を入力してジョブをフィルタリングできます。
    4. [今すぐ実行] をクリックします。

      ジョブが正常に実行された場合は、ジョブが正常に開始されたことを示す通知が表示されます。

  7. サイド メニューで [アクティビティ] > [完了] をクリックして、ジョブが完了しているかどうかを確認します。

    このテーブルにジョブが表示されない場合は、まだ処理中である可能性があります。現在実行中のジョブを確認するには、[アクティビティ] > [処理中] をクリックします。ジョブがテーブルに表示されるまで、[アクティビティ] > [完了] を継続的に更新します。

  8. ジョブが完了したら、新しく構成した web サーバにインデックス ページがホストされていることを確認します。
    1. Web ブラウザで、ジョブ内でターゲットに設定した CentOS ミニオンの IP アドレスに移動します。SaltStack Config でミニオンの IP アドレスを見つけるには、そのミニオンの IP アドレス列の下にあるミニオン ワークスペースを確認します。
    2. この IP アドレスを入力すると、サンプルの HTML インデックス ページが表示されます。

結果と主な情報の概要

ジョブの結果とインデックス ページを確認する場合は、次の点を考慮してください。

  • 状態ファイルは、任意の規模でシステム構成をすばやく設定および更新するとともに、infrastructure-as-code アプローチで構成ドリフトを防止するための方法です。
  • SaltStack Config を使用すると、変数などの複雑な要素を組み込むことができる状態ファイルを作成できます。変数とは、状態ファイルをシステムに適用するときに状態ファイルに渡される条件や情報に応じて変化する値のことです。
  • また、プライベート バンクからパスワードを取得できる状態ファイル(SaltStack Config では「ピラー」と呼ばれる)を作成して、認証情報の安全性を維持するとともに、認証されたチーム メンバーに、アクセスが許可されたリソースでジョブを実行する権限を与えることもできます。