Sådan administreres din arbejdsstationskonfiguration med Ansible

I den første artikel i denne serie lærer du det grundlæggende ved at konfigurere konfigurationsstyring til dine bærbare computere og desktops.

Sådan administreres din arbejdsstationskonfiguration med Ansible

Konfigurationsstyring er et meget vigtigt aspekt af både serveradministration og DevOps. Metoden "infrastruktur som kode" gør det nemt at installere servere i forskellige konfigurationer og dynamisk skalere en organisations ressourcer for at holde op med brugernes krav. Men mindre opmærksomhed betales til de enkelte administratorer, der ønsker at automatisere opsætningen af ​​deres egne bærbare computere og stationære computere (arbejdsstationer).

I denne serie viser jeg dig, hvordan du automatiserer din arbejdsstationsopsætning via Ansible, som giver dig mulighed for nemt at gendanne hele din konfiguration, hvis du vil have eller skal genindlæs din maskine. Hvis du har flere arbejdsstationer, kan du også bruge samme fremgangsmåde til at gøre konfigurationen ens for hver. I denne første artikel opretter vi grundlæggende konfigurationsstyring til vores personlige eller arbejdscomputere og sætter grundlaget for resten af ​​serien. I slutningen af ​​denne artikel har du en arbejdsopsætning, der kan drage fordel af med det samme. Hver artikel automatiserer flere ting og vokser i kompleksitet.

Hvorfor Ansible?

Der findes mange konfigurationsstyringsløsninger, herunder Salt Stack, Chef og Marionet. Jeg foretrækker Ansible, fordi den er lettere med hensyn til ressourceudnyttelse, dens syntaks er nemmere at læse, og når den udnyttes korrekt, kan den revolutionere konfigurationsstyringen. Ansible's lette natur er især relevant for emnet ved hånden, fordi vi måske ikke ønsker at køre en hel server bare for at automatisere opsætningen af ​​vores bærbare computere og desktops. Ideelt set ønsker vi noget hurtigt; noget vi kan bruge til at komme hurtigt i gang, skal vi genoprette vores arbejdsstationer eller synkronisere vores konfiguration mellem flere maskiner. Min specifikke metode til Ansible (som jeg vil demonstrere i denne artikel) er perfekt til dette - der er ingen server til at vedligeholde. Du skal bare downloade din konfiguration og køre den.

Min tilgang

Normalt køres Ansible fra en central server. Det bruger en lagerfil, som er en tekstfil, der indeholder en liste over alle værter og deres IP-adresser eller domænenavne, vi ønsker, at Ansible skal håndtere. Dette er fantastisk til statiske miljøer, men det er ikke ideelt til arbejdsstationer. Årsagen er, at vi virkelig ikke ved, hvad status for vores arbejdsstationer vil være på et øjeblik. Måske drev jeg ned på mit skrivebord eller min bærbare computer blev suspenderet og stuvet i min taske. I begge tilfælde ville Ansible-serveren klage, da den ikke kan nå mine maskiner, hvis de er offline. Vi har brug for noget, der er mere en on-demand-tilgang, og den måde, hvorpå vi opnår det, er ved at udnytte ansible-pull. Det ansible-pull kommando, som er en del af Ansible, giver dig mulighed for at downloade din konfiguration fra et Git repository og anvende det med det samme. Du behøver ikke at opretholde en server eller en fortegnelse liste; du kører simpelthen ansible-pull kommando, feed det en Git repository URL, og det vil gøre resten for dig.

Kom godt i gang

Først skal du installere Ansible på den computer, du vil have det til at klare. Et problem er, at mange distributioner leveres med en ældre version. Jeg kan fortælle dig fra erfaring, du vil helt sikkert have den nyeste version til rådighed. Nye funktioner introduceres ganske ofte i Ansible, og hvis du kører en ældre version, kan eksempelsyntaks du finder online muligvis ikke være funktionel, fordi det bruger funktioner, der ikke implementeres i den version, du har installeret. Selv punktudgivelser har en hel del nye funktioner. Et eksempel herpå er dconf modul, som er nyt for Ansible fra 2.4. Hvis du forsøger at udnytte syntaksen, der gør brug af dette modul, medmindre du har 2.4 eller nyere, vil det mislykkes. I Ubuntu og dets derivater kan vi nemt installere den nyeste version af Ansible med det officielle personlige pakkearkiv (PPA). Følgende kommandoer vil gøre tricket:

sudo apt-get install software-egenskaber-fælles sudo apt-add-repository ppa: ansible / ansible sudo apt-get update sudo apt-get install ansible

Hvis du ikke bruger Ubuntu, konsultere Ansible's dokumentation om hvordan man får det til din platform.

Dernæst skal vi have et Git-depot for at holde vores konfiguration. Den nemmeste måde at opfylde dette krav på er at oprette et tomt lager på GitHub, eller du kan bruge din egen Git-server, hvis du har en. For at holde tingene simple, antager jeg, at du bruger GitHub, så juster kommandoerne, hvis du bruger noget andet. Opret et lager i GitHub; du ender med en repository URL, der ligner dette:

[email protected]:<your_user_name>/ansible.git

Klon dit opbevaringssted til dit lokale arbejdsregister (ignorér enhver besked, der klager over, at arkivet er tomt):

git klon [email protected] : <din_user_name> /ansible.git

Nu har vi et tomt lager, vi kan arbejde med. Skift din arbejdsmappe for at være inde i depotet (cd ./ansible for eksempel) og oprette en fil med navnet local.yml i din yndlings tekst editor. Anbring følgende konfiguration i den pågældende fil:

- værter: localhost bliver: sande opgaver: - navn: Installer htop apt: name = htop

