运维编排场景系列-----给ECS实例自动打TAG

简介: Tag简介和场景 对于一般的资源管理需求,都是针对一个用户下数量较多的情况,当实例等数量较多时,对实例进行运维管理等操作就会变得比较困难,有时候甚至需要采取拆分账号的方式管理不同部门或者不同用途的资源。

Tag简介和场景

对于一般的资源管理需求,都是针对一个用户下数量较多的情况,当实例等数量较多时,对实例进行运维管理等操作就会变得比较困难,有时候甚至需要采取拆分账号的方式管理不同部门或者不同用途的资源。如果采用Tag进行资源的分类管理,会大大简化这个问题。


首先,我们可以针对实例的使用场景进行分类,在一般的开发场景中,机器一般有多个分类:开发测试环境、打包环境、生产环境等。这些机器的运维管理是绝对隔绝的,因此要在Tag上对其进行区分,在开发测试机器上,可以增加标签(增加方式详见下一节)key为env、value为test;在生产机器上,可以增加标签key为env、value为product。形成如下图的机器分类。

 

1560305741415-2cb02da3-5caa-491c-90a5-bd                                           

 

我们可以使用不同的维度来给机器打Tag,

以万网的场景需求为给机器以kernelVersion,osType等场景来打Tag.  osType分为linux,windows. kernerlVersion为uname -r的返回结果

 

解决方案

针对以上需求总结下来

1.根据当前实例的OsType字段给当前实例打个key为osType的tag

2.根据当前实例中的uname -r的运行结果打一个key为kernelVersion的tag

 

针对以上场景我们可以构建两个运维编排脚本

按OSType打Tag

   输入: tagKey的名字,和InstanceId 以及运维编排服务以客户身份扮演的角色名

   输出: 当前机器的osType

   运行步骤:

          a) 指定InstanceId调用DescribeInstances接口并获取到OsType

          b) 调用TagResources给Tag的Key设定为输入的TagKey Value指定为a步骤的输出结果,实例ID指定为输入的InstanceId

    这样我们就完成了根据OsType打Tag的操作,模板如下

{
  "FormatVersion": "OOS-2019-06-01",
  "Description": "tag instance by os type",
  "Parameters": {
    "InstanceId": {
      "Type": "String",
      "Description": "the InstanceId to tag",
      "MinLength": 1,
      "MaxLength": 30
    },
    "TagKey": {
      "Type": "String",
      "Description": "the tag key you specified"
    },
    "OOSAssumeRole": {
      "Type": "String",
      "Description": "The RAM role to be assumed by OOS.",
      "Default": "OOSServiceRole"
    }
  },
  "RamRole": "{{OOSAssumeRole}}",
  "Tasks": [
    {
      "Name": "queryInstanceOsType",
      "Action": "ACS::ExecuteApi",
      "Description": "",
      "Properties": {
        "API": "DescribeInstances",
        "Service": "ECS",
        "Parameters": {
          "InstanceIds": [
            "{{ InstanceId }}"
          ]
        }
      },
      "Outputs": {
        "OsType": {
          "ValueSelector": "Instances.Instance[].OSType",
          "Type": "String"
        }
      }
    },
    {
      "Name": "tagResources",
      "Action": "ACS::ExecuteApi",
      "Description": "create the command to install logtail agent.",
      "Properties": {
        "API": "TagResources",
        "Service": "ECS",
        "Parameters": {
          "ResourceType": "Instance",
          "ResourceIds": [
            "{{ InstanceId }}"
          ],
          "Tags": [
            {
              "Key": "{{ TagKey }}",
              "Value": "{{ queryInstanceOsType.OsType }}"
            }
          ]
        }
      }
    }
  ],
  "Outputs": {
    "OsType": {
      "Type": "String",
      "Value": "{{ queryInstanceOsType.OsType}}"
    }
  }
}

 

打开运维编排控制台并创建模板TagByOsType

image.png                                           

 

执行模板

image.png                                           

 

设置参数 指定实例ID和TagKey执行

image.png                                           

 

我们看到刚刚执行已经执行成功

 

image.png                                           

并且可以看到当前执行的详细细节

image.png                                           

再看刚刚的实例多了个osType:linux的tag

image.png                                           

 

按KernelVersion打Tag

   输入: tagKey的名字,要在机器上执行的命令 当前场景是uname -r 以及运维编排服务以客户身份扮演的角色名

   输出:打tag的value

   运行步骤:

          a) 指定InstanceId调用DescribeInstances检查当前实例是否是Running状态          

          b) 调用云助手来到当前实例执行命令并等待执行结束获取到执行结果

          c) 调用TagResources给Tag的Key设定为输入的TagKey Value指定为b步骤的输出结果,实例ID指定为输入的InstanceId

    这样我们就完成了根据在执行机器执行命令根据命令结果打Tag的操作,模板如下

 

