第10章 イベントに応じたタスクの自動化

XClarity Administrator によって管理されるサーバーに特定のイベントが生じた際に、CloudForms の Lenovo 物理インフラストラクチャープロバイダーを通じて、特定のタスクを自動的に実行することができます。自動化タスクを作成するには、カスタムドメインを作成して設定する必要があります。特定のイベントが生じた際にタスクを自動的に呼び出すには、カスタムポリシーを作成、設定、および割り当てる必要があります。

CloudForms の自動化機能の詳細については、『Scripting Actions in CloudForms』を参照してください。

10.1. 自動化タスクの作成

自動化タスクを作成するには、まずカスタムドメインを作成して設定する必要があります。

ドメイン に、自動的に実行することのできるタスクを収めます。タスクは、ドメインプライオリティーで定義される順に実行されます。優先順位の高いドメインのタスクは、優先順位の低いドメインの同一タスクに優先します。CloudForms にはコアドメインが用意され、さらに専用のカスタムドメインを使用して自動化タスクをオーバーライドすることができます。

それぞれのドメインには、名前空間のセットが含まれます。名前空間 はタスクを整理して分類するコンテナーです。名前空間には、子名前空間およびクラスを含めることができます。

クラス は特定のタスクに対するテンプレートです。クラスはスキーマを使用して、デフォルト値のクラスインスタンスを設定します。クラスインスタンスには、属性、メソッドの呼び出し、およびリレーションシップを含めることができます。

メソッド で実行するタスクを定義します。さまざまな操作を実行するのに、Ruby コードが使用されます。

以下の例で、自動化タスクを作成する方法を説明します。ここでは、Lenovo 物理インフラストラクチャープロバイダーによって最初に検出される物理サーバーに対して、電源操作 (電源オン、オフ、またはサーバーの再起動など) を実施します。

メモ: ドメインを作成する権限が与えられたユーザーとして CloudForms にログインしている必要があります。デフォルトのユーザーは admin で、パスワードは smartvm です。

10.1.1. ステップ 1: カスタムドメインを作成する

  1. 自動化 > 自動化 > エクスプローラー の順に移動します。
  2. トップメニューで 構成 > 新規ドメインの追加 の順にクリックします。
  3. ドメイン名を入力します (例: Lenovo)。
  4. 有効化 を選択してドメインを有効にします。
  5. 追加 をクリックします。

10.1.2. ステップ 2: カスタムドメインに LenovoXclarity および Event Handler クラスを追加する

  1. LenovoXclarity クラスをカスタムドメインにコピーします。

    1. ManageIQ コアドメインを選択します。
    2. ManageIQ > System > Event > EmsEvent > LenovoXclarity の順に移動します。
    3. トップメニューで 構成 > このクラスのコピー の順にクリックします。
    4. コピー先ドメイン ドロップダウンメニューからカスタムドメインを選択します。
    5. コピー をクリックします。
  2. Event Handler クラスをカスタムドメインにコピーします。

    1. ManageIQ コアドメインを選択します。
    2. ManageIQ > System > Event Handlers の順に移動します。
    3. 希望するインスタンスを選択します (例: event_action_policy)。
    4. トップメニューで 構成 > このインスタンスのコピー の順にクリックします。
    5. コピー先ドメイン ドロップダウンメニューからカスタムドメインを選択します。
    6. コピー をクリックします。
    7. event_action_policy メソッドを選択します。
    8. 構成 アイコンをクリックし、続いて このメソッドのコピー アイコンをクリックします。
    9. コピー をクリックします。
  3. LenovoXclarity クラスの新規インスタンスを作成します。

    1. ManageIQ コアドメインを選択します。
    2. カスタムドメインの名前に移動し (例: Lenovo)、System > Event > EmsEvent > LenovoXclarity の順にクリックします。
    3. トップメニューで 構成 > 新規インスタンスの追加 の順にクリックします。
    4. 新規クラスインスタンスの名前を入力します (たとえば FQXHMTS0003G: デバイスからインベントリーデータを取得できない時に生成されるイベント)。

      重要: クラスインスタンス名は、呼び出されるタスクのトリガーとなるイベント名と一致している必要があります。CloudForms では、この名前を使ってクラスインスタンスとイベントを照合します。イベント名を知るには、XClarity Administrator オンラインドキュメントの「イベントとアラートのメッセージ」を参照してください。

    5. コピーしたイベントハンドラーへのパスを、rel3 のフィールドに追加します。

      以下に示す 3 つのポリシー操作が利用可能です。

      • Physical Server Reset
      • Physical Server Start
      • Physical Server Shutdown

        以下に示す 3 つのポリシーイベントが利用可能です。

      • physical_server_reset
      • physical_server_start
      • physical_server_shutdown

        ポリシー操作とポリシーイベントは一致している必要があります。たとえば、ポリシー操作 Physical Server Shutdown には、以下のパスを使用します。

        /System/event_handlers/event_action_policy?target=physical_server&policy_event=physical_server_shutdown&param=

      policy_event の値は、適用されるポリシー操作と一致します。

    6. 追加 をクリックします。

10.1.3. ステップ 3: 名前空間を作成する

  1. カスタムドメインを選択します (Lenovo)。
  2. トップメニューで 構成 > 新規名前空間の追加 の順にクリックします。
  3. 名前空間の固有の名前を入力します (例: Functions)。
  4. 追加 をクリックします。

