0

私は完全な環境を設定しています。何らかの理由で、変数値を取得していない可能性があります。 私はregister: ec2_vpcと私のVPCを登録している:私はここにansible 2.1.1.0アシスタント:同じプレイブック内の他のプレイで使用するレジスタ変数から値を抽出します

を使用してい

は、私が何をしようとしているのストリップ例です。

1. #This didn't works 
    - name: Add to host vars 
     add_host: 
      name: vpc_vars 
      groups: vpc_subnets 
      vpc_subnet_id: "{{ ec2_vpc.subnets[0].id }}" 
      vpcid: "{{ ec2_vpc.vpc_id }}" 
    - debug: var=vpc_subnet_id 
    - debug: var=vpcid 

2. These works 
    - name: Record vpc id 
     debug: var=ec2_vpc.vpc_id 

    - name: Record subnet id 
     debug: var=ec2_vpc.subnets[0].id 

は、私の上記ストリップのJSONを結果:

TASK [debug] ******************************************************************* 
ok: [localhost] => { 
    "vpc_subnet_id": "VARIABLE IS NOT DEFINED!" 
} 

TASK [debug] ******************************************************************* 
ok: [localhost] => { 
    "vpcid": "VARIABLE IS NOT DEFINED!" 
} 

TASK [Record vpc id] *********************************************************** 
ok: [localhost] => { 
    "ec2_vpc.vpc_id": "vpc-4sdh3832f" 
} 

TASK [Record subnet id] ******************************************************** 
ok: [localhost] => { 
    "ec2_vpc.subnets[0].id": "subnet-edfjdh3482" 
} 

は、なぜ私の最初の構文は、その更新VARIABLE IS NOT DEFINED!

を与える代わりに、値を摘みされていません。ここに私の2番目の構文は、私が正しくています説明登録された変数のJSON結果から値をソートします。しかし、私はそれが私は動的な在庫にホスト変数を追加することを意味する私の最初の構文のために動作します。私は別のプレイでそれを再利用することができるように

+0

新しいホスト名に 'vpc subnets'とグループ名' vpc_vars'(何のために?)を追加するので、最初の構文は機能しません... 'vpc_vars'グループに対して後続の再生を実行すると、見えるようにする。私はあなたがこれで達成しようとしていることを理解できません。 –

答えて

1

add_hostあなたの在庫にホストを動的に追加します。
私はあなただけset_factが必要推測:

- name: Add to host vars 
    set_fact: 
     vpc_subnet_id: "{{ ec2_vpc.subnets[0].id }}" 
     vpcid: "{{ ec2_vpc.vpc_id }}" 
- debug: var=vpc_subnet_id 
- debug: var=vpcid 
+0

はいホストを動的にインベントリに追加したいと思います。私は別のプレイでそれを再利用できるように。 'set_fact'は私が割り当てた変数に保存します。動的ホストインベントリに保存するとうまくいくでしょう。 –

+1

質問自体にあなたの仕事を記述することをお勧めします。 'set_fact'と' add_host'は異なる目的のためです。 'hostvars'変数を介して他のホストの変数にいつでもアクセスすることができます。 –

+0

'hostvars'は私が望むやり方で私を助けます。ありがとう –

1

あなたは、あなたがそれvpc_subnet_idvpcid得ることができますどのように、その後ec2_vpcであなたの戻り値/結果を登録していることを言ったように。あなたはこれを取得したい、このようにする必要があります:

- set_fact: 
    vpc_subnet_id: "{{ ec2_vpc.subnets[0].id }}" 
    vpcid: "{{ ec2_vpc.vpc_id }}" 

あなたを助けることを望みます。

+0

私は結果を変数 'vpc_subnet_id'または' vpcid'に保存しようとしています。私は別のプレイで再利用できるように。 –

+0

もう1つは、値をファイルに保存してから動的にインクルードすることです –

関連する問題