2017-11-02 12 views
0

私は一時的なEC2インスタンスを作成するための簡単なプレイプラウを作成しています。私は、この要約を受けた脚本を走った最初の時間 -以前に作成したホストを使用するのはなぜですか?

PLAY RECAP ********************************************************************* 
172.31.14.136    : ok=1 changed=0 unreachable=0 failed=0 
localhost     : ok=3 changed=1 unreachable=0 failed=0 

それは私が(ホストと無関係な)ので、私はマイナーな変更を行ったものを微調整したい実現し、再びそれを実行し、この要約を持って走った後 -

PLAY RECAP ********************************************************************* 
172.31.13.74    : ok=1 changed=0 unreachable=0 failed=0 
172.31.14.136    : ok=1 changed=0 unreachable=0 failed=0 
localhost     : ok=3 changed=1 unreachable=0 failed=0 

私のプレイブックは非常にシンプルで、2つのホスト(ローカルホストと新しく作成されたEC2インスタンスのip)のみが必要です。ここでは脚本がある - それは最初の実行172.31.14.136からIPがセカンドランに関与していることである理由

- name: Provision instance 
    hosts: localhost 
    vars_files: 
    - group_vars/test_ec2.yml 

    roles: 
    - { role: ec2_create, product: "tmp_instance_test" } 

- name: Configure SSH Authorized Keys 
    hosts: tmp_instance_test 
    vars_files: 
    - group_vars/test_ec2.yml 

    roles: 
    - { role: yarn } 

私の質問はありますか?ここで更新


は役割ec2_createある -

- name: Create instance 
    ec2: 
    image: "{{ image }}" 
    instance_type: "{{ instance_type }}" 
    aws_access_key: "{{ aws_access_key_id }}" 
    aws_secret_key: "{{ aws_secret_access_key }}" 
    key_name: "{{ key_name }}" 
    instance_tags: 
     Name: "{{ name }}" 
     Environment: "{{ env }}" 
     Product: "{{ product }}" 
     Service: "{{ service }}" 
    region: "{{ region }}" 
    volumes: 
     - device_name: "{{ disk_name }}" 
     volume_type: "{{ disk_type }}" 
     volume_size: "{{ disk_size }}" 
     delete_on_termination: "{{ delete_on_termination }}" 
    group: "{{ security_group_name }}" 
    wait: true 
    vpc_subnet_id: "{{ vpc_subnet_id }}" 
    count: "{{ instance_count }}" 
    monitoring: "{{ detailed_monitoring }}" 
    instance_profile_name: "{{ iam_role }}" 
    assign_public_ip: "{{ assign_public_ip }}" 
    register: ec2 

- name: Wait for SSH to come up 
    wait_for: host={{ item.private_ip }} port=22 timeout=600 state=started 
    with_items: "{{ ec2.instances }}" 

- name: refresh inventory 
    meta: refresh_inventory 

アップデート2

インベントリ -

[localhost] 
localhost ansible_ssh_user=deployer ansible_connection=local ansible_python_interpreter=/usr/bin/python 

[tag_Product_tmp_instance_test] 
[tmp_instance_test:children] 
tag_Product_tmp_instance_test 
[tmp_instance_test:vars] 
ansible_ssh_user=ubuntu 
ansible_ssh_private_key_file=~/.ssh/BaseDev 
+0

'ec2_create'ロールの中身は誰が知っていますか? –

+0

@ ConstantinSuvorov私はec2_createロール –

+0

で質問を更新しました。もう一つの推測です:あなたは 'ec2.py'のようなものによって生成された動的インベントリを使用していますか? –

答えて

1

は、このようにtmp_instance_testグループに属しているmeta: refresh_inventoryを使用すると、在庫の更新を強制し、以前のサーバ(あなたの例では172.31.14.136)はAWSアカウントでまだ生きているならば、それはあなたの検索条件(tag_Product_tmp_instance_test)にマッチします。

ec2_createロールで作成されたホストを終了しないと、それらはすべて後続のプレイブックの実行時にインベントリに表示されます。

+0

ちょうどキャッシュを見て、これを見ました、これはまさに起こっていることです。ありがとうございました。 –

関連する問題