可以使用 Expire 操作以及现有事件主题管理过期的部署及其资源。

环境中的部署租约过期后,可以使用可扩展性事件主题执行任务,例如停止备份或监控任何部署资源。为执行这些实施后操作, vRealize Automation API 使用系统级别的 Expire 操作。只要组织中的部署租约过期,系统就会自动触发此操作。 Expire 操作触发器优先于与该部署关联的任何资源的关闭电源事件。
注: 在以前的产品版本中,租约过期后,会在部署级别触发关闭电源事件。现在,会在资源级别对处于已打开电源状态的每个部署资源触发关闭电源事件。
Expire 操作包含在现有事件主题(例如 已请求的部署操作已完成的部署操作)的负载中,并使用 deploymentid 参数执行与部署资源关联的过期前和过期后任务。
注: Expire 操作会在部署租约过期后大约 10 到 15 分钟触发。在实际租约过期之前,系统不会触发租约过期事件。 Expire 操作是系统级别操作,用户无法手动触发与其关联的事件。

对于当前用例,您将使用已请求的部署操作事件主题以及 Expire 操作将部署中的虚拟机作为模板进行备份。对于本例,使用 vRealize Orchestrator 工作流执行备份,但也可以使用可扩展性操作作为订阅的可运行项执行相同的任务。

过程

  1. 导航到可扩展性 > 订阅,然后单击新建订阅
  2. 输入订阅的名称。
  3. 状态下,确认订阅已启用。
  4. 事件主题下,选择已请求的部署操作事件主题。
  5. 打开条件选项,然后为过期操作添加筛选器:
    event.data.actionName == 'Expire'
    注: 已请求的部署操作事件主题可由不同的部署实施后操作触发,例如更改部署租约期限。添加租约过期操作筛选器可保证仅针对过期事件触发订阅。
  6. 操作/工作流下,添加 vRealize Orchestrator 工作流。
    该示例工作流的结构定义包括可编辑脚本的任务和工作流元素,其中包括 克隆虚拟机,无自定义工作流,该工作流预配置了 vRealize Orchestrator。可编辑脚本的任务元素包括以下示例脚本:
    System.log("Lease expiry action triggered to clone a VM...")
    
    System.log("Deployment Id is: " + inputProperties.deploymentId);
    inputHeaders = new Properties();
    deploymentId = inputProperties.deploymentId;
    pathUriVariable = "/deployment/api/deployments/" +deploymentId +"/resources"; 
    var restClient = vRAHost.createRestClient();
    var request = restClient.createRequest("GET", pathUriVariable, null);
    var keys = inputHeaders.keys;
    for(var key in keys){
        request.setHeader(keys[key], inputHeaders.get(keys[key]));
    }
    var response = restClient.execute(request);
    System.log("Content as string: " + response.contentAsString);
    var content = response.contentAsString;
    var obj = JSON.parse(content);
    
    var object = new Properties(obj);
    var contentJson = object.content;
    for (var i = 0; i < contentJson.length; i++) {
        var resources = contentJson[i];
        
        var resourceProperties = resources.properties;
        System.log("Resource name is: " + resourceProperties.resourceName)
        resourceName = resourceProperties.resourceName;
    }
    
    var query = "xpath:name='" + resourceName + "'"; 
          var vms=Server.findAllForType("VC:VirtualMachine", query); 
          vcVM=vms[0]; 
         
          System.log("VM input is: " + vcVM);
          dataStoreOutput = datastore
          template= true;
          name="test-vm-name"
    
  7. 确定是将订阅设置为阻止还是非阻止。
    注: 如果将订阅设置为阻止,则意味着只有在可运行项(在本例中为租约过期工作流)成功完成运行后,才会对部署资源触发关闭电源事件。如果将订阅设置为非阻止,则意味着无论工作流运行的状态如何,都会对部署资源触发关闭电源事件。
  8. 要完成订阅编辑,请单击保存

下一步做什么

在租约过期事件触发可扩展性订阅并且工作流运行成功后,导航到 vSphere Web Client 并验证虚拟机是否已转换为模板。