Den fil, du netop har oprettet, er kendt som en playbook, og instruktionen til at installere htop (en pakke jeg vilkårligt valgt til at tjene som et eksempel) er kendt som en spille. Playbooken selv er en fil i YAML-formatet, hvilket er et simpelt læsbart markupsprog. En fuld gennemgang af YAML er uden for denne artikels anvendelsesområde, men du behøver ikke have en ekspert forståelse for at være dygtig med Ansible. Konfigurationen er let at læse; ved blot at kigge på denne fil, kan du nemt genskabe, at vi installerer htop pakke. Vær særlig opmærksom på apt modul på den sidste linje, som kun vil fungere på Debian-baserede systemer. Du kan ændre dette til yum i stedet for apt hvis du bruger en Red Hat-platform eller ændrer den til DNF hvis du bruger Fedora. Det navn linje giver blot oplysninger om vores opgave og vil blive vist i output. Derfor vil du sikre dig, at navnet er beskrivende, så det er nemt at finde, om du skal fejlfinding flere spil.

Lad os begå vores nye fil til vores lager:

git tilføje local.yml git commit -m "initial commit" git push origin master

Nu skal vores nye playbook være til stede i vores repository på GitHub. Vi kan anvende den playbook, vi oprettede med følgende kommando:

sudo ansible-pull -U https://github.com/<your_user_name>/ansible.git

Hvis den udføres korrekt, vil htop pakken skal installeres på dit system. Du har måske set nogle advarsler i begyndelsen, der klager over manglen på en lagerfil. Det er fint, da vi ikke bruger en lagerfil (det skal vi heller ikke bruge til denne brug). I slutningen af ​​produktionen vil det give dig et overblik over, hvad det gjorde. Hvis htop blev installeret korrekt, skal du se ændret = 1 på den sidste linje af output.

Hvordan fungerede dette? Det ansible-pull kommando bruger -U option, som forventer et repository URL. Jeg gav det den https version af opbevaringswebadressen til sikkerhedsformål, fordi jeg ikke ønsker, at nogen værter skal have skriveadgang tilbage til depotet (https er skrivebeskyttet som standard). Det local.yml Playbook navn antages, så vi behøvede ikke at give et filnavn til playbooken - det vil automatisk køre en playbook med navnet local.yml hvis den finder den i lagerets rod. Dernæst brugte vi sudo foran kommandoen, da vi ændrer systemet.

Lad os gå videre og tilføje yderligere pakker til vores playbook. Jeg tilføjer to ekstra pakker, så det ser ud som dette:

- værter: localhost bliver: sande opgaver: - navn: Install htop apt: name = htop - navn: Install mc apt: name = mc - navn: Install tmux apt: name = tmux

Jeg tilføjede yderligere opgaver (opgaver) til at installere to andre pakker, mc og tmux. Det betyder ikke noget, hvilke pakker du vælger at have denne playbook installering; Jeg har lige valgt disse vilkårligt. Du skal installere, hvilke pakker du vil have alle dine systemer til. Den eneste advarsel er, at du skal vide, at pakkerne findes i opbevaringsstedet for din distribution før tiden.

Inden vi forpligter og anvender denne opdaterede playbook, skal vi rydde op. Det vil fungere fint som det er, men (for at være ærlig) det ser lidt rodet ud. Lad os prøve at installere alle tre pakker i et enkelt spil. Udskift indholdet af din local.yml med dette:

- værter: localhost bliver: sande opgaver: - navn: Installer pakker apt: name = {{item}} with_items: - htop - mc - tmux

Nu at ser renere og mere effektiv ud. Vi brugte with_items at konsolidere vores pakkeliste til et spil. Hvis vi vil tilføje yderligere pakker, tilføjer vi blot en anden linje med en bindestreg og et pakkenavn. Overveje with_items at ligne en forum loop. Hver pakke, vi lister, vil blive installeret.

Forbind vores nye ændringer tilbage til opbevaringsstedet:

git tilføje local.yml git commit -m "tilføjet yderligere pakker, ryddet op formatering" git push origin master

Nu kan vi køre vores playbook for at drage fordel af den nye konfiguration:

sudo ansible-pull -U https://github.com/<your_user_name>/ansible.git

Admittedly, dette eksempel gør ikke meget endnu; alt det gør er at installere et par pakker. Du kunne have installeret disse pakker meget hurtigere bare ved hjælp af din pakkehåndtering. Men da denne serie fortsætter, bliver disse eksempler mere komplekse, og vi automatiserer flere ting. I slutningen vil den Ansible-konfiguration, du opretter, automatisere flere og flere opgaver. For eksempel automatiserer den, jeg bruger, installation af hundredvis af pakker, opsætninger cron job, håndterer desktopkonfiguration og meget mere.

Fra hvad vi har opnået hidtil, kan du sikkert allerede se det store billede. Alt, hvad vi skulle gøre, var at oprette et lager, lægge en playbook i det repository og derefter udnytte ansible-pull kommandoen for at trække ned det repository og anvende det på vores maskine. Vi behøvede ikke at oprette en server. I fremtiden, hvis vi ønsker at ændre vores config, kan vi trække ned repoen, opdatere den og derefter skubbe den tilbage til vores lager og anvende den. Hvis vi opretter en ny maskine, skal vi kun installere Ansible og anvende konfigurationen.

I næste artikel automatiserer vi dette endnu mere via cron og nogle ekstra ting. I mellemtiden har jeg kopieret koden til denne artikel i mit GitHub repository så du kan tjekke din syntaks mod min. Jeg opdaterer koden, når vi går videre.

Kilde

Giv en kommentar

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.