{
	"FormatVersion": "OOS-2019-06-01",
	"Description": "Tag ECS Instance by the RunCommand invocation result.",
	"Parameters": {
		"InstanceId": {
			"Type": "String",
			"Description": "the Instance Id to operate in linux.",
			"MinLength": 1,
			"MaxLength": 30
		},
		"CommandContent": {
			"Type": "String",
			"Description": "command content to run in linux ecs."
		},
		"TagKey": {
			"Type": "String",
			"Description": "tag specific key you want to tag on the instance."
		},
		"OOSAssumeRole": {
			"Type": "String",
			"Description": "oos assume this role to execution task.",
			"Default": "OOSServiceRole"
		}
	},
	"RamRole": "{{OOSAssumeRole}}",
	"Tasks": [{
			"Name": "checkInstanceReady",
			"Action": "ACS::CheckFor",
			"Description": "describe instances with specified parameters, refer them here: https://help.aliyun.com/document_detail/63440.html",
			"Properties": {
				"API": "DescribeInstances",
				"Service": "ECS",
				"PropertySelector": "Instances.Instance[].Status",
				"DesiredValues": [
					"Running"
				],
				"Parameters": {
					"InstanceIds": ["{{ InstanceId }}"]
				}
			}
		},
		{
			"Name": "queryInstanceCommandOutput",
			"Action": "ACS::ECS::RunCommand",
			"Description": "",
			"Properties": {
				"commandContent": "{{CommandContent}}",
				"type": "RunShellScript",
				"instanceId": "{{InstanceId}}"
			},
			"Outputs": {
				"CommandOutput": {
					"Type": "String",
					"ValueSelector": "InvocationResult[].Output"
				}
			}
		},
		{
			"Name": "tagResources",
			"Action": "ACS::ExecuteApi",
			"Description": "create the command to install logtail agent.",
			"Properties": {
				"API": "TagResources",
				"Service": "ECS",
				"Parameters": {
					"ResourceType": "Instance",
					"ResourceIds": [
						"{{ InstanceId }}"
					],
					"Tags": [{
						"Key": "{{TagKey}}",
						"Value": {
							"Fn::Base64Decode": "{{ queryInstanceCommandOutput.CommandOutput }}"
						}
					}]
				}
			}
		}
	],
	"Outputs": {
		"tagValue": {
			"Type": "String",
			"Value": {
				"Fn::Base64Decode": "{{ queryInstanceCommandOutput.CommandOutput}}"
			}
		}
	}
}

 

 

image.png                                           

执行结束后我们看结果符合预期实例上多了个kernelVersion:3.10.0-xxx的tag

 

image.png                                           

 

 

总结

以上我们介绍了如果使用运维编排方便的给实例打Tag, 我们会把相应的场景抽象成公共模板,方便使用,并挖掘更多的类似运维场景。运维编排致力于解决客户运维的核心场景问题,以Ops As Code的方式提升客户自动化能力。目前处于内测中,欢迎体验和测试。



欢迎使用OOS

OOS管理控制台的链接
如果您遇到链接打不开的问题,请复制此链接到您的浏览器导航栏然后打开:
https://home.console.aliyun.com/redirect.htm?productId=ecs&path=automation/region/

OOS帮助文档的链接
OOS客户支持钉钉群:23330931

系列文章

最佳实践

玩转运维编排服务的权限:Assume Role+Pass Role

场景系列

