Openstack Heat AutoScalingGroup в подсети в Juno

Я использую Openstack Heat с выпуском Juno и столкнулся с проблемой.

Я хочу использовать AutoScalingGroup, который будет автоматически создавать некоторые экземпляры в определенной подсети. Топология моей сети — это одна сеть со многими подсетями (каждый уровень находится в своей подсети).

Но это кажется невозможным с выпуском Juno, потому что мы не можем указать параметр подсети в OS::Nova::Server/networks. Документ находится здесь: http://docs.openstack.org/developer/heat/template_guide/openstack.html#OS::Nova::Server-prop-networks-*-subnet

Интересно, есть ли у кого-нибудь обходной путь для этого ограничения в Juno.

При создании отдельного сервера можно указать OS::Neutron::Port со ссылкой на подсеть. Но я не могу найти, как это сделать с помощью AutoScaling.

Спасибо заранее,

J.M.

РЕДАКТИРОВАТЬ: Текущий стек. Работает только с одним сервером, т.к. порт создается вне ОС:Heat::AutoScalingGroup

resources:
  instance_port:
   type: OS::Neutron::Port
   properties:
     name: { get_param : portName }
     network_id: { get_param: networkId }
     fixed_ips:
       - subnet_id: { get_param: subnetId }
     security_groups: { get_param: securityGroups }

  asg_group:
    depends_on: [ instance_port ]
    type: OS::Heat::AutoScalingGroup
    properties:
      ...
      resource:
        type: OS::Nova::Server
        properties:
          name: { get_param: asgName }
          ....
          networks:
            # TODO assign direct IP to the right subnet by decommenting this line. Will be available in Liberty
            #- subnet: { get_param: subnetId }  /!\ doesn't work in Juno
            - port: { get_resource : instance-port }  /!\ Works only with one server

person jmcollin92    schedule 15.02.2016    source источник


Ответы (1)


Решение состоит в том, чтобы использовать вложенный стек с описанной здесь функцией: http://docs.openstack.org/developer/heat/template_guide/composition.html#define-a-new-resource-type

У вас есть вложенный стек с портом и сервером, и вы ссылаетесь на этот стек в основной стек. Пример: основной стек

resources:

  asg_group:
    type: OS::Heat::AutoScalingGroup
    properties:
      min_size: { get_param: min }
      desired_capacity: { get_param: desired }
      max_size: { get_param: max }
      rolling_updates: {"max_batch_size": 1, "min_in_service": 2, "pause_time": 60}
      resource:
        type: "lib::AsgInstance"
        properties:
          appli: { get_param: appli }

вложенный стек:

resources:
  instance-port:
   type: OS::Neutron::Port
   properties:
     name: { get_param : portName }
     network_id: { get_param: networkId }
     fixed_ips:
       - subnet_id: { get_param: subnetId }
     security_groups: { get_param: securityGroups }

  instance:
    type: OS::Nova::Server
    properties:
      name: { get_param: instanceName }
      key_name: { get_param: keyName }
      image: { get_param: imageName }
      flavor: { get_param: flavorName }
      networks:
        # TODO assign direct IP to the right subnet by decommenting this line. Will be available in Liberty
        #- subnet: { get_param: subnetId }
        - port: { get_resource : instance-port }

и файл среды:

resource_registry:
  "lib::AsgInstance": lib/nestedstack.yaml
person jmcollin92    schedule 16.02.2016