2016-05-07 13 views
0

Ich bin auf der Suche nach der besten Möglichkeit, einen Stapel zu erstellen, in einer Reihe von separaten Schritten.Openstack Heat - separate Vorlagen

Ich möchte in der ersten Vorlage, nur auf die Rechenknoten und die Netzwerkkonfiguration aufstehen.

In der zweiten Vorlage möchte ich die Speicherknoten erstellen und sie an die bereits vorhandenen Rechenknoten anfügen.

Was denken Sie, ist der beste Weg, dies zu tun?

Antwort

1

Folgendes ist ein möglicher Ansatz.

1) Definieren Sie die erste Vorlage für Ihre Rechenknoten und Netzwerkkonfiguration. Definieren Sie jedoch Ausgaben in Ihrer ersten Vorlage, um Ihre Rechenknoten-IDs anzuzeigen. Zum Beispiel, wenn Sie ein O :: Nova :: Server mit dem Namen mynode1 erstellen, können Sie die ID als der Ausgang für diese Vorlage belichten wie folgt:

outputs: 
    mynode1_id: 
    description: ID of mynode1 
    value: {getattr: [mynode1, id]} 

Sobald Sie einen Wärme Stapel instanziiert, sagt mystack1, mit diese erste Vorlage, dann können Sie die ID von mynode1 Zugriff wie folgt:

heat output-show mystack1 mynode1_id 

2) erstellen Sie Ihre zweite Vorlage für die Speicherung mit IDs Ihres Rechenknoten aus Schritt 1 als Eingangsparameter. Zum Beispiel:

parameters: 
    mynode1_id: 
    type: string 
    description: ID for mynode1 

Dann können Sie das in Ihrer verwenden "Ressourcen" Abschnitt wie folgt:

resources: 
    ... 
    ... 
    my_volume_attach: 
    type: OS::Cinder::VolumeAttachment 
    properties: 
     instance_uuid: {get_param: mynode1_id} 
     ... 

3) Ihre zweite Wärme Stapel Schöpfung Invoke wie folgt:

heat stack-create -f second-template.yaml -P mynode1_id=`heat output-show mystack1 mynode1_id` mystack2 
0

Sie können auch Abhängigkeiten zwischen Ihren Ressourcen definieren, mit dem Attribut depends_on Attribut. Aus Ihrer Beschreibung scheint es nicht wie die Verwendung mehrerer Vorlagen ist die richtige Lösung.

zum Beispiel - wenn Sie 3,4 nach Objekten erstellt Objekte wollen 1,2, eine Vorlage definieren, wie folgt:

heat_template_version: '2015-10-15' 
parameters: 
    param1: 
     type: string 
     description: just an example of parameter 
resources: 
object1: 
    type: OS::Neutron::XXX 
    properties: 
    property: XXX 
    description: object1 
object2: 
    type: OS::Neutron::XXX 
    properties: 
    property: XXX 
    description: object2 
object3: 
    type: OS::Nova::XXX 
    properties: 
    property: XXX 
    description: object3 
    depends_on: object1 
object4: 
    type: OS::Nova::XXX 
    properties: 
    property: XXX 
    description: object4 
    depends_on: object1