1

ansible の ec2_vol モジュールを使用して ebs ボリュームを作成しました。ソース コードを確認したところ、ユーザー指定のパラメーターを使用して boto の create_volume() メソッドを内部的に呼び出していることがわかりました。ec2_vol モジュールの戻り値を登録し、新しく作成したボリュームの volume_ids を取得したい。

今のところ、私のプレイブックは次のようになっています

- name: Attach a volume to previously created instances
  local_action: ec2_vol instance={{item.id}} volume_size=5 aws_access_key={{aa_key}} aws_secret_key={{as_key}} region={{region}}
  with_items: ec2.instances
  register: ec2_volumes
  ignore_errors: yes

- name: Stop the instances
  local_action: command aws ec2 stop-instances --profile=xervmon --instance-id={{item.id}}
  with_items: ec2.instances
  ignore_errors: yes

- name: Detach volume from instances
  local_action: command aws ec2 detach-volume --profile=xervmon --volume-id=????                                                
  ignore_errors: yes

新しく作成されたボリュームのボリューム ID を取得する方法を知りたいです。run_instances() メソッドの戻りオブジェクトには、インスタンスのリストを含む属性インスタンスがあることがわかりました。しかし、create_volume() メソッドの戻り値に関する適切なドキュメントが見つかりませんでした。

どんな助けでも大歓迎です。

ありがとう、

4

1 に答える 1

8

ec2_vol モジュールのソース コード によると、モジュールは次を返します。

  • volume_id
  • device

あなたの場合、with_items を介して複数のボリュームを作成しているため、ec2_volumes登録する変数resultsは、個々の ec2_vol 呼び出しのそれぞれからの結果のリストを保持するという名前のキーを持つ辞書になります。

ボリューム ID を出力する例を次に示します (警告: これはテストしていません)。

- name: Attach a volume to previously created instances
  local_action: ec2_vol instance={{item.id}} volume_size=5 aws_access_key={{aa_key}} aws_secret_key={{as_key}} region={{region}}
  with_items: ec2.instances
  register: ec2_volumes

- name: Print out the volume ids
  debug: msg={{ item.volume_id }}
  with_items: ec2_volumes.results
于 2013-09-18T12:43:22.373 に答える