运维编排场景系列-----给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}}"
    }
  }
}
AI 代码解读

 

打开运维编排控制台并创建模板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}}"
			}
		}
	}
}
AI 代码解读

 

 

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机器组

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
巴梨
+关注
目录
打赏
0
0
0
0
36
分享
相关文章
阿里云服务器实例经济型e、通用算力型u1、计算型c8i、通用型g8i、内存型r8i详解与选择策略
在阿里云现在的活动中,可选的云服务器实例规格主要有经济型e、通用算力型u1、计算型c8i、通用型g8i、内存型r8i实例,虽然阿里云在活动中提供了多种不同规格的云服务器实例,以满足不同用户和应用场景的需求。但是有的用户并不清楚他们的性能如何,应该如何选择。本文将详细介绍阿里云服务器中的经济型e、通用算力型u1、计算型c8i、通用型g8i、内存型r8i实例的性能、适用场景及选择参考,帮助用户根据自身需求做出更加精准的选择。
阿里云服务器ECS u1、c7、e实例、c8i实例有什么区别?性能有差异吗?
阿里云ECS实例包括经济型e、通用算力型u1、计算型c7和c8i,性能与价格各异。经济型e为共享型,适合轻量应用;u1性价比高,适配中小型企业需求;c7和c8i为企业级独享型,性能依次递增,适用于高性能场景。以2核4G为例,u1实例199元/年起,带5M带宽;c7和c8i价格更高但性能更强。选择时需根据实际需求权衡性能与成本。
阿里云服务器ECS内存型2核16G、4核32G和8核64G配置实例、费用和性能参数表
本文整理了2025年阿里云服务器租赁价格表,涵盖2核16G、4核32G和8核64G配置收费标准。CPU内存比为1:8,提供多种实例规格如ECS内存型r8i、通用算力型u1等。价格由CPU内存、公网带宽及系统盘组成,支持优惠折扣(年付6.7折起)。文中详细列出各配置参考价格、公网带宽与系统盘收费,并对比不同实例规格性能,如Intel Xeon和AMD EPYC处理器系列,帮助用户选择高性价比方案。具体价格以阿里云官网为准。
46 4
阿里云服务器实例规格选择参考:如何根据业务场景选择适合自己的实例规格
在我们购买阿里云服务器的时候,阿里云提供了众多的云服务器实例规格,满足了不同行业、不同业务场景的多样化需求。然而,面对众多的实例选择,如何根据自身的业务特性,挑选出最合适的云服务器实例规格,成为了众多用户,尤其是新手用户比较关心的问题。本文旨在通过深入剖析阿里云服务器的各类实例规格,结合具体的业务场景,为您提供一份详尽的实例规格选择指南,以供参考和选择。
阿里云服务器五代至八代实例对比:性能对比与精准选型指南参考
目前,阿里云服务器最新的实例规格已经升级到第九代,不过主售的云服务器实例规格还是以七代和八代云服务器为主。对于初次接触阿里云服务器实例规格的用户来说,可能并不清楚阿里云服务器五代、六代、七代、八代实例有哪些,以及它们之间有何区别。本文将详细介绍阿里云五代、六代、七代、八代云服务器实例规格,并对比它们在性能方面的提升,以供参考和选择。
阿里云服务器ECS通用型规格族解析:实例规格、性能基准与场景化应用指南
作为ECS产品矩阵中的核心序列,通用型规格族以均衡的计算、内存、网络和存储性能著称,覆盖从基础应用到高性能计算的广泛场景。通用型规格族属于独享型云服务器,实例采用固定CPU调度模式,实例的每个CPU绑定到一个物理CPU超线程,实例间无CPU资源争抢,实例计算性能稳定且有严格的SLA保证,在性能上会更加稳定,高负载情况下也不会出现资源争夺现象。本文将深度解析阿里云ECS通用型规格族的技术架构、实例规格特性、最新价格政策及典型应用场景,为云计算选型提供参考。
阿里云服务器第八代通用型g8i实例评测:性能与适用场景解析
阿里云服务器通用型g8i实例怎么样?g8i实例采用CIPU+飞天技术架构,并搭载最新的Intel 第五代至强可扩展处理器(代号EMR),不仅性能得到大幅提升,同时还拥有AMX加持的AI能力增强,以及全球范围内率先支持的TDX机密虚拟机能力。这些特性使得g8i实例在AI增强和全面安全防护两大方面表现出色,尤其适用于在线音视频及AI相关应用。本文将深入探讨g8i实例的产品特性、优势、适用场景及规格族,以帮助您更好地了解这款产品,以供参考和选择。
阿里云特惠云服务器99元与199元配置与性能和适用场景解析:高性价比之选
2025年,阿里云长效特惠活动继续推出两款极具吸引力的特惠云服务器套餐:99元1年的经济型e实例2核2G云服务器和199元1年的通用算力型u1实例2核4G云服务器。这两款云服务器不仅价格亲民,而且性能稳定可靠,为入门级用户和普通企业级用户提供了理想的选择。本文将对这两款云服务器进行深度剖析,包括配置介绍、实例规格、使用场景、性能表现以及购买策略等方面,帮助用户更好地了解这两款云服务器,以供参考和选择。
DeepSeek服务器繁忙解决方法:使用阿里云一键部署DeepSeek个人网站!
通过阿里云一键部署DeepSeek个人网站,解决服务器繁忙问题。学生用户可领取300元代金券实现0成本部署,普通用户则可用99元/年的服务器。教程涵盖从选择套餐、设置密码到获取百炼API-KEY的全流程,助您快速搭建专属大模型主页,体验DeepSeek、Qwen-max、Llama等多款模型,无需代码,最快5分钟完成部署。支持绑定个人域名,共享亲友使用,日均成本仅约1元。
107 10
【阿里云】控制台使用指南:从创建ECS到系统诊断测评
本文介绍了如何通过阿里云获取ECS云服务器并进行操作系统配置与组件安装,以实现高效的资源管理和系统监控。阿里云凭借强大的基础设施和丰富的服务成为用户首选。文中详细描述了获取ECS、RAM授权、开通操作系统控制台及组件安装的步骤,并展示了如何利用控制台实时监控性能指标、诊断系统问题及优化性能。特别针对idle进程进行了深入分析,提出了优化建议。最后,建议定期进行系统健康检查,并希望阿里云能推出更友好的低成本套餐,满足学生等群体的需求。
115 17
【阿里云】控制台使用指南:从创建ECS到系统诊断测评