2016-05-07 10 views
0

私は、スタックを作成する最良の方法をいくつかの別々のステップで探しています。Openstack Heat - separate templates

最初のテンプレートでは、コンピューティングノードとネットワーク構成を取得するだけです。

2番目のテンプレートでは、ストレージノードを作成して既存の計算ノードに接続したいと考えています。

これを行うにはどうすればよいと思いますか?

答えて

1

次のアプローチが考えられます。

1)計算ノードとネットワーク構成の最初のテンプレートを定義します。しかし、計算ノードIDを公開するために、最初のテンプレートの出力を定義します。あなたは熱スタックをインスタンス化したら

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

、mystack1、と言って:あなたはOS ::名前mynode1とノヴァ::サーバーを作成する場合、そのテンプレートの出力は次のようにのようにたとえば、あなたがそのIDを公開することができます次のようにこの最初のテンプレートは、その後、あなたはmynode1のIDにアクセスすることができます。

heat output-show mystack1 mynode1_id 

2)は、入力パラメータとしてSTEP1から計算ノードのIDを持つストレージのためにあなたの2番目のテンプレートを作成します。たとえば:

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

を次のセクションとして次のよう

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

3)あなたの第二の熱スタックの作成を起動します。

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

次に、あなたの "資源" であることを使用することができますdepends_on属性を使用して、リソース間にの依存関係を定義することもできます。 あなたの説明から、複数のテンプレートを使用するのは正しい解決策ではないようです。例えば

- あなたは3,4のオブジェクト1,2の後に作成されたオブジェクト次のように、テンプレートを定義することができますしたい場合:

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 
関連する問題