Hva er Packer?
Hvordan det fungerer
Bruker Packer
Definere region, plan og OS
Hva er Packer?
Packer er et serverbildeverktøy utviklet av HashiCorp. Server bildebehandling; eller alternativt uforanderlig infrastruktur; er et populært alternativ til kjøretidskonfigurasjonsverktøy, for eksempel Ansible eller Puppet. Den er basert på ideen om at når en server først er distribuert, endrer du den aldri; i stedet distribuerer du en ny server med endringene dine og river deretter ned den gamle. Dette gjør servervedlikehold enklere, og lar deg skalere mer effektivt på tvers av et stort antall maskiner.
Selv om Packer ikke støtter Vultr ut av esken, er det en plugin som legger til denne støtten. Instruksjoner for å installere Packer med Vultr-støtte finner du på pluginens README. Resten av denne artikkelen forutsetter at du har Packer installert, samt Vultr-plugin.
Hvordan det fungerer
Hensikten med Packer er å produsere serverbilder, eller artefakter som kan brukes til å lage en ny server akkurat slik den var på bildetidspunktet. For Vultr kalles disse artefaktene Snapshots. Plugin-en fungerer ved å distribuere en ny VPS, kjøre dine definerte provisjonsprogrammer på den, lage et øyeblikksbilde av den og deretter rive ned VPS. Når du vil lage en ny server fra bildet ditt, ring ganske enkelt Vultrs API for å distribuere en ny VPS med ønsket Snapshot som operativsystem.
Bruker Packer
Packer tar en JSON-fil som definerer bygningen den skal kjøre som input. Her er en eksempelfil som definerer en Vultr-bygg:
{
"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"
}
]
}
Denne filen har to toppnivånøkler, variablesog builders. Den variablesnøkkel blir brukt til å definere tilpassede variabler, og i dette tilfelle benyttes for å inkorporere VULTR_API_KEYmiljøvariabelen på en måte som kan brukes senere. Den buildersnøkkelen inneholder en liste over bygger å kjøre, i dette tilfellet bare vår Vultr bygge. La oss bryte den bygningen litt ned:
type: Dette definerer byggherren som faktisk skal brukes, og for Vultr-bygg skal dette alltid være vultr.
api_key: For å kjøre bygget trenger du en API-nøkkel, som er definert her. Dette eksemplet definerer det som verdien til vultr_api_keybrukervariabelen, som lenger opp er satt til verdien av VULTR_API_KEYmiljøvariabelen.
snapshot_description: Beskrivelsen av det resulterende øyeblikksbildet.
region_id: Regionen å distribuere en VPS til. Dette påvirker ikke det endelige øyeblikksbildet, bare serveren som øyeblikksbildet er opprettet fra.
plan_id: Planen å bruke for VPS. Fremtidig bruk av dette øyeblikksbildet må definere en plan som er minst så stor.
os_id: Operativsystemet å basere øyeblikksbildet på.
ssh_username: Brukernavnet som vil bli brukt når SSH går inn på serveren for klargjøring. For Linux-servere vil dette vanligvis være root.
For å bruke den, lagre denne filen med et navn som server.json, og kjør deretter kommandoen packer build server.json. Du vil se noe utdata som indikerer statusen til bygget, noe som vil ta noen minutter.
Når du kjører denne konstruksjonen, vil en ny server med navn Snapshotting: My Awesome Appbli opprettet, tatt et øyeblikksbilde og deretter ødelagt. Uten at det er definert provianter, er det alt som skjer. For mer informasjon om definering av provisjoner, se Packers dokumentasjon .
Når byggingen er fullført, vil Packer gi ut ID-en til det resulterende øyeblikksbildet.
Definere region, plan og OS
Disse tre verdiene kreves for hvert Vultr-bygg, men kan defineres på en av flere måter. For hver enkelt bør du spesifisere nøyaktig én av variantene for å unngå tvetydighet:
Region
Regioninformasjon kan søkes via API: https://www.vultr.com/api/#regions_region_list
region_id: IDen til regionen, f.eks 2
region_code: Koden for regionen, f.eks ORD
Plan
Planinformasjon kan søkes via API: https://www.vultr.com/api/#plans_plan_list
plan_id: IDen til planen, f.eks 201
OS
Operativsysteminformasjon kan spørres via APIen: https://www.vultr.com/api/#os_os_list
os_id: IDen til operativsystemet, f.eks 167