第 7 章 基于事件自动化任务
在 CloudForms 中设置 Lenovo 物理基础架构供应商后,就可以当 Lenovo XClarity Administrator 所管理的服务器上发生特定事件时,自动执行特定的任务。若要创建自动化任务,您必须创建和配置自定义域。若要在特定事件发生时自动调用任务,您必须创建、配置和分配自定义策略。
如需关于 CloudForms 自动化功能的更多信息,请参见 CloudForms 脚本操作指南网站。
7.1. 创建自动化任务
若要创建自动化任务,您必须创建和配置自定义域。
域是一系列可以自动化的任务。这些任务按照域优先级定义的次序运行。高优先级域中的任务会覆盖低优先级域中的相同任务。这样,CloudForms 可以提供核心域,同时允许您利用自己的自定义域来覆盖自动化任务。
每个域包含一组命名空间。命名空间是用于组织任务并对任务进行分类的容器。命名空间内可以包含子命名空间和类。
类是用于特定任务的模板。类使用模式为类实例填充默认值。类实例中可以包含属性、调用方法和关系。
方法定义您要执行的任务。它使用 Ruby 代码来运行各种操作。
例如,下列步骤描述了如何创建一个自动化任务,以便对 Lenovo 物理基础架构供应商识别的第一台物理服务器执行电源操作(如开机、关机或重启服务器)。
注意: 您必须以有权创建域的用户身份登录 CloudForms。默认用户为 admin,密码为 smartvm。
7.1.1. 第 1 步:创建自定义域。
- 前往自动化 > 自动化 > 浏览。
- 单击顶部菜单中的配置 > 添加新的域。
- 输入域名(例如,Lenovo)。
- 选择启用以启用该域。
- 单击添加。
7.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),再单击系统 > 事件 > EmsEvent >LenovoXclarity。
- 单击顶部菜单中的配置 > 添加新的实例。
输入新类实例的名称(例如 FQXHMTS0003G,这是当无法从设备获得清单数据时产生的事件)。
重要: 类实例名称必须与触发要调用的任务的事件名称相同。CloudForms 按照该名称来匹配类实例和事件。若要查找事件名称,请参见 Lenovo XClarity Administrator 在线文档中的消息。
添加在字段的 rel3 中复制的事件处理程序的路径。
可用的策略操作有三种:
- 物理服务器重置
- 物理服务器启动
物理服务器关机
可用的策略事件有三种:
- physical_server_reset
- physical_server_start
physical_server_shutdown
策略操作和策略事件必须匹配。例如,使用策略操作物理服务器关机的以下路径:
/System/event_handlers/event_action_policy? target=physical_server&policy_event=physical_server_shutdown¶m= policy_event 值与应用的策略操作匹配。
- 单击添加。
7.1.3. 第 3 步:创建命名空间。
- 选择自定义域 (Lenovo)。
- 单击顶部菜单中的配置 > 添加新的命名空间。
- 输入命名空间的唯一名称(例如,Functions)。
- 单击添加。
7.1.4. 第 4 步:创建类。
- 选择您在上一步中创建的命名空间(例如,Functions)。
- 单击顶部菜单中的配置 > 添加新的类。
- 输入类的唯一名称(例如,Power_actions)。
- 单击添加。
7.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)。
- 单击添加。
7.2. 在事件发生时调用自动化任务
若要在特定事件发生时自动调用任务,您必须创建、配置和分配自定义策略。
例如,下列步骤描述了如何在 CloudForms 收到(您定义的)特定事件时执行一个特定的自动化任务。
注意: 您必须以有权创建策略的用户身份登录 CloudForms。默认用户为 admin,密码为 smartvm。
7.2.1. 第 1 步:创建和配置策略。
- 前往控制 > 浏览器。
- 单击策略 > 所有策略 > 控制策略 > 物理基础架构控制策略。
- 单击顶部菜单中的配置 > 添加新的物理服务器控制策略。
- 输入描述(例如,Lenovo_Policy)。
- 单击添加。
7.2.2. 第 2 步:创建自定义操作。
创建自定义操作。
- 前往动作 > 所有动作。
- 单击顶部菜单中的配置 > 添加新的动作。
- 输入描述(例如,Power_Off_Server)。
- 选择调用自定义自动化作为操作类型。
- 输入相关的消息(例如,create)。
- 在“请求”字段中填入 Call_Instance。
按照所给的顺序指定下列属性:
- 指定命名空间属性,并将其值设为新的域和命名空间 (<domain_name>/<namespace>)(例如,Lenovo/Functions)。
- 指定类 属性,并将其值设为对应的类(例如,Power_actions)。
- 指定实例属性,并将其值设为对应的实例(例如,Physical_Server_PowerOff)。
- 单击添加。
配置您创建的策略。
- 选择新策略(例如,Lenovo_Policy)。
- 单击顶部菜单中的配置 > 编辑这个策略的事件分配。
- 找到物理服务器操作,再选择物理服务器关机选项。
- 单击保存。
- 选择新策略事件。
- 单击顶部菜单中的配置 > 为这个策略事件编辑动作。
- 从如果所有条件都为 True 时的动作顺序 字段中,选择您在上一步中创建的自定义操作(例如,Power_Off_Server)。
- 单击保存。
7.2.3. 第 3 步:创建和分配策略配置集。
创建策略配置集。
- 单击策略配置集 > 所有策略配置集。
- 单击顶部菜单中的配置 > 添加新的策略配置集。
- 输入策略的描述(例如,Lenovo_Policy_Profile)。
- 选择您的策略,并将它拖到右侧。
- 单击添加。
将策略配置集分配到 Lenovo 物理基础架构供应商:
- 前往计算 > 物理基础架构 > 供应商。
- 指定您要向其分配策略配置集的物理基础架构供应商。
- 从顶部菜单中,单击策略 > 管理策略。
- 选择您刚刚创建的策略配置集(例如,Lenovo_Policy_Profile)。
- 单击保存。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.