Què és Packer?
Com funciona
Utilitzant Packer
Definició de regió, pla i sistema operatiu
Què és Packer?
Packer és una eina d'imatges de servidor desenvolupada per HashiCorp. Imatge del servidor; o alternativament, infraestructura immutable; és una alternativa popular a les eines de configuració en temps d'execució, com ara Ansible o Puppet. Es basa en la idea que un cop desplegat un servidor, no el canvies mai; en comptes d'això, desplegueu un servidor nou amb els vostres canvis i després desfeu l'antic. Això facilita el manteniment del servidor i us permet escalar de manera més eficient en un gran nombre de màquines.
Tot i que Packer no admet Vultr fora de la caixa, hi ha un connector que afegeix aquest suport. Les instruccions per instal·lar Packer amb suport Vultr es poden trobar al README del connector. La resta d'aquest article suposa que teniu instal·lat Packer, així com el connector Vultr.
Com funciona
El propòsit de Packer és produir imatges de servidor o artefactes que es poden utilitzar per crear un nou servidor exactament tal com estava en el moment de la imatge. Per a Vultr, aquests artefactes s'anomenen instantànies. El connector funciona desplegant un nou VPS, executant-hi els proveïdors definits, creant-ne una instantània i després desmuntant el VPS. Quan vulgueu crear un nou servidor a partir de la vostra imatge, només heu de trucar a l'API de Vultr per implementar un nou VPS amb la instantània desitjada com a sistema operatiu.
Utilitzant Packer
Packer pren un fitxer JSON que defineix la compilació que s'ha d'executar com a entrada. Aquí hi ha un fitxer de mostra que defineix una compilació Vultr:
{
"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"
}
]
}
Aquest fitxer té dues claus de nivell superior variablesi builders. La variablesclau s'utilitza per definir variables personalitzades i, en aquest cas, s'utilitza per incorporar la VULTR_API_KEYvariable d'entorn de manera que es pugui utilitzar més endavant. La buildersclau conté una llista de compilacions per executar, en aquest cas només la nostra compilació Vultr. Desglossem una mica aquesta construcció:
type: Això defineix el constructor que s'utilitzarà realment, i per a les compilacions Vultr això hauria de ser sempre vultr.
api_key: Per executar la compilació, necessiteu una clau API, que es defineix aquí. Aquest exemple el defineix com el valor de la vultr_api_keyvariable d'usuari, que més amunt s'estableix en el valor de la VULTR_API_KEYvariable d'entorn.
snapshot_description: La descripció de la instantània resultant.
region_id: la regió a la qual es desplega un VPS. Això no afecta la instantània final, només el servidor des del qual es crea la instantània.
plan_id: El pla a utilitzar per al VPS. Els usos futurs d'aquesta instantània han de definir un pla com a mínim tan gran.
os_id: el sistema operatiu en què es basa la instantània.
ssh_username: el nom d'usuari que s'utilitzarà quan s'introdueixi SSH al servidor per al subministrament. Per als servidors Linux, normalment serà root.
Per utilitzar-lo, deseu aquest fitxer amb un nom com server.json, i després executeu l'ordre packer build server.json. Veureu una sortida que indica l'estat de la compilació, que trigarà uns minuts.
Quan executeu aquesta compilació, es crearà un servidor nou anomenat Snapshotting: My Awesome App, es farà una instantània i després es destruirà. Sense aprovisionadors definits, això és tot el que passa. Per obtenir més informació sobre com definir els proveïdors, consulteu la documentació de Packer .
Un cop finalitzada la compilació, Packer enviarà l'ID de la instantània resultant.
Definició de regió, pla i sistema operatiu
Aquests tres valors són necessaris per a cada compilació de Vultr, però es poden definir de diverses maneres. Per a cadascun, heu d'especificar exactament una de les seves variacions per tal d'evitar ambigüitats:
Regió
La informació de la regió es pot consultar mitjançant l'API: https://www.vultr.com/api/#regions_region_list
region_id: L'identificador de la regió, p. ex 2
region_code: El codi de la regió, p ORD
Pla
La informació del pla es pot consultar a través de l'API: https://www.vultr.com/api/#plans_plan_list
plan_id: L'identificador del pla, p. ex 201
OS
La informació del sistema operatiu es pot consultar a través de l'API: https://www.vultr.com/api/#os_os_list
os_id: L'identificador del sistema operatiu, p. ex 167