システム管理者は、SaltStack Config でジョブを作成することでリモート実行タスクの実行、状態の適用、Salt ランナーの開始などが可能になります。ジョブは一般的に、自動化して複数回実行する必要があるシステム操作を対象としています。

開始する前に

SaltStack Config のジョブには通常、Salt オープン ソース コミュニティで開発された実行モジュールまたは状態モジュールのいずれかが組み込まれています。そのため、最初に Salt システムに関するいくつかの基本概念、および利用可能な実行モジュールと状態モジュールを使用して一般的な管理タスクを実行する方法について理解する必要があります。

詳細 参照先

Salt の操作の基本

Salt 状態

Salt の実行モジュールおよび状態モジュール

  • すべてのモジュールのリストについては、Salt モジュール インデックスを参照してください。
  • 特定のニーズを解決するのに最適なモジュールを決定するためのサポートが必要な場合や、特定のモジュールの使用について不明な点がある場合は、SaltStack Community Slack ワークスペースでコミュニティによるサポートを依頼することができます。

ジョブの作成

新しいジョブを作成するには、次の手順に従います。

  1. 目的の結果を達成するのに役立つ Salt 実行モジュールまたは状態モジュールを調べます。ニーズに合った Salt モジュールを見つけたら、モジュールのドキュメントを参照し、モジュールのパラメータやその他の要件について理解します。
  2. ジョブで Salt 状態モジュールを使用する場合は、SaltStack Config ファイル サーバに新しい状態ファイルを作成します。詳細については、状態ファイルとピラー データの作成方法を参照してください。
  3. 新しいジョブを作成します。
    1. サイド メニューの [構成] > [ジョブ] をクリックして、[ジョブ] ワークスペースを開きます。
    2. [ジョブの作成] ボタンをクリックします。
      注:

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

    3. 新しいジョブの詳細を入力します。
      フィールド

      [名前]

      ジョブの目的またはジョブで実行する作業を簡潔に示すわかりやすい名前をジョブに付けます。たとえば、「Windows ファイアウォール設定」という名前を付けます。

      [説明]

      「ファイアウォールで Windows ノードのポート 445 を開く」など、このジョブの目的を他のユーザーに伝える説明を追加します。

      [コマンド]

      • ミニオンに対してジョブを実行する場合は、[salt] を選択します。
      • Salt マスターに対してジョブを実行する場合は、[salt-run] を選択します。salt-run ジョブは Salt ランナーとも呼ばれます。Salt ランナーは、Salt マスターで便利な関数を実行するために使用されるモジュールです。Salt ランナーを使用すると、オーケストレーションの実行、リモートからのミニオンのパワーオン、Webhook の呼び出しなどが可能になります。これらは、タスクを一元的に実行したり、中心となる開始点から実行したりする場合に役立ちます。たとえば、特定の Salt マスターに関連付けられているすべてのミニオンに highstate を適用できます。

      多くのジョブはミニオンに対して実行されるため、選択するオプションが不明な場合は、[salt] を使用します。

      注:このコマンドを変更すると、選択可能な機能のリストが新規に表示されます。

      [ターゲット]

      オプション:ターゲットは 1 つ以上の Salt マスター上に構成されるミニオンのグループで、これに対してジョブの Salt コマンドが適用されます。[ターゲット] ワークスペースにジョブのターゲットを作成することができます。詳細については、ターゲットの作成方法を参照してください。

      ジョブの実行時にターゲットを選択する場合は、このメニューで何も選択しないでください。このフィールドを空白のままにすると、ジョブの実行時にターゲットを選択できます。ただし、ジョブのターゲットを定義すると、実行対象外のノードでジョブが実行されるのを防ぐこともできます。

      [関数]

      このジョブの実行時に実行する Salt モジュールを選択します。このフィールドをクリックして、選択する Salt モジュールの名前の入力を開始するか、メニューから選択します。使用するモジュールがドロップダウンに含まれていない場合は、独自の値を入力することもできます。

      このジョブの目的が、ミニオンに Salt 状態ファイルを適用することである場合は、state.apply モジュールを使用します。詳細については、state.applyを参照してください。

      Salt モジュールの完全なリストについては、Salt モジュール インデックスを参照してください。最も一般的に使用されているモジュールの一部を示す表については、一般的なジョブの例を参照してください。

      [引数]

      [引数] フィールドを使用して、argskwargs を Salt モジュールに渡すことができます。

      [引数] フィールドの各行は、1 つの引数を表します。たとえば、file.copy モジュールを使用している場合は、path/to/src/path/to/dst をモジュールに渡すことができます。

      キーワード引数を使用することもできます。たとえば、src=path/to/src/dst=path/to/dst/file.copy モジュールに渡すことができます。

      Salt モジュールの完全なリストについては、Salt モジュール インデックスを参照してください。

      [環境]

      このフィールドは、state.applystate.highstate などの選択した関数に適用可能な場合にのみ使用できます。

      メニューから目的の Salt 環境を選択します。リストに表示されない場合は入力します。たとえば、基本環境の状態ファイルを適用する場合は、メニューから base を選択します。

      [状態]

      このフィールドは、state.apply などの選択した関数に適用可能な場合にのみ使用できます。

      メニューから適用する状態ファイルを選択します。リストに表示されない場合は入力します。

      [ピラーのオーバーライド]

      このフィールドは、state.apply などの選択した関数に適用可能な場合にのみ使用できます。ピラー データを JSON 形式で受け入れます。ピラー データはジョブ定義に保存され、実行時にモジュール関数に渡されます。

      SaltStack Config[ピラーのオーバーライド] を使用することは、CLI を介してカスタム キラー値を送信することと同様です。この方法で渡された値は、pillar_roots または外部ピラー ソースを使用して設定された既存のピラー値をオーバーライドします。kwarg に含まれていないピラー値は上書きされません。

      ピラー データの詳細については、状態ファイルとピラー データの作成方法を参照してください。

      ジョブのスクリーンショット(すべてのフィールドが SaltStack Config で入力されている)
    4. オプション:テスト ジョブを実行し、仮想的なジョブの戻り値を生成するには、[テストとして実行 (ドライ ラン)] オプションをオンにします。テスト(ドライ ラン)は、state.apply などの特定の関数でのみ使用できます。[テスト] を選択した場合、ジョブはドライ ラン モードで実行され、変更は発生しません。このオプションが選択されていない場合は、後でジョブを実行する際にテストとして実行することもできます。
    5. オプション:ジョブに [ジョブ入力] を追加します。詳細については、ジョブ入力の追加を参照してください。
  4. ジョブを保存し、ジョブ ワークスペースにジョブが表示されることを確認します。

