Ansible Dynamic Inventory - สร้างสินค้าคงคลังด้วยที่อยู่ IP ภายใต้แท็กเฉพาะที่มีขีดล่างแทนจุด


11

ฉันใหม่กับ Ansible เมื่อฉันใช้ec2.pyสินค้าคงคลังแบบไดนามิกเพื่อสร้างสินค้าคงคลังหลังจาก playbook เสร็จสิ้นการทำงานผลลัพธ์จะแสดงเป็นรายการที่อยู่ IP ภายใต้แท็กเฉพาะที่มีขีดล่างแทนที่จะเป็นจุด ตัวอย่างเช่นฉันต้องการเรียกใช้ playbook ในกรณีที่มีแท็กเฉพาะฉันสงสัยว่าคนอื่นทำงานกับที่อยู่ 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 

สำหรับที่อยู่ส่วนตัว ec2.ini:

hostname_variable = private_ip_address
destination_variable = private_ip_address
vpc_destination_variable = private_ip_address

ผลลัพธ์จาก ec2.py:

 "tag_test_staging": [
    "10_80_20_47"
  ],

สำหรับที่อยู่สาธารณะ, ec2.ini:

hostname_variable = ip_address
destination_variable = public_dns_name
vpc_destination_variable = ip_address

ผลลัพธ์จาก ec2.py:

 "tag_test_staging": [
    "52_28_11_11"
  ],

ทำไมจึงมีความสำคัญกับคุณว่าชื่อสคริปต์ให้แต่ละโฮสต์มีขีดล่างสำหรับอักขระที่ไม่ใช่ตัวอักษรและตัวเลข?
Assaf Lavie

นี่ดูเหมือนจะเป็นคำถามที่เน้นเครื่องมือเป็นพิเศษ มี ServerFault สำหรับการนั้นและในวันที่มีหัวข้อserverfault.com/help/on-topic ไม่แน่ใจว่าในหัวข้อที่นี่ถ้าทั้งหมด
Evgeny

@Evgeny ไม่แน่ใจว่าฉันเข้าใจสิ่งที่คุณหมายถึงอะไรคือสิ่งที่http://devops.stackexchange.comถ้าคุณไม่ถามคำถาม? ไม่ใช่คำถาม DevOps?
เบอร์ลิน

คำตอบ:


5

ใช้งานได้ถ้าฉันใส่เครื่องหมายข้อคิดเห็น hostname_variable เพราะอนุญาตให้ลบล้าง inventory_name ด้วยตัวแปร ec2 แทนการใช้ destination_variable

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

สำหรับ IP ส่วนตัว:

destination_variable = private_ip_address

อนิจจาฉันเห็นพฤติกรรมเดียวกันและการแสดงความคิดเห็น hostname_variable ไม่ได้แก้ไข
ทอดด์วอลตัน

อย่างไรก็ตาม .... ฉันมีหลายครั้งที่พบว่าการเปลี่ยนไฟล์ ini และการเรียกใช้ ec2.py อีกครั้งจะไม่ส่งคืนข้อมูลที่ถูกต้องทันที AF แปลก ๆ ใช่มั้ย แต่หลังจากผ่านไปหลาย ๆ ครั้งลองแล้วลองแล้วลองอีกครั้งหลังจากนั้นประมาณ 20 นาทีก็เริ่มส่งคืนที่อยู่ IP ด้วยจุดแทนการขีดล่าง! ไม่รู้สินะ.
ทอดด์วอลตัน

คุณรู้หรือไม่ว่าฉันจะต้องทำอย่างไรหากฉันต้องการสร้างเงื่อนไข เช่น vpc_destination_variable: "{{ip_address if ec2_platform == 'windows' else private_ip_address}}"
Nimitack

0

ฉันมีปัญหาเดียวกัน ฉันได้รับที่อยู่ IP ด้วยการขีดเส้นใต้แทนจุด แต่ฉันมีหลายครั้งที่สังเกตเห็นว่าการเปลี่ยนไฟล์ ini และการเรียกใช้ ec2.py ใหม่จะไม่ส่งคืนข้อมูลที่ถูกต้องทันที เมื่อฉันเปลี่ยนเป็น private_ip_address และมันกลับมาเป็น private_dns_name ชั่วครู่หนึ่ง เวลานี้หลังจากเปลี่ยนเป็น private_ip_address และเรียกใช้ซ้ำหลาย ๆ ครั้ง - ลองใช้แล้วลองใหม่และลองอีกครั้งหลังจากผ่านไปประมาณ 20 นาทีมันก็เริ่มส่งคืนที่อยู่ IP ด้วยจุดแทนที่จะเป็นขีดล่าง! ไม่รู้สินะ. AF แปลก ๆ ใช่มั้ย


ดูเหมือนว่า "ปัญหา" ในการแคช คุณได้ลองเปลี่ยนพารามิเตอร์ 'cache_max_age' ใน ec2.ini หรือไม่
malte

คุณอาจพูดถูก วันนี้ฉันแค่ดูที่จริง คุณสามารถเรียกใช้ "./ec2.py --refresh-cache"
ทอดด์วอลตัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.