概览
ZStack Cloud提供两类标签帮助用户和插件管理资源, 引入额外的资源属性,以及指挥ZStack Cloud执行特殊的业务逻辑。
用户标签(User Tags)
- 用户可以在所拥有的资源上创建用户标签,这对于管理相似资源的聚集特别有用。例如,用户可以为作为网页服务器的云主机设置一个标签web:
-
CreateUserTag resourceType=VmInstanceVO \ resourceUuid=613af3fe005914c1643a15c36fd578c6 tag=webCreateUserTag resourceType=VmInstanceVO \ resourceUuid=5eb55c39db015c1782c7d814900a9609 tag=webCreateUserTag resourceType=VmInstanceVO \ resourceUuid=0cd1ef8c9b9e0ba82e0cc9cc17226a26 tag=web - 之后,可以通过Query API with tags <query with
tags>来获取这些云主机:
QueryVmInstance __userTag__=web
用户也可以在创建云主机的时候设置多个标签,标签之间用","分隔,这样可以实现多个usertags-
CreateVmInstance instanceOfferingUuid=1cf417bfd0e94175aea92131f1000011 \ imageUuid=ee14c7c8cc46309d821c51bbae3adb70 l3NetworkUuids=ac5c7e736f1b499bbd0c12763b30051d \ name=tesd2 userTags=capability::liveSnapshot,os::centos::7.4 - 用户可以标识:容量40G,OS Centos7.4,密码是123456,用于Apache 场景。这些跟 ::
没有特别的关系
CreateVmInstance instanceOfferingUuid=1cf417bfd0e94175aea92131f1000011 \ imageUuid=ee14c7c8cc46309d821c51bbae3adb70 l3NetworkUuids=ac5c7e736f1b499bbd0c12763b30051d name=tesd2 \ userTags=capability:40G,OS:CentOS7.4,password:123456,usage:Apache
-
- 用户也可以通过用户标签和系统标签(system
tags)合作来改变业务逻辑。
例如,用户想在所有作为网页服务器的云主机上,在一个特定的通过SSD提高IO性能的主存储上,创建他们的根云盘。
要达到这一目的,用户可以这样做:- 在主存储上创建一个用户标签forWebTierVM:
CreateUserTag tag=forWebTierVM resourceType=PrimaryStorageVO \ resourceUuid=6572ce44c3f6422d8063b0fb262cbc62 - 然后,在计算规格上创建一个系统标签:
CreateSystemTag tag=primaryStorage::allocator::userTag::forWebTierVM \ resourceType=InstanceOfferingVO resourceUuid=8f69ef6c2c444cdf8c019fa0969d56a5 - 这样,当用户通过计算规格(UUID:8f69ef6c2c444cdf8c019fa0969d56a5)创建云主机时,ZStack Cloud会保证云主机的根云盘都会被创建在拥有用户标签forWebTierVM的主存储(UUID:6572ce44c3f6422d8063b0fb262cbc62)上。
- 在主存储上创建一个用户标签forWebTierVM:
系统标签(System Tags)
系统标签相比用户标签有更广泛的用途。就像上节中的例子一样,用户可以灵活使用它们来指挥ZStack Cloud执行特殊的业务逻辑。
- 内部系统标签
扩展ZStack Cloud功能的插件,可以通过使用系统标签来引入额外的资源属性,或记录和资源紧密相关的元数据。
例如,用户想在KVM云主机上实施在线迁移或者在线快照。
ZStack Cloud需要知道KVM云主机的libvirt版本和QEMU版本,这些信息都是元数据,ZStack Cloud将它们作为云主机的系统标签存储起来。
- 管理员可以通过以下命令查看一个KVM云主机的系统标签:
QuerySystemTag fields=tag resourceUuid=d07066c4de02404a948772e131139eb4 - d07066c4de02404a948772e131139eb4是该KVM云主机的UUID,查询结果为:
{ "inventories": [ { "tag": "capability:liveSnapshot" }, { "tag": "qemu-img::version::2.0.0" }, { "tag": "os::version::14.04" }, { "tag": "libvirt::version::1.2.2" }, { "tag": "os::release::trusty" }, { "tag": "os::distribution::Ubuntu" } ], "success": true }
这类系统标签,被称为内部系统标签。内部系统标签只能被ZStack Cloud的服务或插件创建,并且不能被DeleteTag API删除。
- 管理员可以通过以下命令查看一个KVM云主机的系统标签:
- 非内部系统标签
为了增加新的功能,插件通常需要为一个资源添加新的属性。虽然插件不能通过改变一个资源的数据库模式来增加一个新的列,但它可以为一个资源创建作为系统标签的新属性。
例如,当创建一个云主机时,用户可以为云主机某L3网络上的网卡绑定一个可以通过网络访问的主机名:-
CreateVmInstance name=testTag systemTags=hostname::web-server-1 \ l3NetworkUuids=6572ce44c3f6422d8063b0fb262cbc62 \ instanceOfferingUuid=04b5419ca3134885be90a48e372d3895 \ imageUuid=f1205825ec405cd3f2d259730d47d1d8 - 这个主机名被实现为一个系统标签;
- 如果查看VM inventory in chapter ‘Virtual Machine’, 那里没有叫做hostname的属性;
- 然而,可以在云主机的系统标签中发现它:
QuerySystemTag fields=tag uuid resourceUuid=76e119bf9e16461aaf3d1b47c645c7b7{ "inventories": [ { "tag": "hostname::web-server-1", "uuid": "596070a6276746edbf0f54ef721f654e" } ], "success": true }
这类系统标签就是非内部的,用户可以通过DeleteTag API删除它。
例如,用户想把一个之前的云主机的主机名更改为web-server-nginx,可以这样做:-
DeleteTag uuid=596070a6276746edbf0f54ef721f654e -
CreateSystemTag resourceType=VmInstanceVO tag=hostname::web-server-nginx \ resourceUuid=76e119bf9e16461aaf3d1b47c645c7b7 - 停止和启动云主机之后,云主机中的系统会接受到web-server-nginx作为新的主机名。
-
命名约定(Name Convention)
用户标签和系统标签最多都只能有2048个字符。
- 对于用户标签,没有强制的命名约定,但推荐使用可读的有意义的字符串。
- 对于系统标签,和ZStack Cloud中服务和插件定义的一样,
他们使用
::作为分隔符。
资源类型(Resource Type)
创建一个标签时, 用户必须指定标签所关联的资源类型。
资源类型示例见下表:
| 资源类型 |
|---|
| AccessControlListVO |
| AccessControlRuleVO |
| AccessKeyVO |
| AccountVO |
| ActiveAlarmVO |
| AddingNewInstanceRuleVO |
| AddressPoolVO |
| AffinityGroupVO |
| AlarmVO |
| AlertVO |
| AliyunDiskVO |
| AliyunEbsBackupStorageVO |
| AliyunEbsPrimaryStorageVO |
| AliyunNasAccessGroupVO |
| AliyunNasAccessRuleVO |
| AliyunNasFileSystemVO |
| AliyunNasMountTargetVO |
| AliyunPanguPartitionVO |
| AliyunProxyVpcVO |
| AliyunProxyVSwitchVO |
| AliyunRouterInterfaceVO |
| AliyunSmsSNSTextTemplateVO |
| AliyunSnapshotVO |
| AppBuildSystemVO |
| ApplianceVmVO |
| AutoScalingGroupActivityVO |
| AutoScalingGroupInstanceVO |
| AutoScalingGroupVO |
| AutoScalingRuleAlarmTriggerVO |
| AutoScalingRuleSchedulerJobTriggerVO |
| AutoScalingRuleTimedTaskTriggerVO |
| AutoScalingRuleTriggerVO |
| AutoScalingRuleVO |
| AutoScalingTemplateVO |
| AutoScalingVmTemplateVO |
| BackupStorageVO |
| BaremetalBondingVO |
| BaremetalChassisVO |
| BaremetalHardwareInfoVO |
| BaremetalInstanceVO |
| BaremetalNicVO |
| BaremetalPxeServerVO |
| BaremetalVlanNicVO |
| BuildApplicationVO |
| CaptchaVO |
| CephBackupStorageMonVO |
| CephBackupStorageVO |
| CephPrimaryStorageMonVO |
| CephPrimaryStoragePoolVO |
| CephPrimaryStorageVO |
| CertificateVO |
| ClusterDRSVO |
| ClusterVO |
| ConnectionAccessPointVO |
| ConsoleProxyVO |
| DahoCloudConnectionVO |
| DahoConnectionVO |
| DahoVllsVO |
| DatabaseBackupVO |
| DataCenterVO |
| DiskOfferingVO |
| EcsImageVO |
| EcsInstanceVO |
| EcsSecurityGroupRuleVO |
| EcsSecurityGroupVO |
| EcsVpcVO |
| EcsVSwitchVO |
| EipVO |
| EmailMediaVO |
| EmailTriggerActionVO |
| ESXHostVO |
| EventRuleTemplateVO |
| EventSubscriptionVO |
| ExternalBackupVO |
| FaultToleranceVmGroupVO |
| FiberChannelLunVO |
| FiberChannelStorageVO |
| FlowCollectorVO |
| FlowMeterVO |
| GarbageCollectorVO |
| GuestOsCategoryVO |
| GuestToolsVO |
| HardwareL2VxlanNetworkPoolVO |
| HostNetworkBondingVO |
| HostNetworkInterfaceVO |
| HostVO |
| HybridAccountVO |
| HybridEipAddressVO |
| IAM2OrganizationVO |
| IAM2ProjectRoleVO |
| IAM2ProjectTemplateVO |
| IAM2ProjectVO |
| IAM2TicketFlowCollectionVO |
| IAM2TicketFlowVO |
| IAM2VirtualIDGroupVO |
| IAM2VirtualIDVO |
| IdentityZoneVO |
| ImageReplicationGroupVO |
| ImageStoreBackupStorageVO |
| ImageVO |
| InstanceOfferingVO |
| IpRangeVO |
| IPsecConnectionVO |
| IscsiLunVO |
| IscsiServerVO |
| IscsiTargetVO |
| KVMHostVO |
| L2NetworkVO |
| L2VlanNetworkVO |
| L3NetworkVO |
| LdapServerVO |
| LoadBalancerListenerVO |
| LoadBalancerServerGroupVO |
| LoadBalancerVO |
| LoginAttemptsVO |
| LongJobVO |
| MdevDeviceSpecVO |
| MdevDeviceVO |
| MediaVO |
| MetricRuleTemplateVO |
| MiniStorageResourceReplicationVO |
| MiniStorageVO |
| MonitorGroupAlarmVO |
| MonitorGroupEventSubscriptionVO |
| MonitorGroupInstanceVO |
| MonitorGroupVO |
| MonitorTemplateVO |
| MonitorTriggerActionVO |
| MonitorTriggerVO |
| MulticastRouterVO |
| MultipathDeviceVO |
| MultiPathGroupVO |
| MultiPathVO |
| NasFileSystemVO |
| NasMountTargetVO |
| NormalIpRangeVO |
| OssBucketVO |
| PciDeviceOfferingVO |
| PciDeviceSpecVO |
| PciDeviceVO |
| PolicyRouteRuleSetVO |
| PolicyRouteRuleVO |
| PolicyRouteTableRouteEntryVO |
| PolicyRouteTableVO |
| PolicyVO |
| PortForwardingRuleVO |
| PortMirrorSessionVO |
| PortMirrorVO |
| PreconfigurationTemplateVO |
| PriceTableVO |
| PrimaryStorageVO |
| PublishAppVO |
| QuotaVO |
| RaidControllerVO |
| RaidPhysicalDriveVO |
| RemovalInstanceRuleVO |
| ResourceStackVO |
| RoleVO |
| RouterAreaVO |
| SchedulerJobGroupVO |
| SchedulerJobVO |
| SchedulerTriggerVO |
| SchedulerVO |
| ScsiLunVO |
| SdnControllerVO |
| SecurityGroupRuleVO |
| SecurityGroupVO |
| SftpBackupStorageVO |
| SharedBlockGroupVO |
| SharedBlockVO |
| SimulatorHostVO |
| SNSApplicationEndpointVO |
| SNSApplicationPlatformVO |
| SNSDingTalkAtPersonVO |
| SNSDingTalkEndpointVO |
| SNSEmailAddressVO |
| SNSEmailEndpointVO |
| SNSEmailPlatformVO |
| SNSHttpEndpointVO |
| SNSMicrosoftTeamsEndpointVO |
| SNSSmsEndpointVO |
| SNSSmsReceiverVO |
| SNSTextTemplateVO |
| SNSTopicVO |
| StackTemplateVO |
| SystemRoleVO |
| TagPatternVO |
| ThirdpartyPlatformVO |
| TicketFlowCollectionVO |
| TicketFlowVO |
| TicketStatusHistoryVO |
| TicketTypeVO |
| TicketVO |
| TwoFactorAuthenticationSecretVO |
| UsbDeviceVO |
| UserGroupVO |
| UserVO |
| V2VConversionHostVO |
| VCenterBackupStorageVO |
| VCenterClusterVO |
| VCenterDatacenterVO |
| VCenterPrimaryStorageVO |
| VCenterResourcePoolVO |
| VCenterVO |
| VipVO |
| VirtualBorderRouterVO |
| VirtualRouterOfferingVO |
| VirtualRouterVmVO |
| VmCdRomVO |
| VmInstanceVO |
| VmNicVO |
| VmPriorityConfigVO |
| VmVfNicVO |
| VniRangeVO |
| VolumeBackupVO |
| VolumeSnapshotGroupVO |
| VolumeSnapshotTreeVO |
| VolumeSnapshotVO |
| VolumeVO |
| VpcFirewallIpSetTemplateVO |
| VpcFirewallRuleSetVO |
| VpcFirewallRuleTemplateVO |
| VpcFirewallRuleVO |
| VpcFirewallVO |
| VpcHaGroupVO |
| VpcRouterVmVO |
| VpcUserVpnGatewayVO |
| VpcVirtualRouteEntryVO |
| VpcVirtualRouterVO |
| VpcVpnConnectionVO |
| VpcVpnGatewayVO |
| VpcVpnIkeConfigVO |
| VpcVpnIpSecConfigVO |
| VRouterRouteEntryVO |
| VRouterRouteTableVO |
| VtepVO |
| VxlanNetworkPoolVO |
| VxlanNetworkVO |
| XDragonHostVO |
| ZBoxBackupVO |
| ZBoxVO |
| ZoneVO |
在每个资源的对应Tags章节中, 我们有解释需用什么资源类型来创建对应的标签。