ジョブ入力の追加

システム管理者はジョブ入力を使用して、実行時に他のユーザーが変更できる引数または変数を構成することができます。さまざまなユースケースに対して複数のジョブを作成する代わりに、汎用ジョブを作成し、その後にユーザー用のオプションのジョブ入力および必須のジョブ入力を定義することができます。これらの汎用ジョブは、受信するジョブ作成要求の量を低減するのに役立ちます。

ジョブ入力を使用すると、ジョブ実行時に他の管理者が関数に渡すことができる引数または変数のタイプにアクセス先を制限することができます。また、他の管理者の責任範囲内のタスクについては、必要なタスクの実行を許可することもできます。このように、ジョブ入力を明確に定義することにより、組織はセキュリティに関する標準的ベスト プラクティス(権限の最小化の原則など)に確実に従うことができます。

開始する前に

[ユーザーが編集する必要があるジョブ入力の検討]

ジョブ入力を定義する前に、実行時にユーザーが表示および編集するジョブ入力について検討することが重要です。他のユーザーがこのジョブを実行する可能性があること、およびジョブ入力の設定方法に応じて、ジョブ入力の表示方法が変わることに注意してください。これらのユーザーが実行時に表示および編集するジョブ入力について、時間をかけて検討してください。

たとえば、サーバの目的またはロールに基づいて設定をサーバに適用するジョブを作成する場合を考えます。状態ファイル内の設定を適用する汎用ジョブを作成し、その後にジョブ入力を作成して、管理者が、適用される状態ファイルをドロップダウン メニューのリストから選択できるようにすることができます。ユーザーがジョブを実行すると、定義した使用可能な状態ファイルのリストのみを含むドロップダウン メニューが表示されます。

このようにジョブ入力を設定することで、システム管理者はジョブの実行時に他の管理者が表示および変更できる内容をより詳細に制御することができます。また、柔軟性を高めると一方で、他のユーザーが自分の責任範囲内または権限レベル内で許可されているジョブのみを変更できるように制限することもできます。

