2016-08-23 4 views
0

私の新しく作成したec2インスタンスの "private_dns_name"を、私の不可解なプレイブックの他のホストに渡したいと思います。私は変数を定義するためにset_factモジュールを使ってみましたが、運はありません!これは私が私の他のホスト2にprivate_dns_nameをつかむために、サンプルコードの下に使用していますset_factを定義した後host1のあるホストから別のホストにec2変数を渡す方法

- name: new EC2 instance 
    hosts: host1 
    tasks: 
    - name: Launch the new EC2 Instance 
     ec2: 
     aws_access_key: "{{ aws_id }}" 
     aws_secret_key: "{{ aws_key }}" 
     group_id: "{{ security_group_id }}" 
     instance_type: "{{ instance_type }}" 
     image: "{{ image }}" 
     key_name: "{{ ssh_keyname }}" 
     wait: yes 
     wait_timeout: 900 
     region: "{{ region }}" 
     count: 1 
     instance_tags: 
     Name: Prod-Engineering 
     register: ec2 
    - name: Register public DNS fact 
     set_fact: public_dns= "{{ item.private_dns_name }}" 
     with_items: ec2.instances 

ためansible脚本エントリです:

- hosts: host2 
    become: yes 
    tasks: 
    - command: ipa host-add "{{ public_dns}}" --password=xxxxx 

しかし、私は、ときpublic_dns変数定義されていないエラーを取得しています私のプレイブックを実行する。どのように私は新しく作成されたec2インスタンスから別の他のホスト/ ec2インスタンスに変数を取得/渡すことができますか?

答えて

0

、他のホストアクセスmagic variables ansible使用するの事実を:

- hosts: host2 
    become: yes 
    tasks: 
    - command: ipa host-add "{{ hostvars['host1']['public_dns'] }}" --password=xxxxx 
+0

おかげコンスタンチンが、今私は取得しています私の脚本でエラー 『『ansible.vars.hostvars.HostVarsオブジェクトが』何の属性を持っていません』。私は –

+0

ありがとうKonstantinを追加しようとしましたが、今は "ansible.vars.hostvars.HostVarsオブジェクトに属性がありません"というエラーが発生しています。私は追加しようとしました - デバッグ:var = hostvars& - デバッグ:msg = "{{hostvars}}" host1の下でも運も。ここで何が問題になるのでしょうか?再度、感謝します!! –

+0

@DeepakPrasadまず、この記法で等号の後にスペースを使用することはできません。 'debug:msg =" {{hostvars}} "'を使用してください。 'set_fact:public_ip = ...'のこのスペースでは、public_ipは常に空です。しかし、 'hostvars'が定義されていないと、あなたの設定に何か問題があります。常に利用できるはずです。 –

関連する問題