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インスタンスに変数を取得/渡すことができますか?
おかげコンスタンチンが、今私は取得しています私の脚本でエラー 『『ansible.vars.hostvars.HostVarsオブジェクトが』何の属性を持っていません』。私は –
ありがとうKonstantinを追加しようとしましたが、今は "ansible.vars.hostvars.HostVarsオブジェクトに属性がありません"というエラーが発生しています。私は追加しようとしました - デバッグ:var = hostvars& - デバッグ:msg = "{{hostvars}}" host1の下でも運も。ここで何が問題になるのでしょうか?再度、感謝します!! –
@DeepakPrasadまず、この記法で等号の後にスペースを使用することはできません。 'debug:msg =" {{hostvars}} "'を使用してください。 'set_fact:public_ip = ...'のこのスペースでは、public_ipは常に空です。しかし、 'hostvars'が定義されていないと、あなたの設定に何か問題があります。常に利用できるはずです。 –