รูปแบบสินค้าคงคลังที่สร้างแหล่งที่มาของความจริงคือการสอบถามกลุ่มเหล่านี้จากบางระบบ สิ่งที่ซับซ้อนกว่าสตริงในชื่อ DNS
ตัวอย่างเช่น ระบบฐานข้อมูลสินค้าคงคลัง netbox มีบทบาทอุปกรณ์ที่เหมาะสม ไม่ต้องเลือก netbox แต่มีปลั๊กอินสินค้าคงคลัง Ansible และโมเดลฐานข้อมูลแบบเปิดจึงง่ายต่อการพูดถึง
อย่างไรก็ตาม อาจยังไม่มีฐานข้อมูลภายนอกที่ดี สามารถสร้างรูปแบบการตั้งชื่อปกติได้ ด้วยปลั๊กอินสินค้าคงคลัง Ansible ที่เรียกซ้ำได้มากที่สุด ตัวสร้าง:
# สินค้าคงคลัง.yml
ปลั๊กอิน: เครื่องกำเนิดไฟฟ้า
เจ้าภาพ:
ชื่อ: "{{ แอปพลิเคชัน }}{{ หมายเลข }}.{{ สภาพแวดล้อม }}.example.com"
ผู้ปกครอง:
- ชื่อ: "{{ แอปพลิเคชัน }}_{{ สภาพแวดล้อม }}"
ผู้ปกครอง:
- ชื่อ: "{{ แอปพลิเคชัน }}"
วาร์:
แอปพลิเคชัน: "{{ แอปพลิเคชัน }}"
- ชื่อ: "{{ สภาพแวดล้อม }}"
วาร์:
สภาพแวดล้อม: "{{ สภาพแวดล้อม }}"
ชั้น:
แอปพลิเคชัน:
- แอป
- เอพีไอ
สิ่งแวดล้อม:
- ผู้พัฒนา
- Qa
- อวด
- ผลิตภัณฑ์
ตัวเลข:
- "01"
- "02"
- "05"
ชื่อเลเยอร์เป็นชื่อตามอำเภอใจกำหนดราก "โฮสต์" และสัญกรณ์ "ผู้ปกครอง" ชื่อที่เยื้องลึกกว่าคือกลุ่มที่มีชื่อภายนอก
ansible-inventory -i สินค้าคงคลัง.yml --list
จะพิมพ์โฮสต์ในเอกสาร JSON สินค้าคงคลังของ Ansible เอาต์พุตบางส่วน:
{
"_meta": {
"โฮสต์วาร์": {
"app05.qa.example.com": {
"แอปพลิเคชัน": "แอปพลิเคชัน",
"สิ่งแวดล้อม": "qa"
}
}
},
"app_qa": {
"โฮสต์": [
"app01.qa.example.com",
"app02.qa.example.com",
"app05.qa.example.com"
]
},
"แอป": {
"เด็ก": [
"app_dev",
"app_prod",
"app_qa",
"app_uat"
]
},
"กา": {
"เด็ก": [
"api_qa",
"app_qa"
]
},
}
และดำเนินการต่อไปสำหรับชุดค่าผสมอื่น ๆ
สังเกตว่ามันทำ:
- กลุ่ม "แอปพลิเคชัน"
- กลุ่ม "สิ่งแวดล้อม"
- กลุ่มการรวมกัน "สภาพแวดล้อมของแอปพลิเคชัน"
- ชื่อโฮสต์ที่สอดคล้องกับรูปแบบชื่อ DNS
- vars ที่มี "แอปพลิเคชัน" และ "สภาพแวดล้อม" สำหรับแต่ละโฮสต์
ข้อจำกัดของปลั๊กอินนี้รวมถึง:
ทำผลิตภัณฑ์คาร์ทีเซียนของการรวมเลเยอร์เสมอ ไม่สามารถมีกลุ่มใดกลุ่มหนึ่งมากหรือน้อยได้ หรือเริ่มโครงร่างการกำหนดหมายเลขด้วยค่าที่แตกต่างกัน
ไม่มีช่วงโฮสต์ที่กะทัดรัด ไวยากรณ์ [01:25] หรือฟังก์ชัน range() ไม่ทำงาน พิจารณาร้องขอโดยยื่นเรื่อง เพื่อเป็นการแก้ปัญหา ตัวเลขหลายสิบตัวในไฟล์ปรับแต่งจะทำงานได้