第10章 イベントに応じたタスクの自動化
XClarity Administrator によって管理されるサーバーに特定のイベントが生じた際に、CloudForms の Lenovo 物理インフラストラクチャープロバイダーを通じて、特定のタスクを自動的に実行することができます。自動化タスクを作成するには、カスタムドメインを作成して設定する必要があります。特定のイベントが生じた際にタスクを自動的に呼び出すには、カスタムポリシーを作成、設定、および割り当てる必要があります。
CloudForms の自動化機能の詳細については、『Scripting Actions in CloudForms』を参照してください。
10.1. 自動化タスクの作成
自動化タスクを作成するには、まずカスタムドメインを作成して設定する必要があります。
ドメイン に、自動的に実行することのできるタスクを収めます。タスクは、ドメインプライオリティーで定義される順に実行されます。優先順位の高いドメインのタスクは、優先順位の低いドメインの同一タスクに優先します。CloudForms にはコアドメインが用意され、さらに専用のカスタムドメインを使用して自動化タスクをオーバーライドすることができます。
それぞれのドメインには、名前空間のセットが含まれます。名前空間 はタスクを整理して分類するコンテナーです。名前空間には、子名前空間およびクラスを含めることができます。
クラス は特定のタスクに対するテンプレートです。クラスはスキーマを使用して、デフォルト値のクラスインスタンスを設定します。クラスインスタンスには、属性、メソッドの呼び出し、およびリレーションシップを含めることができます。
メソッド で実行するタスクを定義します。さまざまな操作を実行するのに、Ruby コードが使用されます。
以下の例で、自動化タスクを作成する方法を説明します。ここでは、Lenovo 物理インフラストラクチャープロバイダーによって最初に検出される物理サーバーに対して、電源操作 (電源オン、オフ、またはサーバーの再起動など) を実施します。
メモ: ドメインを作成する権限が与えられたユーザーとして CloudForms にログインしている必要があります。デフォルトのユーザーは admin で、パスワードは smartvm です。
10.1.1. ステップ 1: カスタムドメインを作成する
- 自動化 > 自動化 > エクスプローラー の順に移動します。
- トップメニューで 構成 > 新規ドメインの追加 の順にクリックします。
- ドメイン名を入力します (例: Lenovo)。
- 有効化 を選択してドメインを有効にします。
- 追加 をクリックします。
10.1.2. ステップ 2: カスタムドメインに LenovoXclarity および Event Handler クラスを追加する
LenovoXclarity クラスをカスタムドメインにコピーします。
- ManageIQ コアドメインを選択します。
- ManageIQ > System > Event > EmsEvent > LenovoXclarity の順に移動します。
- トップメニューで 構成 > このクラスのコピー の順にクリックします。
- コピー先ドメイン ドロップダウンメニューからカスタムドメインを選択します。
- コピー をクリックします。
Event Handler クラスをカスタムドメインにコピーします。
- ManageIQ コアドメインを選択します。
- ManageIQ > System > Event Handlers の順に移動します。
- 希望するインスタンスを選択します (例: event_action_policy)。
- トップメニューで 構成 > このインスタンスのコピー の順にクリックします。
- コピー先ドメイン ドロップダウンメニューからカスタムドメインを選択します。
- コピー をクリックします。
- event_action_policy メソッドを選択します。
- 構成 アイコンをクリックし、続いて このメソッドのコピー アイコンをクリックします。
- コピー をクリックします。
LenovoXclarity クラスの新規インスタンスを作成します。
- ManageIQ コアドメインを選択します。
- カスタムドメインの名前に移動し (例: Lenovo)、System > Event > EmsEvent > LenovoXclarity の順にクリックします。
- トップメニューで 構成 > 新規インスタンスの追加 の順にクリックします。
新規クラスインスタンスの名前を入力します (たとえば FQXHMTS0003G: デバイスからインベントリーデータを取得できない時に生成されるイベント)。
重要: クラスインスタンス名は、呼び出されるタスクのトリガーとなるイベント名と一致している必要があります。CloudForms では、この名前を使ってクラスインスタンスとイベントを照合します。イベント名を知るには、XClarity Administrator オンラインドキュメントの「イベントとアラートのメッセージ」を参照してください。
コピーしたイベントハンドラーへのパスを、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¶m=
policy_event の値は、適用されるポリシー操作と一致します。
- 追加 をクリックします。
10.1.3. ステップ 3: 名前空間を作成する
- カスタムドメインを選択します (Lenovo)。
- トップメニューで 構成 > 新規名前空間の追加 の順にクリックします。
- 名前空間の固有の名前を入力します (例: Functions)。
- 追加 をクリックします。
10.1.4. ステップ 4: クラスを作成する
- 前のステップで作成した名前空間を選択します (例: Functions)。
- トップメニューで 構成 > 新規クラスの追加 の順にクリックします。
- クラスの固有の名前を入力します (例: Power_actions)。
- 追加 をクリックします。
10.1.5. ステップ 5: クラスのメソッドを作成する
メソッドを作成します。
- 作成したクラスを選択します (例: Power_actions)。
- メソッド タブをクリックします。
- トップメニューで 構成 > 新規メソッドの追加 の順にクリックします。
- タイプ に「inline」を選択します。
- メソッドの名前を入力します (例: power_off)。
データ フィールドに以下のスクリプトを入力します。
server = $evm.vmdb('PhysicalServer').first $evm.log(:info, "Powering Server #{server.name} OFF") server.power_off exit MIQ_OK
- 検証 をクリックして構文を確認します。
- 追加 をクリックします。
クラスにスキーマを追加します。
- 作成したクラスを選択します (例: Power_actions)。
- スキーマ タブを選択します。
- トップメニューで 構成 > 選択したスキーマの編集 の順にクリックします。
- +アイコンをクリックしてスキーマにフィールドを追加します。
- 名前 に「execute」と入力します。
- タイプ に「Method」を選択します。
- データタイプ に「String」を選択します。
- デフォルト値 に「Power_actions」と入力します。
- チェックマークアイコンをクリックします。
- 保存 をクリックします。
クラスにメソッドを追加します。
- インスタンス タブを選択します。
- 前のステップで作成したメソッドの名前を入力します (例: power_off)。
- 追加 をクリックします。
10.2. イベント発生時の自動化タスク呼び出し
特定のイベントが生じた際にタスクを自動的に呼び出すには、カスタムポリシーを作成、設定、および割り当てる必要があります。
以下の例で、(定義した) 特定のイベントを CloudForms が受け取った時に、特定の自動化タスクを実行する方法を説明します。
メモ: ポリシーを作成する権限が与えられたユーザーとして CloudForms にログインしている必要があります。デフォルトのユーザーは admin で、パスワードは smartvm です。
10.2.1. ステップ 1: ポリシーを作成して設定する
- コントロール > エクスプローラー の順に移動します。
- ポリシー > すべてのポリシー > コントロールポリシー > 物理インフラストラクチャーのコントロールポリシー の順にクリックします。
- トップメニューで 構成 > 新規物理サーバーコントロールポリシーの追加 の順にクリックします。
- 説明を入力します (例: Lenovo_Policy)。
- 追加 をクリックします。
10.2.2. ステップ 2: カスタムアクションを作成する
カスタムアクションを作成します。
- アクション > すべてのアクション の順に移動します。
- トップメニューで 構成 > 新規アクションの追加 の順にクリックします。
- 説明を入力します (例: Power_Off_Server)。
- アクションタイプ に Invoke a custom Automation を選択します。
- メッセージを入力します (例: create)。
- 要求 フィールドに Call_Instance と入力します。
以下に示す順番どおりにそれぞれの属性を指定します。
- Namespace 属性を指定し、値を新しいドメインおよび名前空間に設定します (<domain_name>/<namespace>) (例: Lenovo/Functions)。
- Class 属性を指定し、値をクラスに設定します (例: Power_actions)。
- Instance 属性を指定し、値をインスタンスに設定します (例: Physical_Server_PowerOff)。
- 追加 をクリックします。
作成したポリシーを設定します。
- 新しいポリシーを選択します (例: Lenovo_Policy)。
- トップメニューで 構成 > このポリシーのイベント割り当ての編集 の順にクリックします。
- Physical Server operation を探し、Physical Server Shutdown オプションを選択します。
- 保存 をクリックします。
- 新しいポリシーイベントを選択します。
- トップメニューで 構成 > このポリシーイベントのアクションの編集 の順にクリックします。
- すべての条件が「true」である場合のアクションの順序 フィールドから、前のステップで作成したカスタムアクションを選択します (例: Power_Off_Server)。
- 保存 をクリックします。
10.2.3. ステップ 3: ポリシープロファイルを作成して割り当てる
ポリシープロファイルを作成します。
- ポリシープロファイル > すべてのポリシープロファイル の順にクリックします。
- トップメニューで 構成 > 新規ポリシープロファイルの追加 の順にクリックします。
- ポリシーの説明を入力します (例: Lenovo_Policy_Profile)。
- 作成したポリシーを選択して右側に移動します。
- 追加 をクリックします。
ポリシープロファイルを Lenovo 物理インフラストラクチャープロバイダーに割り当てます。
- コンピュート > 物理インフラストラクチャー > プロバイダー の順に移動します。
- ポリシープロファイルを割り当てる物理インフラストラクチャープロバイダーを選択します。
- トップメニューで ポリシー > ポリシーの管理 の順にクリックします。
- 前の手順で作成したポリシープロファイルを選択します (例: Lenovo_Policy_Profile)。
- 保存 をクリックします。