10.1.4. ステップ 4: クラスを作成する

  1. 前のステップで作成した名前空間を選択します (例: Functions)。
  2. トップメニューで 構成 > 新規クラスの追加 の順にクリックします。
  3. クラスの固有の名前を入力します (例: Power_actions)。
  4. 追加 をクリックします。

10.1.5. ステップ 5: クラスのメソッドを作成する

  1. メソッドを作成します。

    1. 作成したクラスを選択します (例: Power_actions)。
    2. メソッド タブをクリックします。
    3. トップメニューで 構成 > 新規メソッドの追加 の順にクリックします。
    4. タイプ に「inline」を選択します。
    5. メソッドの名前を入力します (例: power_off)。
    6. データ フィールドに以下のスクリプトを入力します。

      server = $evm.vmdb('PhysicalServer').first
      $evm.log(:info, "Powering Server #{server.name} OFF")
      server.power_off
      exit MIQ_OK
    7. 検証 をクリックして構文を確認します。
    8. 追加 をクリックします。
  2. クラスにスキーマを追加します。

    1. 作成したクラスを選択します (例: Power_actions)。
    2. スキーマ タブを選択します。
    3. トップメニューで 構成 > 選択したスキーマの編集 の順にクリックします。
    4. +アイコンをクリックしてスキーマにフィールドを追加します。
    5. 名前 に「execute」と入力します。
    6. タイプ に「Method」を選択します。
    7. データタイプ に「String」を選択します。
    8. デフォルト値 に「Power_actions」と入力します。
    9. チェックマークアイコンをクリックします。
    10. 保存 をクリックします。
  3. クラスにメソッドを追加します。

    1. インスタンス タブを選択します。
    2. 前のステップで作成したメソッドの名前を入力します (例: power_off)。
    3. 追加 をクリックします。

10.2. イベント発生時の自動化タスク呼び出し

特定のイベントが生じた際にタスクを自動的に呼び出すには、カスタムポリシーを作成、設定、および割り当てる必要があります。

以下の例で、(定義した) 特定のイベントを CloudForms が受け取った時に、特定の自動化タスクを実行する方法を説明します。

メモ: ポリシーを作成する権限が与えられたユーザーとして CloudForms にログインしている必要があります。デフォルトのユーザーは admin で、パスワードは smartvm です。

10.2.1. ステップ 1: ポリシーを作成して設定する

  1. コントロール > エクスプローラー の順に移動します。
  2. ポリシー > すべてのポリシー > コントロールポリシー > 物理インフラストラクチャーのコントロールポリシー の順にクリックします。
  3. トップメニューで 構成 > 新規物理サーバーコントロールポリシーの追加 の順にクリックします。
  4. 説明を入力します (例: Lenovo_Policy)。
  5. 追加 をクリックします。

10.2.2. ステップ 2: カスタムアクションを作成する

  1. カスタムアクションを作成します。

    1. アクション > すべてのアクション の順に移動します。
    2. トップメニューで 構成 > 新規アクションの追加 の順にクリックします。
    3. 説明を入力します (例: Power_Off_Server)。
    4. アクションタイプ に Invoke a custom Automation を選択します。
    5. メッセージを入力します (例: create)。
    6. 要求 フィールドに Call_Instance と入力します。
    7. 以下に示す順番どおりにそれぞれの属性を指定します。

      • Namespace 属性を指定し、値を新しいドメインおよび名前空間に設定します (<domain_name>/<namespace>) (例: Lenovo/Functions)。
      • Class 属性を指定し、値をクラスに設定します (例: Power_actions)。
      • Instance 属性を指定し、値をインスタンスに設定します (例: Physical_Server_PowerOff)。
    8. 追加 をクリックします。
  2. 作成したポリシーを設定します。

    1. 新しいポリシーを選択します (例: Lenovo_Policy)。
    2. トップメニューで 構成 > このポリシーのイベント割り当ての編集 の順にクリックします。
    3. Physical Server operation を探し、Physical Server Shutdown オプションを選択します。
    4. 保存 をクリックします。
    5. 新しいポリシーイベントを選択します。
    6. トップメニューで 構成 > このポリシーイベントのアクションの編集 の順にクリックします。
    7. すべての条件が「true」である場合のアクションの順序 フィールドから、前のステップで作成したカスタムアクションを選択します (例: Power_Off_Server)。
    8. 保存 をクリックします。

10.2.3. ステップ 3: ポリシープロファイルを作成して割り当てる

  1. ポリシープロファイルを作成します。

    1. ポリシープロファイル > すべてのポリシープロファイル の順にクリックします。
    2. トップメニューで 構成 > 新規ポリシープロファイルの追加 の順にクリックします。
    3. ポリシーの説明を入力します (例: Lenovo_Policy_Profile)。
    4. 作成したポリシーを選択して右側に移動します。
    5. 追加 をクリックします。
  2. ポリシープロファイルを Lenovo 物理インフラストラクチャープロバイダーに割り当てます。

    1. コンピュート > 物理インフラストラクチャー > プロバイダー の順に移動します。
    2. ポリシープロファイルを割り当てる物理インフラストラクチャープロバイダーを選択します。
    3. トップメニューで ポリシー > ポリシーの管理 の順にクリックします。
    4. 前の手順で作成したポリシープロファイルを選択します (例: Lenovo_Policy_Profile)。
    5. 保存 をクリックします。

provider assign profile