使用WaitCondition与WaitConditionHandle进行信号通知

简介: 本场景主要介绍使用ALIYUN::ROS::WaitCondition与ALIYUN::ROS::WaitConditionHandle进行信号通知。

使用WaitCondition与WaitConditionHandle进行信号通知

1. 编写ROS模板

编写ROS模板的基本方式可以参考《使用ROS创建VPC、VSwitch》

查询资源类型详情

当在ECS实例中安装Nginx服务时,您可以在ROS模板中定义ALIYUN::ECS::RunCommandALIYUN::ROS::WaitConditionALIYUN::ROS::WaitConditionHandle资源,实现单次发送并接收信号。

说明:访问资源类型索引,根据部署场景查询资源类型。

声明创建的资源(Resources)

示例代码段如下:

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Description": "",
  "Parameters": {
    "InstanceId": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::Instance::InstanceId"
    }
  },
  "Resources": {
    "InstallNginx": {
      "Type": "ALIYUN::ECS::RunCommand",
      "Properties": {
        "Timeout": 60,
        "Name": "InstallNginxScript",
        "CommandContent": {
          "Fn::Replace": [
            {
              "ros-notify": {
                "Fn::GetAtt": [
                  "InstallNginxWaitConditionHandle",
                  "CurlCli"
                ]
              }
            },
            {
              "Fn::Join": [
                "",
                [
                  "#!/bin/sh \n",
                  "yum install -y nginx\n",
                  "systemctl restart nginx\n",
                  "if [[ $? -eq 0 ]];\n",
                  "then \n",
                  "     ros-notify -d \"{\\\"status\\\" : \\\"SUCCESS\\\"}\" \n",
                  "else \n",
                  "     ros-notify -d \"{\\\"status\\\" : \\\"FAILURE\\\"}\" \n",
                  "fi \n"
                ]
              ]
            }
          ]
        },
        "Type": "RunShellScript",
        "InstanceIds": [
          {
            "Ref": "InstanceId"
          }
        ]
      }
    },
    "InstallNginxWaitCondition": {
      "Type": "ALIYUN::ROS::WaitCondition",
      "Properties": {
        "Handle": {
          "Ref": "InstallNginxWaitConditionHandle"
        },
        "Timeout": 60
      }
    },
    "InstallNginxWaitConditionHandle": {
      "Type": "ALIYUN::ROS::WaitConditionHandle"
    }
  },
  "Outputs": {
  },
  "Metadata": {
    "ALIYUN::ROS::Interface": {
      "ParameterGroups": [
        {
          "Parameters": [
            "InstanceId"
          ],
          "Label": {
            "default": "ECS配置"
          }
        }
      ],
      "TemplateTags": [
        "acs:example:云起实验室:使用WaitCondition与WaitConditionHandle进行信号通知"
      ]
    }
  }
}

模板解释

1. 选择当前账号所选地域下已有ECS实例运行安装Nginx服务的Shell脚本。

说明:本场景需要当前地域下有ECS实例。您可以提前购买ECS服务器,或结合《使用ROS创建ECS实例》一起练习。

2. 通过Fn::GetAtt获取ALIYUN::ROS::WaitConditionHandle中的返回值CurlCli作为发送信号的命令。

说明:通过添加-Body {"status": ""}指定信号类型,status取值包括SUCCESS、FAILURE和WARNING。如果出现以下情况,则资源栈创建失败。

收到FAILURE信号。

在设定时间内,收到的信号数量未满足要求。

收到的信号数量满足了要求,且所有信号均为WARNING。

3. 通过Fn::Replace将ALIYUN::ROS::WaitConditionHandle中的CurlCli替换为云助手执行的自定义脚本中发送信号的变量ros-notify。

您可以使用变量ros-notify简化自定义脚本代码,发送Nginx服务安装成功或失败的信号。


2. 创建资源栈

以下操作需登录阿里云账号,在资源编排控制台完成以下操作流程。

访问资源编排控制台

进入资源编排控制台

访问资源栈页面

在资源编排控制台左侧导航栏中单击资源栈。

选择资源创建地域

在页面左上角的地域下拉列表,选择资源栈的所在地域(例如:华北2:北京)。

创建资源栈

在资源栈列表页面,单击创建资源栈,然后在下拉列表中选择使用新资源(标准)。

输入模板

在选择模板页面,选择已有模板:选择输入模板方式,然后将上述示例模板内容复制到模板内容输入框内。然后单击下一步

模板参数关联关系动态呈现

配置模板参数页面,配置资源栈名称其余参数,然后单击下一步。

说明:体验本场景需要您提前在当前资源栈地域下准备一台ECS服务器。

资源栈信息配置(可选)

配置项

说明

资源栈策略

取值:

无资源栈策略:不设置资源栈策略。

输入资源栈策略:上传文件或在文本框手动输入资源栈策略。

关于资源栈策略的更多信息,请参见资源栈策略

失败时回滚

取值:

已启用:创建资源栈失败时,启用回滚策略。

已禁用:创建资源栈失败时,禁用回滚策略。

超时设置

如果所有资源的创建或更新没有在该时间内完成,系统将自动回滚到创建或更新之前的状态。

取值范围:10~1440。

单位:分钟。

删除保护

防止资源栈被意外删除。

取值:

已启用:启用删除保护。

已禁用:禁用删除保护。

RAM角色

您可以创建可信实体为资源编排服务的RAM角色,然后根据ROS模板中资源所需最小权限为RAM角色授权。

