1

我创建了一个热堆栈,它根据 CPU 使用情况自动缩放。每次创建新实例时,都会给它一个随机名称。

有没有办法设置一个特定的名称,并在其末尾添加一个计数器,以便每次创建一个新实例时它都会增加 1?

例如,Myinstance1、Myinstance2、Myinstance3 ... MyinstanceX

提前致谢!

4

4 回答 4

1

在 Openstack HEAT 中,堆栈资源名称使用 stack_name 进行操作,并以 short_id 为后缀。这就是为什么在每个自动扩展的实例上,您都可以看到实例名称。这就是在整个 HEAT 项目中的实现方式,并且无法定义以递增编号为后缀的实例名称。

于 2016-10-14T02:25:50.887 回答
0

您可以通过转到 Auto Scaling 组和标签选项卡来设置自定义名称,然后添加键为“名称”且值为“MyInstance”的标签。编号没有多大意义,因为您的实例将不断启动和终止。

于 2016-10-14T09:05:57.890 回答
0

如果我对您的理解正确,并且您是面向对象的编程:

您正在寻找一种名为 的设计模式Factory,或者更简单地说,创建一个static将在 中增加的成员,并将constructor添加到创建的名称memberinstance

于 2016-10-13T09:23:41.707 回答
0

2020 年 9 月 21 日更新:

似乎到目前为止创建增量数字是不可能的,但我找到了实现我的目标的解决方法,所以在这里发布希望能给你一些想法。

心态:
我试图找到与实例一起动态创建的用于扩展的东西(数字),对我来说就是OS::Neutron::Port这样,所以我在字符串后面附加了 IP 地址的一部分,以便为每个实例获取一个独特的名称。

解决方案:
1.创建一个端口OS::Neutron::Port
2.获取IP地址使用get_attr
3.Split 使用点作为分隔符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 等。

于 2020-09-18T08:24:11.373 回答