私はいくつかの例を見てきましたが、ec2のインスタンスを起動した結果からIPを設定するのは失敗しています。誰もがなぜアイデアを持っていますか? Iam in ansible 2.0.1.0ec2の結果から不可能なset_factを使用します。
3つの異なるサブネットで3つのインスタンスを起動するタスクは、次のように重要です。
tasks:
- name: elastic instance provisioning
local_action:
module: ec2
region: "{{ region }}"
key_name: "{{ key }}"
instance_type: "{{ instance_type }}"
image: "{{ image }}"
user_data: "{{ lookup('file', '/etc/ansible/host_vars/elasticsearch/user_data') }}"
key_name: "{{ key }}"
wait: yes
count: 1
group: ["{{ main_sg }}", "{{ jenkins_sg}}"]
instance_tags:
Name: elastic-test-cluster
class: database
environment: staging
vpc_subnet_id: "{{ item }}"
assign_public_ip: no
with_items:
- "{{ private_subnet_1 }}"
- "{{ private_subnet_2 }}"
- "{{ private_subnet_3 }}"
register: ec2
- debug: msg="{{ ec2.results[0].instances[0].private_ip }}"
私はデバッグすることができ、その結果
TASK [debug]
ok: [localhost] => {
"msg": "10.1.100.190"
}
しかし、失敗した脚本で、この次のパート予想ます。
- name: Add Ip for each Server
set_fact:
instance_private_ip0: "{{ ec2.results[0].instances[0].private_ip }}"
instance_private_ip1: "{{ ec2.results[1].instances[1].private_ip }}"
instance_private_ip2: "{{ ec2.results[2].instances[2].private_ip }}"
register: result
- debug: var=result
デバッグの結果は次のとおりです。それをどうするかわからない。
fatal: [localhost]: FAILED! => {"failed": true, "msg": "list object has no element 1"}
最終アイテムをキャプチャしていると思います。 – Vor
モジュールはたぶん1つのアイテムしか返さないため、インスタンスは常にインスタンス[0] 'としてアクセスされます。 'ec2.results [2] .instances [0] .private_ip' – udondan