我创建了一个热量堆栈,根据CPU的使用情况进行自动调整。每次创建新实例时,都会为其指定一个随机名称。
有没有办法设置一个特定的名称,并在其末尾添加一个计数器,这样每次创建一个新实例时它会增加1?
E.g。 Myinstance1,Myinstance2,Myinstance3 ... MyinstanceX
提前致谢!
答案 0 :(得分:0)
如果我理解正确,并且你是面向对象编程:
您正在寻找名为Factory
的设计模式,或者更简单地说,创建一个static
成员,该成员将在constructor
中增加,并将添加到名称{{1已创建的member
。
答案 1 :(得分:0)
在Openstack HEAT中,堆栈资源名称使用stack_name进行操作,并以short_id为后缀。这就是为什么在每个自动调整的实例上都可以看到实例名称。这是在整个HEAT项目中执行的方式,并且无法定义以增量编号为后缀的实例名称。
答案 2 :(得分:0)
您可以转到Auto Scaling组和标签选项卡,然后使用" Name"的键添加标签来设置自定义名称。以及" MyInstance"的价值。由于您的实例将不断启动和终止,因此编号没有多大意义。
答案 3 :(得分:0)
于21/09/2020更新:
到目前为止,似乎不可能创建一个增量数字,但是我找到了一种解决方法来实现自己的目标,因此请在此处发布,希望可以为您提供一些想法。
心态:
我尝试找到随实例动态创建的东西(即数字),用于扩展,对我来说是OS::Neutron::Port
,因此我将IP地址的一部分附加在字符串后,以为每个实例获取一个独特的名称
解决方案:
1.创建端口OS::Neutron::Port
。
2.使用get_attr
获取IP地址。
3.使用str_split
将点分隔为点。
4.使用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等