运维编排场景系列-----给ECS实例自动打TAG
运维编排场景系列----从实例中拷贝文件到OSS
运维编排场景系列----给实例加到SLS机器组

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
15天前
|
存储 人工智能 容灾
阿里云服务器2核8G、4核16G、8核32G配置热门实例性能对比与场景化选型指南
2核8G/4核16G/8核32G配置的阿里云服务器在阿里云活动中目前有经济型e、通用算力型u1、通用型g7、通用型g8y和通用型g9i五种实例可选,目前2核8G配置选择u1实例活动价格652.32元1年起,4核16G月付选择经济型e实例最低89元1个月,8核32G配置160元1个月起,本文将为大家解析经济型e、通用算力型u1、通用型g7及通用型g8y实例,帮助用户根据自身需求合理选择最适合的实例规格和配置。
|
25天前
|
机器学习/深度学习 数据库 数据安全/隐私保护
服务器核心组件:CPU 与 GPU 的核心区别、应用场景、协同工作
CPU与GPU在服务器中各司其职:CPU擅长处理复杂逻辑,如订单判断、网页请求;GPU专注批量并行计算,如图像处理、深度学习。二者协同工作,能大幅提升服务器效率,满足多样化计算需求。
661 0
|
3月前
|
弹性计算 关系型数据库 数据库
阿里云服务器ECS是什么?ECS应用场景、租用流程及使用教程整理
阿里云ECS(弹性计算服务)是性能稳定、弹性扩展的云计算服务,支持多种处理器架构和实例类型,适用于网站托管、开发测试、数据存储、企业服务、游戏多媒体及微服务架构等场景。提供从注册、配置到部署、运维的完整使用流程,助力用户高效上云。
|
3月前
|
机器学习/深度学习 存储 缓存
阿里云服务器企业级实例选购攻略:八代/九代/倚天实例性能、场景、选型参考
2025年阿里云活动中适合企业用户的云服务器实例规格主要为通用算力型u1、计算型c8i、计算型c9i、计算型c8y、通用型g8i、通用型g9i、通用型g8y、内存型r9i、内存型r8y等实例。本文为大家介绍这些实例规格的性能、场景以及选型参考。
|
4月前
|
弹性计算 开发框架 Ubuntu
阿里云服务器ECS镜像知识解析:功能特性、场景及上手实操教程参考
对于部分初次选择阿里云服务器的新手用户来说,可能并不是很清楚阿里云服务器镜像是什么?ECS镜像堪称搭建ECS实例的基础模板,其中涵盖了启动及运行实例所必需的操作系统以及预先配置好的数据。本文将围绕阿里云服务器镜像的相关知识展开介绍,助力大家全方位了解并熟练运用这一强大功能。
|
2月前
|
存储 弹性计算 运维
阿里云服务器全解析:ECS是什么、应用场景、租用流程及优缺点分析
阿里云ECS(Elastic Compute Service)是阿里云提供的高性能、高可用的云计算服务,支持弹性扩展、多样化实例类型和多种计费模式。适用于网站搭建、数据处理、运维测试等多种场景,具备分钟级交付、安全可靠、成本低、易运维等优势,是企业及开发者上云的理想选择。
363 5
|
4月前
|
存储 机器学习/深度学习 安全
阿里云服务器通用型实例解析:g7/g8a/g8y/g8i性能对比与场景化选型参考
在阿里云服务器的通用型实例规格中,通用型g7、通用型g8a、通用型g8y和通用型g8i,凭借其强大的性能和灵活的配置,成为了众多企业和开发者的首选。这几个实例规格相比经济型e和通用算力型u1等实例规格,性能更为强劲,尽管它们的处理器与内存配比通常为1:4,但在处理器架构、存储能力、网络性能及安全特性等方面各有千秋,因此适用场景也各有侧重。以下是对通用型g7、g8a、g8y、g8i实例的详细性能对比、适用场景分析及选择建议。
|
7天前
|
弹性计算 运维 安全
阿里云轻量应用服务器详解——2025升级到200M峰值带宽
阿里云轻量应用服务器(Simple Application Server)是面向个人开发者及中小企业的轻量级云服务,适用于网站搭建、开发测试、小程序后端等场景。2025年升级至200M峰值带宽,支持WordPress、宝塔面板、Docker等应用镜像一键部署,操作简单,运维便捷。按套餐售卖,不支持自定义CPU内存配置,价格低至38元/年起,是快速上云的高性价比选择。
|
1月前
|
存储 缓存 数据挖掘
阿里云目前最便宜云服务器介绍:38元、99元、199元性能,选购攻略参考
轻量应用服务器2核2G峰值200M带宽38元1年;云服务器经济型e实例2核2G3M带宽99元1年;云服务器通用算力型u1实例2核4G5M带宽199元1年。对于还未使用过阿里云服务器的用户来说,大家也不免有些疑虑,这些云服务器性能究竟如何?它们适用于哪些场景?能否满足自己的使用需求呢?接下来,本文将为您全方位介绍这几款云服务器,以供您了解及选择参考。
|
2月前
|
网络安全 云计算
如何设置阿里云轻量应用服务器镜像?
本文介绍了在阿里云轻量应用服务器上创建与配置镜像的详细步骤。镜像是一种特殊的文件系统映射,可用于快速克隆服务器配置。内容涵盖准备条件、登录控制台、创建实例、生成镜像、下载与设置镜像,以及如何使用镜像启动新实例。适合希望提升服务器部署效率的用户参考。

热门文章

最新文章