นี่เป็นคำถามที่กว้างขวางเกี่ยวกับวิธีการและคำแนะนำเกี่ยวกับตัวแปร / โครงสร้างสภาพแวดล้อม แต่ท้ายที่สุดฉันกำลังมองหาคำตอบสำหรับคำถามที่เฉพาะเจาะจงของ 'ฉันจะเก็บตัวแปรสภาพแวดล้อมของฉันได้อย่างไร'
ประการแรกการชี้แจงบางอย่าง:
- สภาพแวดล้อมสำหรับฉันอาจมาจากเซิร์ฟเวอร์ 3 ถึง 10 ตัวและเป็นวิธีที่มีโครงสร้างพื้นฐานของลูกค้าเฉพาะราย
- ภายในแต่ละสภาพแวดล้อมมีตัวแปรบางตัวที่ส่วนใหญ่สร้างขึ้นโดยอัตโนมัติจากอินพุตคีย์บางตัว (ชื่อ, ขนาดและอื่น ๆ )
เนื่องจากมันอยู่ในขณะนี้เรากำลังเก็บตัวแปรสภาพแวดล้อมของเราทั้งหมดในโครงสร้างดังนี้:
<playbook>.yml # Various playbooks for deployment
roles/windows # Ansible role for Ubuntu
roles/ubuntu # Ansible role for Ubuntu
config/hosts/<name>.yml # Ansible inventory
config/hosts/vars/<name>.json # Environment specific variables
ตอนนี้การกำหนดค่าจะเริ่มต้นเป็น submodule ในที่เก็บ git ข้างต้น เนื่องจากไฟล์ตัวแปรเปลี่ยนแปลงค่อนข้างบ่อยสิ่งนี้ทำให้เกิดปัญหากับการเปลี่ยนแปลงข้อมูลครั้งเดียวสองครั้งหรือแม้กระทั่งสามครั้งระหว่างกระทำการเปลี่ยนแปลงยากที่จะติดตามมากขึ้น
ในฐานะที่ผมเองเห็นมันก้าวไปข้างหน้าเราควรจะมองในการจัดเก็บตัวแปรลูกค้าของเราทั้งหมดในศูนย์กลางทาง / ปรับขนาดได้และแล้วเบ็ดลงไปกับสินค้าคงคลังแบบไดนามิกที่มีเบิ้ล
ฉันเข้าใจว่ามีเทคโนโลยีบางอย่างที่ดูเหมือนจะเป็นส่วนหนึ่งของสิ่งที่อาจจำเป็นต้องใช้เช่นกงสุล แต่พวกเขาดูเหมือนจะทำงานได้ดีที่สุดในสภาพแวดล้อมที่ให้บริการแอปพลิเคชันขนาดใหญ่มากกว่าที่เล็กกว่าเล็กน้อย
ฉันเห็นว่าเราต้องเขียนสคริปต์คลังข้อมูลจากนั้นก็ดันข้อมูลทั้งหมดของเราลงในฐานข้อมูลที่สร้างขึ้นมาเพื่อวัตถุประสงค์บางอย่างแล้วจึงดำเนินต่อไปราวกับว่าไม่มีอะไรเปลี่ยนแปลง ฉันเห็นว่าสิ่งนี้น่าจะเป็นวิธีหนึ่งที่จะลดทอนข้อมูลจำนวนมากที่เราเก็บไว้ในปัจจุบันและอาจดูวิธีการจัดเก็บข้อมูลที่แตกต่างกันมากกว่าที่จะขยายสิ่งที่ให้บริการอีกครั้ง
ฉันหวังว่าจะมีใครบางคนมีประสบการณ์บางอย่างในการใช้โครงสร้างพื้นฐานเป็นรหัสเมื่อต้องรับมือกับสภาพแวดล้อมขนาดเล็กจำนวนมากเมื่อเทียบกับขนาดใหญ่ที่หนึ่งสองหรือสาม
ข้อเสนอแนะใด ๆ