Anonymous Dynamic Inventory - menghasilkan inventaris dengan alamat ip di bawah tag tertentu dengan garis bawah, bukan titik

11

Saya baru mengenal Ansible. Ketika saya menggunakan ec2.pyinventaris dinamis untuk menghasilkan inventaris, setelah playbook selesai dijalankan, hasilnya ditampilkan sebagai daftar alamat IP di bawah tag tertentu dengan garis bawah, bukan titik. Misalnya saya ingin menjalankan buku pedoman pada contoh dengan tag tertentu, saya ingin tahu bagaimana orang lain bekerja dengan alamat IP?

---
- hosts: tag_test_staging
  sudo: true
  tasks:
  - name: Make sure that we can connect to the machine
    ping:

    PLAY RECAP *********************************************************************
    10_80_20_47                : ok=0    changed=0    unreachable=1    failed=0 

Untuk alamat pribadi, ec2.ini:

hostname_variable = private_ip_address
destination_variable = private_ip_address
vpc_destination_variable = private_ip_address

Hasil dari ec2.py:

 "tag_test_staging": [
    "10_80_20_47"
  ],

Untuk Alamat Publik, ec2.ini:

hostname_variable = ip_address
destination_variable = public_dns_name
vpc_destination_variable = ip_address

Hasil dari ec2.py:

 "tag_test_staging": [
    "52_28_11_11"
  ],
Berlin
sumber
Mengapa penting bagi Anda bahwa nama yang diberikan skrip masing-masing host memiliki garis bawah untuk karakter non-alfanumerik?
Assaf Lavie
Ini tampaknya menjadi pertanyaan sentris-alat yang sangat spesifik. Ada ServerFault untuk itu, dan pada topiknya ada serverfault.com/help/on-topic . Tidak yakin bagaimana pada topik di sini, jika sama sekali.
Evgeny
@ Evgeny, tidak yakin saya mengerti apa maksud Anda, apa gunanya http://devops.stackexchange.comjika Anda tidak bertanya? bukankah itu pertanyaan DevOps?
Berlin

Jawaban:

5

Ini berfungsi jika saya mengomentari hostname_variable, karena itu memungkinkan untuk menimpa inventory_name dengan variabel ec2, daripada menggunakan destination_variable

#hostname_variable = private_ip_address
#hostname_variable = ip_address
destination_variable = public_dns_name
vpc_destination_variable = private_ip_address

Untuk IP Pribadi:

destination_variable = private_ip_address
Berlin
sumber
Sayangnya, saya melihat perilaku yang sama, dan mengomentari hostname_variable tidak memperbaikinya.
Todd Walton
Namun .... Saya sudah beberapa kali memperhatikan bahwa mengganti file ini dan menjalankan kembali ec2.py tidak akan segera mengembalikan informasi yang benar. AF aneh, kan? Tetapi setelah beberapa kali mencobanya dan mencobanya dan mencobanya, setelah sekitar 20 menit tiba-tiba mulai mengembalikan alamat IP dengan titik-titik bukannya garis bawah! Saya tidak tahu.
Todd Walton
Apakah Anda tahu apa yang bisa saya lakukan jika saya ingin membuat suatu kondisi? mis. vpc_destination_variable: "{{ip_address if ec2_platform == 'windows' else private_ip_address}}"
Nimitack
0

Saya memiliki masalah yang sama. Saya mendapatkan kembali alamat ip dengan garis bawah, bukan titik. Tetapi saya sudah beberapa kali memperhatikan bahwa mengganti file ini dan menjalankan kembali ec2.py tidak akan segera mengembalikan informasi yang benar. Setelah saya berubah ke private_ip_address dan itu terus mengembalikan private_dns_name untuk sementara waktu. Kali ini, setelah berganti ke private_ip_address dan menjalankannya kembali beberapa kali - mencobanya dan mencobanya dan mencobanya - setelah sekitar 20 menit tiba-tiba mulai mengembalikan alamat IP dengan titik-titik alih-alih menggarisbawahi! Saya tidak tahu. AF aneh, kan?

Todd Walton
sumber
Kedengarannya seperti "masalah" caching. Sudahkah Anda mencoba mengubah parameter 'cache_max_age' di ec2.ini?
Malte
Anda mungkin sepenuhnya benar. Saya hanya melihat itu hari ini, sebenarnya. Anda dapat menjalankan "./ec2.py --refresh-cache".
Todd Walton