如何动态更改自动缩放实例名称
How to dynamically change autoscaling instance names
我创建了一个热堆栈,它根据 CPU 使用情况自动缩放。每次创建一个新实例时,它都会被赋予一个随机名称。
有没有办法设置一个特定的名称,并在其末尾添加一个计数器,以便每次创建新实例时它都会增加 1?
例如我的实例 1、我的实例 2、我的实例 3 ...我的实例 X
提前致谢!
如果我理解正确,并且你是面向对象编程的:
您正在寻找一种名为 Factory
的设计模式,或者更简单地说,创建一个 static
成员,该成员将在 constructor
中增加,并将添加到名称 member
的 instance
个已创建。
在 Openstack HEAT 中,堆栈资源名称使用 stack_name 进行操作,并带有 short_id 后缀。这就是为什么在每个自动扩展的实例上您都可以看到这样的实例名称。这就是整个 HEAT 项目中的实现方式,无法定义以增量数字为后缀的实例名称。
您可以通过转到 Auto Scaling Groups and Tags 选项卡来设置自定义名称,然后使用键 "Name" 和值 "MyInstance" 添加标签。编号没有多大意义,因为您的实例将不断启动和终止。
2020 年 9 月 21 日更新:
到目前为止,创建增量数字似乎是不可能的,但我找到了实现我的目标的解决方法,所以post在这里希望能给你一些想法。
心态:
我试图找到一些与实例动态创建的东西(数字)以进行扩展,对我来说是 OS::Neutron::Port
,因此我在字符串后附加了 IP 地址的一部分以获得每个实例的独特名称.
解法:
1.Create 一个端口 OS::Neutron::Port
.
2.Get IP 地址使用 get_attr
.
3.Split 它以点作为分隔符使用 str_split
.
4.Append地址的一部分使用str_replace
.
示例代码:
lb_server.yaml
resources:
corey_port:
type: OS::Neutron::Port
properties:
network: { get_param: network }
fixed_ips:
- subnet: { get_param: subnet }
number:
type: OS::Heat::Value
properties:
value:
# 192.168.xxx.yyy => [192,168,xxx,yyy]
str_split: ['.', { get_attr: [corey_port, fixed_ips, 0, ip_address] }]
server:
type: OS::Nova::Server
properties:
name:
str_replace:
template: Corey-%last%
params:
# 0 1 2 3
#[192,168,xxx,yyy]
"last%": { get_attr: [number, value, 3] }
flavor: { get_param: flavor }
......
结果应该是Corey-168、Corey-50、Corey-254等
我创建了一个热堆栈,它根据 CPU 使用情况自动缩放。每次创建一个新实例时,它都会被赋予一个随机名称。
有没有办法设置一个特定的名称,并在其末尾添加一个计数器,以便每次创建新实例时它都会增加 1?
例如我的实例 1、我的实例 2、我的实例 3 ...我的实例 X
提前致谢!
如果我理解正确,并且你是面向对象编程的:
您正在寻找一种名为 Factory
的设计模式,或者更简单地说,创建一个 static
成员,该成员将在 constructor
中增加,并将添加到名称 member
的 instance
个已创建。
在 Openstack HEAT 中,堆栈资源名称使用 stack_name 进行操作,并带有 short_id 后缀。这就是为什么在每个自动扩展的实例上您都可以看到这样的实例名称。这就是整个 HEAT 项目中的实现方式,无法定义以增量数字为后缀的实例名称。
您可以通过转到 Auto Scaling Groups and Tags 选项卡来设置自定义名称,然后使用键 "Name" 和值 "MyInstance" 添加标签。编号没有多大意义,因为您的实例将不断启动和终止。
2020 年 9 月 21 日更新:
到目前为止,创建增量数字似乎是不可能的,但我找到了实现我的目标的解决方法,所以post在这里希望能给你一些想法。
心态:
我试图找到一些与实例动态创建的东西(数字)以进行扩展,对我来说是 OS::Neutron::Port
,因此我在字符串后附加了 IP 地址的一部分以获得每个实例的独特名称.
解法:
1.Create 一个端口 OS::Neutron::Port
.
2.Get IP 地址使用 get_attr
.
3.Split 它以点作为分隔符使用 str_split
.
4.Append地址的一部分使用str_replace
.
示例代码:
lb_server.yaml
resources:
corey_port:
type: OS::Neutron::Port
properties:
network: { get_param: network }
fixed_ips:
- subnet: { get_param: subnet }
number:
type: OS::Heat::Value
properties:
value:
# 192.168.xxx.yyy => [192,168,xxx,yyy]
str_split: ['.', { get_attr: [corey_port, fixed_ips, 0, ip_address] }]
server:
type: OS::Nova::Server
properties:
name:
str_replace:
template: Corey-%last%
params:
# 0 1 2 3
#[192,168,xxx,yyy]
"last%": { get_attr: [number, value, 3] }
flavor: { get_param: flavor }
......
结果应该是Corey-168、Corey-50、Corey-254等