0

いくつかの個別のステップで、スタックを作成する最良の方法を探しています。

最初のテンプレートで、計算ノードとネットワーク構成のみを取得したいと思います。

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

これを行うための最良の方法は何だと思いますか?

4

2 に答える 2

1

以下は、考えられるアプローチの 1 つです。

1) 計算ノードとネットワーク構成の最初のテンプレートを定義します。ただし、最初のテンプレートで出力を定義して、コンピューティング ノード ID を公開します。たとえば、OS::Nova::Server を mynode1 という名前で作成する場合、その ID をそのテンプレートの出力として次のように公開できます。

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

この最初のテンプレートを使用して、mystack1 などの Heat スタックをインスタンス化すると、次のように mynode1 の ID にアクセスできます。

heat output-show mystack1 mynode1_id

2) ステップ 1 の計算ノードの ID を入力パラメーターとして使用して、ストレージ用の 2 番目のテンプレートを作成します。例えば:

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

次に、次のように「resources:」セクションでそれを使用できます。

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

3) 次のように、2 番目のヒート スタックの作成を呼び出します。

heat stack-create -f second-template.yaml -P mynode1_id=`heat output-show mystack1 mynode1_id` mystack2
于 2016-05-09T02:07:21.070 に答える
0

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

たとえば、オブジェクト 1、2 の後にオブジェクト 3、4 を作成する場合は、次のようにテンプレートを定義できます。

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
于 2017-05-03T07:53:42.327 に答える