如果指定RAM角色,ROS将根据RAM角色的权限创建资源栈。关于如何创建RAM角色和为RAM角色授权,请参见创建可信实体为阿里云服务的RAM角色为RAM角色授权

如果不指定RAM角色,ROS将使用当前账号相关权限创建资源栈。

标签

由一对键值对组成,方便您对资源栈进行分类。

您可以单击添加,然后在编辑标签绑定对话框设置标签键标签值,最后单击确定

资源组

您可以选择资源栈所在的资源组。如果不指定资源组,资源栈将加入默认资源组。

关于如何创建资源组,请参见创建资源组

创建资源栈

检查并确认页面,单击创建


3. 查看资源栈

本步骤将指导您在完成创建资源栈操作后,如何查询资源栈详情。

1. 进入资源编排控制台

2. 在左侧导航栏单击资源栈。

3. 在页面左上角的地域下拉列表,选择资源栈的所在地域。

4. 在资源栈列表页面,找到需要查看的资源栈,单击资源栈名称列的资源栈ID。

5. 在资源栈管理页面,您可以执行以下操作:

单击资源栈信息页签,查看基本信息和资源栈策略。

查看资源栈事件

6. 单击事件页签,查看资源栈生命周期中发生的每一个事件。通过查看资源栈事件可以判断,查看当Nginx服务安装成行时,ECS实例发送的成功信号:Signal: status:SUCCESS reason:Signal 1 received

查看资源栈资源

7. 单击资源页签,查看资源栈创建涉及到的资源。


4. 释放资源栈

本步骤将指导您如何释放通过资源编排控制台创建资源内容。

进入资源栈列表

1. 在模板页签,单击右上角的 图标。

选择待删除的资源栈

2. 在资源栈列表页面,找到您创建的资源栈,单击操作列下的删除。

选择资源栈删除方式并删除

3. 在删除资源栈对话框中,删除方式选择释放资源,单击确定。

实验链接:https://developer.aliyun.com/adc/scenario/cb7950f6a40f4c0db71a2160cb7a26c3

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
存储 安全 网络协议
网络安全产品之认识准入控制系统
随着企业信息化建设的不断深入,企业的各种信息资产越来越多,网络安全问题也越来越突出。如何防止外来电脑、移动设备接入局域网,保护企业信息资产的安全,成为企业网络管理的重要问题。准入控制系统的出现,为企业提供了一种有效的解决方案。本文我们一起来认识一下准入控制系统。
953 2
|
开发工具 数据安全/隐私保护 git
Github新的认证方式
Github新的认证方式
733 0
|
存储 数据采集 Prometheus
【云原生监控系列第一篇】一文详解Prometheus普罗米修斯监控系统(山前前后各有风景,有风无风都很自由)(一)
【云原生监控系列第一篇】一文详解Prometheus普罗米修斯监控系统(山前前后各有风景,有风无风都很自由)(一)
2842 0
【云原生监控系列第一篇】一文详解Prometheus普罗米修斯监控系统(山前前后各有风景,有风无风都很自由)(一)
|
存储 数据可视化 安全
一张图的七十二变——阿里云OSS图片处理实践
      小张是某视频网站的新入职的UED,日常工作就是创作各式各样的海报banner。踌躇满志的小张,上了三天班就蔫了。因为他在完成一张图的创作后,还需要考虑:• 同一张图会以不同的形式应用于网站各处:有时候需裁剪成不同形状,有时需要加水印,有时需转换格式....• 为了风格统一,不同的图需要保持样式统一:不同图片排列组成成一组,每组图片风格(
3253 0
|
Python
Python字符串格式化利器:f-strings入门指南
Python字符串格式化利器:f-strings入门指南
645 80
|
数据中心
|
数据采集 机器学习/深度学习 监控
开源能源管理系统应用指南
开源能源管理系统助力用户实现能源监控、分析与优化,降低能耗成本,提升使用效率。以MyEMS为例,系统支持电、水、气等数据采集与分析,具备光伏监测、储能管理等功能,适用于建筑、工厂等场景。采用“云-边-端”架构,支持智能电表接入与5G传输,提供能耗分析、节能建议与清洁能源管理功能,助力企业实现绿色低碳运营。
262 0
|
存储 缓存 算法
G1原理—3.G1是如何提升垃圾回收效率
本文深入探讨了G1垃圾回收器提升GC效率的核心机制,包括记忆集(RSet)、位图(BitMap)和卡表(CardTable)的设计与作用。记忆集通过记录跨代引用避免了不必要的老年代遍历,位图用于高效描述内存使用状态以优化标记过程,而卡表则在节约记忆集内存的同时提供更详细的引用信息。此外,文章还解析了DCQ(Dirty Card Queue)和DCQS(Dirty Card Queue Set)机制如何异步更新RSet,确保在高并发场景下的性能与准确性。这些设计共同提升了G1在标记、清理及整理内存时的效率。
874 10
|
安全 机器人 Shell
【靶机】Windows渗透初体验-Steel Mountain
本靶机是windows版的mr robot,难度适中,值得一做。
576 0
|
域名解析 负载均衡 网络协议
【域名解析DNS专栏】DNS解析中的Anycast技术:原理与优势
在互联网中,DNS将域名转换为IP地址至关重要。Anycast技术通过将同一IP地址分配给多台地理上分散的服务器,确保客户端总能连接到最近且最轻载的服务器,从而加速DNS解析、实现负载均衡、提升抵御DDoS攻击的能力及服务高可用性。通过动态路由协议如BGP实现,Anycast极大地增强了DNS系统的性能和稳定性。
1762 2