Birkaç örnek gördüm, ancak IP'yi ec2 sürümlerini başlatma sonuçlarından çıkarmak başarısız oluyor. Herkesin bir fikri var mı? Iam kullanarak ynsel 2.0.1.0ec2 sonuçlarından Ansible set_fact kullanın.
3 farklı alt ağda 3 örneği başlatmak için görev aşağıdaki gibi düzgün şekilde çalışır.
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 }}"
ben hata ayıklama ve beklenen sonuç
TASK [debug]
ok: [localhost] => {
"msg": "10.1.100.190"
}
olsun Ama oyun kitabında Bundan sonraki bölüm başarısız olabilir.
- 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
Hata ayıklama sonuçları aşağıdaki gibidir. Ne yapacağından emin değilim.
fatal: [localhost]: FAILED! => {"failed": true, "msg": "list object has no element 1"}
Sadece son öğeyi yakaladım sanırım – Vor
Yineleme sırasında modül muhtemelen yalnızca bir öğe döndürecek, bu nedenle örneğe her zaman "örnekler [0]" olarak erişilmesi gerekir. ec2.results [2] .instances [0] .private_ip' – udondan