ジョブ入力を定義するには、次の手順を実行します。
  1. サイド メニューの [構成] > [ジョブ] をクリックして、[ジョブ] ワークスペースを開きます。
  2. ジョブを選択して、そのジョブの詳細を開きます。
  3. 下にスクロールして、ジョブの詳細ページの [ジョブ入力] セクションを表示します。ジョブ入力リストのスクリーンショット
  4. [ジョブ入力の追加] ボタンをクリックします。
  5. ジョブ入力の詳細を入力します。
    フィールド
    [表示名]

    ジョブ入力の名前を設定します。

    実行時にユーザーにこのジョブ入力が表示される場合、入力の機能と目的を示す最も重要なインジケータは、[表示名] に入力したテキストになります。

    「再起動するサービス」など、簡潔かつ正確でわかりやすい名前を選択してください。

    [入力タイプ]

    ジョブ入力のタイプを設定します。入力タイプには、文字列、数値、ブール値、選択の 4 つがあります。

    • ユーザーに値の指定を求める場合は、[文字列] 入力タイプを使用します。
    • ユーザーに数量またはサイズの指定を求める場合は、[数値] を使用します。
    • true または false のいずれかを選択する場合は、[ブール値] を使用します。
    • ユーザーに値のリストからの選択を求める場合は、[選択] を使用します。[選択] リストの値は、文字列、数値、またはブール値にすることができます。たとえば、「再起動するサービス」ジョブ入力の入力タイプに、文字列で構成された [選択] リストを指定することができます。たとえば、httpdsshdmysqld を指定することができます。

    入力タイプを選択する前に、Salt モジュール インデックスを参照してください。入力タイプは、ジョブが使用する Salt モジュールと、入力タイプによって Salt モジュールに対応付けられるパラメータによって決まります。適切でない入力タイプを選択すると、ジョブは失敗します。

    [ジョブ実行時に表示]

    ジョブの実行時にユーザーが値を表示および編集できるようにします。

    この設定を切り替えると、[ジョブ入力の編集] ウィンドウに [ヘルプ テキスト] フィールドが表示されます。

    簡潔で正確な [表示名] の適用が難しい場合は、[ヘルプ テキスト] フィールドを使用して、ジョブ入力に関する追加情報を指定します。たとえば、ユーザーによる値の入力が必要な状況について記述できます。

    このヘルプ テキストは、ユーザーがジョブを実行するときに、ジョブ入力の名前の横にあるヘルプ ツールチップ (?) の下に表示されます。

    [キーワード]

    実行中のモジュール関数に渡されるパラメータまたは引数を指定します。モジュール関数の詳細については、Salt モジュール インデックスを参照してください。

    注:ジョブ入力は、キーワード以外の位置引数をサポートしていません。これらはジョブの [引数] の下で指定できますが、ジョブの実行時に指定することはできません。

    [デフォルト値/値]

    [ジョブ実行時に表示] が有効になっている場合は、オプションの [デフォルト値] フィールドを使用してジョブ入力のデフォルト値を指定することができます。ユーザーは、デフォルト値をモジュール関数に渡すことも、実行時にデフォルト値を変更することもできます。

    ユーザーにデフォルト値を指定することが役立つかどうかを検討してください。デフォルト値を指定すると、ユーザーがジョブを実行するときに時間を節約できますが、デフォルト値が不要な場合もあります。たとえば、「データセンター」というジョブ入力では、デフォルト値が変化するため必要ない場合があります。

    [ジョブ実行時に表示] が無効な場合は、[値] フィールドを使用してデフォルト値をモジュール関数に渡すことができます。ユーザーが値を表示または編集することはできません。

    [ジョブ入力時に必須]

    [ジョブの実行時に表示] が有効になっている場合は、ユーザーにジョブ入力の値の指定を要求できます。

    ユーザーに値の指定を要求することが役立つかどうかを検討してください。ジョブを設計するときは、ユーザーが値を指定しなかった場合にどのような状況になるのかを考えます。値を指定しないとジョブが失敗する可能性がある場合は、実行時に入力を要求します。値を指定しなくてもジョブを正常に実行できる場合は、値を省略できます。

    可能であれば、[ヘルプ テキスト] フィールドを使用して、ユーザーがジョブ入力の機能を理解できるようにサポートします。

  6. ジョブ入力を保存し、ジョブ詳細ページのジョブ入力のリストに表示されることを確認します。
    注:

    使用しているモジュール関数によっては、[環境][状態][テスト] などの他のフィールドがジョブ入力のリストに表示される場合があります。実行時にこれらの入力をユーザーに表示する場合は、キーワードの横にある鉛筆アイコンをクリックしてジョブ入力を編集し、[ジョブの実行時に表示] を切り替えます。

  7. ジョブを保存します。
  8. ジョブ入力が予期したとおりに機能することを検証するには、SaltStack Config にログインするときに、権限レベルが低いジョブを実行できるユーザーとしてログインするか、低いアクセス権限を持つロールを使用してログインします。

    ジョブ入力が表示されない場合、ジョブが失敗する場合、またはジョブ入力に追加の引数または説明が必要な場合は、ジョブに必要な調整を行ってから、ユーザーにジョブの実行を許可します。

次の手順

ジョブを作成したことで、ジョブのアドホックでの実行や、通常のスケジュールでの実行が可能になりました。詳細については、以下を参照してください。