Mi az a Packer?
Hogyan működik
Packer használata
Régió, terv és operációs rendszer meghatározása
Mi az a Packer?
A Packer egy szerver képalkotó eszköz, amelyet a HashiCorp fejlesztett ki. Szerver képalkotás; vagy változatlan infrastruktúra; a futásidejű konfigurációs eszközök, például az Ansible vagy a Puppet népszerű alternatívája. Ez azon az elgondoláson alapul, hogy a szerver telepítése után soha nem módosíthatja azt; ehelyett egy új kiszolgálót telepít a változtatásokkal, majd lebontja a régit. Ez megkönnyíti a szerver karbantartását, és lehetővé teszi a nagyszámú gépen történő hatékonyabb skálázást.
Noha a Packer nem támogatja a Vultr-t a dobozból, van egy bővítmény, amely hozzáadja ezt a támogatást. A Vultr támogatással rendelkező Packer telepítésére vonatkozó utasítások a bővítmény README oldalán találhatók. A cikk további része feltételezi, hogy telepítve van a Packer, valamint a Vultr beépülő modul.
Hogyan működik
A Packer célja szerverképek vagy műtermékek előállítása, amelyek segítségével pontosan olyan új szervert lehet létrehozni, amilyen a képalkotás idején volt. A Vultr esetében ezeket a műtermékeket pillanatképeknek nevezik. A beépülő modul úgy működik, hogy üzembe helyez egy új VPS-t, futtatja rajta a meghatározott szolgáltatókat, pillanatképet készít róla, majd lebontja a VPS-t. Ha új kiszolgálót szeretne létrehozni a képfájlból, egyszerűen hívja a Vultr API-ját, hogy telepítsen egy új VPS-t a kívánt pillanatfelvétel operációs rendszerével.
Packer használata
A Packer elővesz egy JSON-fájlt, amely meghatározza azt a buildet, amelyet bemenetként kell futtatnia. Itt van egy mintafájl, amely meghatározza a Vultr buildet:
{
"variables": {
"vultr_api_key": "{{env `VULTR_API_KEY`}}"
},
"builders": [
{
"type": "vultr",
"api_key": "{{user `vultr_api_key`}}",
"snapshot_description": "My Awesome App",
"region_id": "2",
"plan_id": "201",
"os_id": "167",
"ssh_username": "root"
}
]
}
Ennek a fájlnak két legfelső szintű kulcsa van, variablesés builders. A variableskulcs az egyéni változók meghatározására szolgál, és ebben az esetben a VULTR_API_KEYkörnyezeti változó későbbi felhasználásra alkalmas módon történő beépítésére szolgál. A builderskulcs tartalmazza a futtatandó buildek listáját, ebben az esetben csak a Vultr buildünket. Bontsuk egy kicsit ezt az építményt:
type: Ez határozza meg a ténylegesen használandó buildert, és a Vultr buildeknél ennek mindig vultr.
api_key: A build futtatásához API-kulcsra van szükség, amelyet itt definiálunk. Ez a példa a vultr_api_keyfelhasználói változó értékeként definiálja , amely tovább feljebb a VULTR_API_KEYkörnyezeti változó értékére van beállítva .
snapshot_description: Az eredményül kapott pillanatkép leírása.
region_id: Az a régió, ahová a VPS-t telepíteni kell. Ez nem befolyásolja a végső pillanatképet, csak azt a szervert, amelyről a pillanatkép készült.
plan_id: A VPS-hez használható terv. Ennek a pillanatképnek a jövőbeni felhasználása során legalább ekkora tervet kell meghatározni.
os_id: A pillanatkép alapjául szolgáló operációs rendszer.
ssh_username: Az a felhasználónév, amelyet akkor használunk, amikor az SSH-t a kiszolgálóra létesítjük. Linux szerverek esetén ez általában a következő lesz root.
Használatához mentse el ezt a fájlt olyan néven, mint server.json, majd futtassa a parancsot packer build server.json. Látni fog néhány kimenetet, amely jelzi a build állapotát, ami néhány percet vesz igénybe.
A build futtatásakor egy új nevű kiszolgáló Snapshotting: My Awesome Appjön létre, pillanatfelvétel készül, majd megsemmisül. Ha nincsenek megadva szolgáltatók, ez minden történik. A szolgáltatók meghatározásával kapcsolatos további információkért tekintse meg a Packer dokumentációját .
Amint az összeállítás befejeződött, a Packer kiadja az eredményül kapott pillanatkép azonosítóját.
Régió, terv és operációs rendszer meghatározása
Ez a három érték minden Vultr buildhez szükséges, de többféleképpen definiálható. Mindegyikhez pontosan egy változatot kell megadnia a félreértések elkerülése érdekében:
Vidék
A régió információi lekérdezhetők az API-n keresztül: https://www.vultr.com/api/#regions_region_list
region_id: A régió azonosítója, pl 2
region_code: A régió kódja, pl ORD
Terv
A terv információi lekérdezhetők az API-n keresztül: https://www.vultr.com/api/#plans_plan_list
plan_id: A terv azonosítója, pl 201
OS
Az operációs rendszerrel kapcsolatos információk az API-n keresztül kérdezhetők le: https://www.vultr.com/api/#os_os_list
os_id: Az operációs rendszer azonosítója, pl 167