Contacte

Instalarea și configurarea păpușilor. Puppet Server Instalarea și configurația. Lista completă a parametrilor de bash din scriptul de instalare original

Pentru o utilizare mai eficientă, marioneta trebuie să fie înțeleasă cum sunt construite module și manifestări. Acest manual vă va familiariza cu activitatea acestor componente de marionetă pe exemplul de setare a stivei lampi de pe serverul Ubuntu 14.04.

Cerințe

  • Instalarea de marionetă (master și agent). Mai multe despre asta -.
  • Abilitatea de a crea cel puțin un server virtual Ubuntu 14.04 pentru servirea nodului agenției de păpuși.

Elementele de bază ale codului de păpuși

Resurse

Codul de păpuși constă în principal din resurse. Resursa este un fragment al unui cod care descrie starea sistemului și determină modificările de care au nevoie. De exemplu:

utilizator ("Mitchell":
Asigurați-vă \u003d\u003e prezent
uid \u003d\u003e "1000",
gid \u003d\u003e "1000",
shell \u003d\u003e / bin / bash ",
Home \u003d\u003e / Home / Mitchell "
}

Anunțul resursei are un astfel de format:

resource_type ("Resource_name"
Atribut \u003d\u003e valoare
...
}

Pentru a vedea toate tipurile de resurse de marionete, introduceți comanda:

resursele de păpuși - Tipuri.

Mai multe despre tipurile de resurse veți afla în acest manual.

Manifest

Manifestul este scenariul orchestrației. Programele de păpuși cu expansiune .pp se numește manifestări. Puppet Manifele implicit - /etc/puppet/manifests/site.pp.

Clase

Ca și în orice limbă de programare convențională, clasele sunt responsabile pentru organizarea și reutilizarea părților Orchecului.

Definiția clasei este un bloc de cod care descrie modul în care funcționează clasa. După ce a determinat clasa, îl puteți folosi în manifesta.

Definiția clasei are un astfel de format:

clasa exemplu_class (
...
Cod.
...
}

Acest cod definește clasa exemplului_class. Codul de păpuși va fi în paranteze curbate.

Declarația de clasă este locul în codul în care se numește una sau altă clasă. Folosind anunțurile clasei de păpuși, procesează codul său.

Declarația de clasă este comună și de tipul de resurse.

Declarația de clasă obișnuită este adăugată la codul utilizând cuvântul cheie include.

includeți exemplul_class.

La declararea tipului de resurse, clasa este anunțată în formatul de resurse:

clasa ("example_class" :)

Un astfel de anunț vă permite să adăugați un parametrii de clasă la codul care înlocuiește valorile standard ale atributelor de clasă. De exemplu:

nod "gazdă2" (
Clasa ("Apache" :) # Utilizați modulul Apache
Apache :: vhost ("example.com": # definesc resursa vhost
port \u003d\u003e "80",
docroot \u003d\u003e "/ var / www / html"
}
}

Module.

Modulul este un grup de manifestări și alte fișiere, organizate în prealabil într-un anumit mod, ceea ce vă permite să faciliteze articularea și reutilizarea părților individuale ale Orchecului. Modulele ajută la sistematizarea codului de păpuși, deoarece codul de ajutor poate fi împărțit în mai multe manifestări.

Modulele de păpuși sunt stocate în directorul / etc / Puppet / Module.

Scrierea manifestării

Puteți practica manifestări de scriere, module și clase de marionetă pe exemplul de instalare a stivei lampi la serverul Ubuntu (ca rezultat, se pare).

Deci, pentru a efectua orchestrarea serverului Ubuntu 14.04 și a instala stiva lămpii pe ea, aveți nevoie de resurse pentru astfel de acțiuni:

  • instalarea pachetului Apache2.
  • pornirea serviciului Apache2.
  • instalarea unui pachet serverele MySQL., MySQL-Server.
  • lansați serviciul MySQL.
  • instalarea pachetului PC5.
  • crearea unui script de testare PHP, info.php.
  • actualizați indicele APT înainte de a instala fiecare pachet.

Mai jos veți găsi trei exemple de cod de păpuși, cu care puteți obține o astfel de instalare a stivei lampa.

Primul exemplu va preda manifestările de bază într-un singur dosar. Al doilea exemplu va ajuta la asamblarea și utilizarea clasa și modulul bazat pe manifestări scrise anterior. În al treilea exemplu, veți învăța cum să utilizați modulele disponibile publicului pre-asamblate pentru a instala stiva lămpii.

Notă: Pentru a testa, este mai bine să utilizați un nou server virtual.

Exemplul 1: Instalarea lămpii utilizând un manifest

Manifestul de păpuși poate fi scris pe nodul agenției, apoi efectuați-l folosind comanda Aplicați de Puppet (pentru că nu este nevoie să aveți o configurație de la vrăjitor și agent).

În această secțiune, veți învăța cum să scrieți manifestări care vor folosi astfel de tipuri de anunțuri de resurse:

  • exec: Executarea comenzilor.
  • pachet: Instalarea pachetelor.
  • service: Servicii de gestionare.
  • fișier: Managementul fișierelor.

Crearea manifestării

Creați un nou manifest:

sudo vi /etc/puppet/manifests/lamp.pp.

Adăugați următorul cod pentru a declara resursele necesare.

Rularea comenzii "APT-GET UPDATE"
Exec ("APT-UPDATE": Resurse EXEC "APT-update"
Comanda \u003d\u003e "/ usr / bin / apt-get update" # comanda care va rula această resursă
}
# Pachetul de instalare Apache2
Pachet ("Apache2":
Necesită \u003d\u003e exec ["APT-update"], # APT-Actualizare interogare înainte de a instala pachetul
Asigurați-vă \u003d\u003e instalat,
}
# Funcționarea serviciului APACE2
Service ("Apache2":
Asigurați-vă \u003d\u003e Rularea,
}
# Setați MySQL-server
Pachet ("MySQL-Server":
Necesită \u003d\u003e exec ["apt-update"], # apt-update cerere amânare
Asigurați-vă \u003d\u003e instalat,
}
# Rularea serviciului MySQL
Service ("MySQL":
Asigurați-vă \u003d\u003e Rularea,
}
# Pack Pack Php5
Pachet ("PHP5":
Necesită \u003d\u003e exec ["APT-update"], # Actualizare Actualizare înainte de a instala
Asigurați-vă \u003d\u003e instalat,
}
# Info Service Info.php
Fișier ("/var/www/html/info.php":
Asigurați-vă \u003d\u003e Fișier,
Conținut \u003d\u003e "", # Cod phpinfo
Necesită \u003d\u003e pachet ["Apache2"], # Apache2 Cerere de pachete
}

Manifestarea aplicațiilor

Pentru a utiliza noul manifestare, introduceți comanda:

sudo Puppet Aplică - cel mai bun

Acesta va emite un rezultat volum care afișează toate modificările statului mediu. Dacă nu există erori în ieșire, puteți deschide adresa IP externă sau numele de domeniu în browser. Pagina de testare PHP apare pe ecran cu informații despre stivă. Aceasta înseamnă că Apache și PHP funcționează.

Acum, stiva lampa este instalată pe server folosind marionetă.

Acesta este un manifest destul de simplu, deoarece poate fi efectuat pe agenție. Dacă nu aveți un expert de păpuși, alte noduri de agenție nu vor putea folosi acest manifest.

Puppet Master Server verifică starea serverului la fiecare 30 de minute.

Exemplul 2: Setarea stivei de lampă utilizând modulul

Acum încercați să creați un mod simplu bazat pe manifestarea lămpii, pe care ați scris-o în secțiunea anterioară.

Pentru a crea un modul, creați un nou director în directorul modulelor (numele său trebuie să se potrivească cu numele modulului). Acest director trebuie să conțină directorul manifestărilor și fișierul Init.pp. În fișierul Init.pp, clasa de marionetă este specificată (numele său trebuie să se potrivească cu numele modulului).

Crearea unui modul.

Accesați serverul Master Puppet și creați structura directorului pentru modul:

cD / etc / Puppet / Module
Sudo mkdir -p lampă / manifestă

Creați și deschideți fișierul init.pp în editor:

sudo VI lampă / manifestări / init.pp

Introduceți clasa lămpii în fișier:

lampa de clasă (
}

Copiați conținutul manifestului din secțiunea 1 și introduceți-l în unitatea de clasă a lămpii. Acum aveți o definiție a unei clase de lampă. Alte manifestări vor putea folosi această clasă ca modul.

Salvați și închideți fișierul.

Utilizarea modulului din manifestarea principală

Acum puteți configura principalul manifest și puteți utiliza modulul lămpii pentru a instala stiva lămpii de pe server.

Pe serverul Master Puppet, editați un astfel de fișier:

sudo vi /etc/puppet/manifests/site.pp.

Cel mai probabil, în momentul în care fișierul este gol. Adăugați următoarele linii la acesta:

nODE Implicit ()
Nod "lampă-1" (
}

Notă: În loc de lampă-1, specificați numele gazdei agentului dvs. de marionetă pentru a instala stiva.

Blocul de nod vă permite să specificați codul de marionetă care va fi aplicat numai la unele noduri.

Unitatea implicită se aplică tuturor nodurilor de agenție care nu au bloc individual (lăsați-l goale). Unitatea Lamp-1 va fi aplicată nodului Agenției lampă-1.

Adăugați următoarea linie la acest bloc care utilizează modulul lămpii:

Salvați și închideți fișierul.

Acum, Puppet de Nod Agency va putea descărca setările de pe serverul principal și va instala stiva lămpii. Dacă doriți să faceți modificări chiar acum, executați comanda pe agenție:

sudo Puppet Agent - cel mai bun

Modulele sunt cel mai convenabil mod. reutilizați Codul de păpuși. În plus, modulele ajută la organizarea logic a codului.

Exemplul 3: Instalarea lămpii utilizând module publice

Modulul MySQL este utilizat în același mod. Adăugați astfel de linii pentru a bloca nodurile:

clasa ("MySQL :: Server":
root_password \u003d\u003e "parolă",
}

De asemenea, puteți transmite parametrii modulului MySQL.

Adăugați o resursă care copiază info.php în locația dorită. Utilizați parametrul sursă. Adăugați următoarele linii la blocul de noduri:

fișier ("INFO.PHP": # Numele fișierului de resurse
calea \u003d\u003e "/var/www/html/info.php", # calea țintă
Asigurați-vă \u003d\u003e Fișier,
Necesită \u003d\u003e Clasa ["Apache"], # Clasa Apache de utilizat
Sursa \u003d\u003e "Puppet: ///module/apache/info.php", locul unde trebuie să copiați fișierul
}

Această declarație de clasă utilizează parametrul sursă în loc de conținut. Acest parametru nu numai că utilizează conținutul fișierului, ci și îl copiază.

Puppet: ///modules/apache/info.php Puppet va copia în /etc/puppet/module/apache/files/info.php.

Salvați și închideți fișierul.

Creați un fișier info.php.

sudo sh -c "ecou""\u003e /etc/puppet/modules/apache/files/info.php"

Acum, Puppet de Nod Agency va putea descărca setările de pe serverul principal și va instala stiva lămpii. Dacă doriți să faceți modificări în mediul agentului chiar acum, executați comanda pe acest nod:

sudo Puppet Agent - cel mai bun

Această comandă va descărca toate actualizările pentru nodul curent și va instala stiva pe ea. Pentru a vă asigura că Apache și PHP funcționează, deschideți adresa IP sau nodul de domeniu din browser:

http: //lamp_1_public_ip/info.php.

Concluzie

Acum aveți abilități de bază pentru a lucra cu module și manifestările de marionete. Încercați să creați un mod simplu și un modul.

Puppetul este excelent pentru gestionarea fișierelor de configurare a aplicațiilor.

Etichete:

Gestionarea unui număr mare de sisteme UNIX nu pot fi numite confortabile. Pentru a schimba un parametru, administratorul trebuie să acceseze fiecare mașină, scripturile pot ajuta doar parțial, și nu în toate situațiile.

Ar trebui să fie recunoscut că administratorii de ferestre Rețelele sunt încă într-o poziție mai avantajoasă. Este suficient să schimbați setările politicilor de grup și după o perioadă de timp a tuturor computerelor de rețea, inclusiv sistemul de operare nou instalat "recunoaște" despre inovare, dacă acestea se referă cu siguranță. Privind în jur pentru o perioadă lungă de dezvoltare a Unix, se poate observa că nimic nu se potrivește. Există soluții precum KickStart, care ajută la instalarea primară sistem de operareDar finalizarea ulterioară va necesita eforturi considerabile. Soluții comerciale precum Bladelogic și Opsware, problema automatizării setărilor rezolvă doar parțial, avantajul principal. interfață graficăDa, și le permiteți să le achiziționeze numai în organizații mari. Desigur, există proiecte care oferă soluții gratuite, dar pentru tot timpul existenței lor nu au putut crea o comunitate mare. De exemplu, cmuncina nu este foarte populară cu administratorii, deși, altul decât Linux poate fi utilizat în * BSD, Windows și Mac OS X. Se poate datora complexității relative în crearea de configurații. La descrierea sarcinilor, este necesar să se țină cont de caracteristicile fiecărui sistem specific și să controlați manual secvența de acțiuni la executarea comenzilor. Administratorul trebuie să-și amintească faptul că pentru anumite sisteme este necesar să scrieți AddUser pentru alte Useradd, să ia în considerare locația fișierelor în diferite sisteme și așa mai departe. Acesta este un ordin de magnitudine complicate procesul de scriere a comenzilor, este foarte dificil să creați configurația corectă cu procesul și puteți citi configurațiile create după un timp practic practic real. În ciuda caracterului de licență GPL, de fapt, un proiect al unei persoane care controlează toate modificările și nu este foarte interesat să construiască o societate deschisă. Ca rezultat, cmansina este destul de satisfăcătoare dezvoltatorului, iar pentru administratorii rămași este mai degrabă o durere de cap în exces. Pentru a îmbunătăți cfecinea dezvoltatorii terților Au fost create diferite adăugiri, care adesea agravând doar situația. Autorul mai multor astfel de module la cotină Luke Kanies în cele din urmă a decis să dezvolte un instrument similar, dar lipsită de multe defecte de ccingine.

Caracteristicile de păpuși

Puppet ca cmansina este un sistem client-server care utilizează o declarativă, adică obligatorie pentru a face o limbă pentru a descrie sarcinile și bibliotecile pentru a le implementa. Clienții periodic (în mod implicit 30 de minute) sunt conectați la serverul central și obțineți cea mai recentă configurație. Dacă setările nu au fost coincis cu starea sistemului, acestea vor fi executate, dacă este necesar, serverul se referă la operațiunile de operații. Serverul de mesaje poate salva în syslog sau fișier, creați un program RRD, trimiteți la e-mailul specificat. Nivelurile suplimentare de abstractizare tranzacțională și a resurselor rezultă o compatibilitate maximă cu setările și aplicațiile existente, permițându-vă să vă concentrați obiecte de sistemFără îngrijorarea cu privire la diferențele în implementarea și descrierea comenzilor detaliate și a formatelor de fișiere. Administratorul operează numai cu tipul de obiect, restul marionetei se ia pe sine. Astfel, tipul de pachete știe aproximativ 17 sisteme de lot, care vor fi recunoscute automat pe baza informațiilor despre versiunea distribuției sau a sistemului, deși, dacă este necesar, un manager de lot poate fi adăugat forțat.

Spre deosebire de scripturile care nu sunt adesea posibile de utilizat în alte sisteme, configurațiile de păpuși scrise de administratorii terților vor lucra în cea mai mare parte pe orice altă rețea. În cartea de bucate de păpuși [ http://www.reductivAbs.com/trac/puppet/tags/puppet%2Crecipe.] Există deja trei duzini de rețete gata făcute. În prezent, marionetă sprijină oficial următoarele sisteme și servicii de operare: Debian, Redhat / Fedora, Solaris, Suse, Centos, Mac OS X, OpenBSD, Gentoo și MySQL, LDAP.

Marionetă. Limba

Pentru a continua, mai întâi ar trebui să fie tratată cu principalele elemente și capabilități lingvistice. Limba este una dintre punctele forte ale păpușii. Cu aceasta, este descrisă de resursele pe care administratorul intenționează să le gestioneze și de acțiuni. Spre deosebire de cele mai multe astfel de soluții, limba de marionetă vă permite să simplificați apelul la toate resursele similare pe orice sistem într-un mediu eterogen. O descriere a resurselor, de regulă, constă într-un nume, tip și atribute. De exemplu, specificați un fișier / etc / passwd și setați atributele sale:

fișier ("/ etc / passwd":

proprietar \u003d\u003e root,

grup \u003d\u003e rădăcină,

Acum, clienții, conectarea la server, copiați fișierul / etc / passwd și instalați atributele specificate. Într-o regulă, puteți defini mai multe resurse simultan, despărțându-le cu un punct cu o virgulă. Și dacă fișierul de configurare este utilizat pe server diferă de la client sau nu este utilizat deloc? De exemplu, această situație poate apărea atunci când setările Conexiuni VPN. În acest caz, puteți specifica directiva sursă. Iată două opțiuni, ca de obicei pentru a specifica calea către un alt fișier, sunt de asemenea acceptate două Uri ale protocolului: fișier și marionetă. În primul caz, se utilizează un link către un server NFS extern, în a doua versiune de pe serverul de marionetă, NFS este lansat un serviciu similar, care exportă resurse. În acest din urmă caz, în mod implicit, calea este indicată în raport cu directorul rădăcină de pădure - / etc / marionetă. Adică, păpuși de legătură: //server.domain.com/config/sshd_config va corespunde fișierului / etc / Puppet / config / sshd_config. Puteți suprascrie acest director utilizând Directiva FileBucket, deși este mai corectă utilizarea secțiunii de același nume în fișierul /etc/puppet/fileServer.conf. În acest caz, puteți restricționa accesul la serviciu numai de la adrese specifice. De exemplu, descriem secțiunea Config.

calea / var / marionetă / config

permiteți * .domain.com.

permiteți 192.168.0. *

permiteți 192.168.1.0/224.

nega * .wireless.domain.com.

Și apoi consultați această secțiune când descrieți resursa.

sursa \u003d\u003e "Puppet: //server.domain.com/config/sshd_config"

Înainte ca colonul să fie numele resursei. În cele mai simple cazuri, ca nume, puteți specifica pur și simplu cele mai bune alias sau variabile. Alias \u200b\u200beste instalat utilizând Directiva ALIAS. Calea completă a fișierelor. În configurații mai complexe

fișier ("/ etc / passwd":

alias \u200b\u200b\u003d\u003e passwd

O altă opțiune de a crea un pseudonim este bine potrivită în cazul în care trebuie să vă ocupați de diferite sisteme de operare. De exemplu, creați o resursă care descrie fișierul sshd_config:

fișier (sshdconfig:

nume \u003d\u003e $ sistem de operații? (

solaris \u003d\u003e "/ usr / local / etc / ssh / sshd_config",

implicit \u003d\u003e "/ etc / ssh / sshd_config"

În acest exemplu, ne-am confruntat cu posibilitatea de alegere. Un fișier pentru Solaris este specificat separat, fișierul / etc / ssh / sshd_config va fi selectat pentru toate celelalte. Acum puteți contacta această resursă ca sshdconfig, în funcție de sistemul de operare, va fi selectată calea dorită. De exemplu, indicăm că dacă daemonul sshd este lansat și a primit un nou fișier, trebuie să reporniți serviciul.

asigurați-vă \u003d\u003e adevărat,

aboneaza \u003d\u003e Fișier

Variabilele sunt adesea utilizate la lucrul cu datele utilizatorului. De exemplu, descrieți locația directoarelor de acasă:

$ Homeroot \u003d "/ home"

Acum puteți contacta fișierele unui anumit utilizator ca

$ (Homeroot) / $ nume

Numele contului utilizatorului va fi înlocuit în parametrul $ nume. În unele cazuri, este convenabil să se determine valoarea implicită pentru un anumit tip. De exemplu, pentru tipul Exec, directoarele în care trebuie să caute fișierul executabil sunt foarte adesea indicate.

Exec (calea \u003d\u003e "/ usr / bin: / bin: / usr / sbin: / sbin")

De fapt, dacă trebuie să specificați câteva fișiere și directoare imbricate, puteți utiliza parametrul de recurs.

fișier ("/etc/apache2/conf.d":

sursa \u003d\u003e "Puppet: // Puppet: //server.domain.com/config/apache/conf.d",

rECURSE \u003d\u003e "Adevărat"

Mai multe resurse pot fi integrate în clase sau definiții. Clasele sunt o descriere completă a sistemului sau a serviciului și sunt utilizate în afară.

"/ Etc / passwd": proprietar \u003d\u003e root, grup \u003d\u003e rădăcină, modul \u003d\u003e 644;

"/ Etc / umbra": proprietar \u003d\u003e root, grup \u003d\u003e root, modul \u003d\u003e 440

Ca și în limbile orientate spre obiect, clasele pot fi suprascrise. De exemplu, proprietarul grupului FreeBSD al acestor fișiere este roata. Prin urmare, pentru a nu rescrie complet resursa, creați o nouă clasă FREEBSD, care va moșteni Clasa Linux:

clasa FreeBsd moștenește Linux (

Fișier ["/ etc / passwd"] (grup \u003d\u003e roată);

Fișier ["/ etc / umbra"] (grup \u003d\u003e roată)

Pentru comoditate, toate clasele pot fi luate într-un fișier separat care include o directivă includă. Definițiile pot lua numeroși parametri ca argumente, dar nu acceptă moștenirea și sunt utilizate dacă aveți nevoie pentru a descrie mai multe obiecte utilizate. De exemplu, definim directorul de domiciliu al utilizatorilor și comenzilor de care aveți nevoie pentru a crea un cont nou.

definiți utilizator_homedir ($ Group, $ Fullname, $ ingroups) (

utilizator ("$ nume":

asigurați-vă \u003d\u003e prezent

comentariu \u003d\u003e "$ Fullname",

gid \u003d\u003e grup de "$",

grupuri \u003d\u003e $ ingroups,

membru \u003d\u003e minim,

shell \u003d\u003e / bin / bash ",

home \u003d\u003e / home / $ nume ",

necesită \u003d\u003e grup de grup [$],

exec ("$ nume homedir":

comanda \u003d\u003e "/ bin / cp -r / etc / skel / home / $ nume; / Chown -R $ nume: $ GROUP / HOME / $ NAME »

creează \u003d\u003e / home / $ nume ",

necesită \u003d\u003e utilizator [$ nume],

Acum pentru a crea un nou cont Este suficient să contactați user_homedir.

user_homedir ("sergej":

grup \u003d\u003e "sergej",

fullName \u003d\u003e "Sergej Jaremchuk",

ingroups \u003d\u003e ["Media", "admin]

Separat există descrieri ale nodurilor (nodului) care sprijină moștenirea, precum și clasele. Când conectați clientul la serverul de păpuși, se vor vedea standurile nodului și se eliberează setările specifice numai pentru acest computer. Pentru a descrie toate celelalte sisteme, puteți utiliza implicit NODE. Descrierea tuturor tipurilor este dată în documentul "Type Reference" cu care trebuie să vă familiarizați în orice caz, cel puțin pentru a înțelege toate caracteristicile limbajului de marionetă. tipuri diferite Permis să execute comenzile specificate, inclusiv atunci când efectuați anumite condiții (de exemplu, schimbarea fișierului de configurare), lucrați cu CRON, acreditări și grupuri de utilizatori, computere, resurse de montare, servicii de pornire și oprire, instalare, actualizare și ștergere pachete, lucrați cu Cheile ssh, zonele Solaris și așa mai departe. Acest lucru este cât de simplu poate fi făcut pentru a actualiza lista pachetelor din distribuții utilizând APT, zilnic între 2 și 4 ore.

program (zilnic:

perioada \u003d\u003e zilnic

gama \u003d\u003e

exec ("/ USR / BIN / APT-GET UPDATE":

programare \u003d\u003e zilnic

Pentru acea perioadă, fiecare sistem va fi actualizat o singură dată, după care sarcina este considerată a fi executată și va fi eliminată din computer client. Limba de marionetă sprijină alte structuri familiare: condiții, funcții, matrice, comentarii și similare.

Instalarea de marionetă.

Marioneta va necesita rubin (\u003e \u003d 1.8.1) cu suport OpenSSL și biblioteci XMLRPC, precum și biblioteca mai rapidă [ http://reductivlabs.com/projects/facter.]. În depozitul Ubuntu 7.04, care a fost utilizat în timpul unei instalații de testare, pachetul de catelus este deja activat.

$ sudo apt-cache de căutare marionetă

puppet - Managementul configurației centralizate pentru rețele

puppetmaster - CONFIGURAREA CONFIGURAȚIEI CONFIGURARE DAEMONUL DE CONTROL

La instalare, toate dependențele necesare vor fi instalate: FACTTER LIBOPENSSL-RUBY LIBXMLRPC-RUBY.

$ sudo apt-get instalare Puppetmaster Puppet

Verificați pentru Biblioteci Ruby de către comandă.

$ RUBY-SROPENSSL -E "PUTES: YEP"

~ $ RUBY -RXMLRPC / Client -e "PUTES: YEP"

Dacă nu sunt primite erori, atunci tot ce aveți nevoie este deja inclus. Fișierele în care sunt descrise de configurația sistemului dorit în terminologia păpușilor sunt numite manifestări. Când începeți, daemonul încearcă să citească fișierul /etc/puppet/manifests/site.pp, cu absența acesteia oferă un mesaj de avertizare. La testarea, puteți specifica un daemon pentru a lucra în modul Auton la care este necesar manifestarea

$ sudo / usr / bin / PuppetMasmerd -nodes

Dacă este necesar, alte fișiere pot fi conectate la site.pp dacă vă puteți conecta. Pentru ca test, rulați în acest fișier, puteți aplica cea mai simplă instrucțiune.

fișier ("/ etc / sudoers":

proprietar \u003d\u003e root,

grup \u003d\u003e rădăcină,

Toate fișierele de configurare ca servere și clienți sunt situate în / etc / marionetă. File Fileserver.conf despre care am vorbit mai sus nu sunt necesare și utilizate numai atunci când Puppet va funcționa ca server de fișiere. Ubuntu În acest fișier, subdirectorul / etc / fișiere / fișiere este exportat. În subdirectorul SSL, certificatele și cheile vor fi utilizate pentru a cripta conexiunile clienților. Tastele sunt create automat când porniți mai întâi PuppetMasmerd, le puteți crea prin comandă manuală.

$ sudo / usr / bin / puppetSard -Mkusers.

Puppetd.conf și PuppetMasmerd.Conf sunt similare. Acestea includ unii parametri ai demonilor de pe sistemul și serverul Clian. Fișierul client este diferit numai de prezența parametrul serveruluiîndreptându-se către un computer pe care se execută păpușă.

server \u003d groapă.com.

logdir \u003d / var / jurnal / marionetă

vardir \u003d / var / lib / marionetă

rUNDIR \u003d / VAR / RUN

# Trimiteți un server de raport

Pentru a nu imprima totul manual, puteți crea un șablon folosind Puppeld.

$ Puppetd -Geconfig\u003e /etc/puppet/puppetd.conf

În mod similar, puteți crea atât site.pp pe server.

$ Puppetd -genmanifest\u003e /etc/puppet/manifests/site.pp

Un alt fișier Tagmail.conf vă permite să specificați adresele poștale la care vor fi trimise rapoarte. În cel mai simplu caz, puteți utiliza o singură linie.

toate: [E-mail protejat]

Fișierele de configurare nu sunt suficiente, astfel încât clientul să se poată conecta la server. Pentru a face acest lucru, trebuie încă să semnați certificate. În primul rând, pentru ca serverul să afle despre noul computer din sistemul clientului, introducem comanda:

$ sudo puppedd -server grinder.com -waitFortorrt 60

info: Certificat de solicitare

avertisment: Certificatul de peer nu va fi verificat în această sesiune SSL

notă: Nu a primit certificat

Dacă se emite un alt șir, trebuie să verificați funcționarea serverului.

$ Ps aux | Păpușă grep.

puppet 5779 0.0 1.4 27764 15404? SSL 21:49 0:00 Ruby / Usr / Sbin / PuppetMasârt

Firewall-ul trebuie să permită conexiunile la portul 8140.

Pe server primim o listă de certificate care au nevoie de semnături.

$ sudo puppetca -list

nomad.groder.com.

Și să abonați un certificat de client.

$ sudo Puppetca -Sign Nomad.groder.com

Acum, clientul se poate conecta liber la server și poate primi setări.

Din păcate, toate posibilitățile de marionete din cadrul articolului arată pur și simplu nu sunt posibile. Dar, după cum vedeți acest instrument funcțional și flexibil care vă permite să rezolvați majoritatea sarcinilor asupra administrării simultane a unui număr mare de sisteme. Dacă trebuie să configurați mai multe sisteme prin natura lor. Și cel mai important proiect a reușit să colecteze până acum o comunitate mică, dar constant în creștere. Prin urmare, sperăm că o idee bună nu va da să moară sau să se ducă deoparte.

Nu cu mult timp în urmă pe paginile revistei, am văzut sistemul telecomandă Configurarea mașinilor CFINGINE UNIX, care facilitează foarte mult viața administrator de sistem Prin automatizarea acțiunilor pentru a configura o multitudine de noduri de rețea. Dar, indiferent cât de convenabil cfecinie, are multe dezavantaje, care sunt lipsiți de un sistem numit marionetă.

Imaginați-vă ca administrator de sistem responsabil pentru menținerea performanței sutelor și a altor mașini care rulează sisteme de operare, cum ar fi Unix. Fiecare dintre ele necesită configurare, actualizări periodice și monitorizare, în timp ce se presupune că multe dintre ele îndeplinesc funcții similare.

Două treimi sunt stații de lucru, mai multe - routere, restul sunt mai multe servere web și depozite de date. Întrebare: Cum de a gestiona această economie? Cel mai simplu răspuns este ușor de conectat la fiecare dintre ele folosind ssh și face modificările necesare. Cu toate acestea, această metodă are două probleme. În primul rând, este foarte laborioasă. În al doilea rând, administratorul va trebui în mod constant să efectueze multe acțiuni monotone (de exemplu, să se actualizeze OpenOffice.org pe toate stațiile de lucru, va trebui să completați aceleași comenzi de câteva zeci de ori). Puteți încerca să evitați această problemă scriind mai multe script-uri care se vor conecta la fiecare mașină și să efectueze comenzi pre-prescrise. Dar aici aștepți probleme.

Scripturile vor trebui să modifice în mod constant pentru a le ajusta la fiecare sarcină; În scripturi va trebui să țină seama de diferența dintre sistemele de operare și versiunile, vor trebui să le depaneze înainte de a aplica mașinilor de lucru. În general, nu Commovilfo. Răspunsul corect este de a utiliza așa-numitele sisteme de control de la distanță pentru configurații, cei mai cunoscuți reprezentanți ai sisteme deschise Cmicine și marionetă. Astfel de sisteme își asumă toate responsabilitățile pentru a aduce configurația mașinilor la ascultare, cerând de la administrator doar o descriere a stării finale a sistemului într-o limbă specială (de exemplu, o descriere a căror pachete trebuie să fie instalate în sistemul de operare, care ar trebui adăugate rânduri la fișierele de configurare, care comenzi trebuie completate etc.). După aceasta, toate nodurile în sine vor primi informații despre starea solicitată de la server și se va efectua autoconfigurarea sistemului. Datorită acestui mecanism, mașinile noi pot fi configurate pe deplin fără intervenția umană, iar cele existente sunt reconfigurate prin adăugarea doar a câtorva rânduri în descrierea statutului.

Marionetă?

Am dedicat deja un articol întreg de sistemul de cmicină, așa că astăzi ne vom concentra pe sistemul de marionetă, care poate fi numit adeptor ideologic. Puppet a fost dezvoltat de Luke Kanies, care a fost obosit de restricțiile de cmicine și a decis să-și creeze un analog mai perfect de la zero. Dacă ați folosit deja CFENFINE, probabil veți găsi un sistem mai convenabil și mai puternic. Limba de descriere a statului de marionetă este mai mare și flexibilă, astfel încât administratorul să nu aibă nevoie să aibă grijă de astfel de lucruri precum scrierea regulilor individuale pentru fiecare tip de OS sau descriere detaliata efectuarea acțiunilor banale. Marioneta îi permite domnului său să se concentreze asupra a ceea ce vrea să facă, în loc să facă acest lucru (de exemplu, să stabilească un pachet specific la oricare dintre sistemele de operare acceptate, este suficient să scriem literalmente mai multe linii vorbind "Instalați acest program", în loc de a descrie comenzi, necesare instalațiilor sale). Puppet a scris: limba simplă Ruby, deci este suficient să se potrivească simplu sub sarcina specifică și să extindă funcționalitatea (este furnizat un sistem flexibil de plugin).

În plus, spre deosebire de modelul de ccingine, care se rotește de fapt în jurul unei persoane, o comunitate de entuziast mare a fost formată în jurul păpușii, ceea ce face rafinamentul la codul este împărțit de exemplele de configurare și de a scrie documentația.

În general, marioneta oferă impresia unui sistem mai modern și bine gânditor, cu un design bun. La fel ca cfecintanța, suportă aproape toate sistemele de operare moderne UNIX (inclusiv MacOS X) și poate lucra și în mediul Cygwin peste Windows. Lista dependențelor sale include numai interpretul Ruby și instrumentul factor, astfel încât nu ar trebui să existe probleme cu instalarea (justiția merită să spuneți că lista dependențelor de cctină este, de asemenea, mai scurtă).

Instalare

Ca și CFENGNE, Puppet este un sistem client-server care constă dintr-un server de control și noduri subordonate. Serverul stochează descrierea stărilor finale ale nodurilor (care din punct de vedere al păpuși se numește manifest) și așteaptă legătura lor. La fiecare jumătate de oră (implicit) clientul se conectează la server, primește o descriere a stării finală de la acesta, verifică-o cu curentul și, dacă acesta și / sau starea descrisă s-a modificat, consolidând sistemul, după care intră în culcare . Comunicarea se efectuează printr-un canal criptat, astfel încât atacurile bazate pe substituția de descriere a stării sunt excluse (dar dacă cracker va capta serverul, atunci toate nodurile vor fi sub controlul său).

Puppetul este inclus în depozitul tuturor distribuțiilor populare, astfel încât instalarea sa nu ar trebui să provoace dificultăți. De exemplu, în Debian / Ubuntu, clientul de marionetă poate fi instalat după cum urmează:

$ sudo apt-get instalare marionetă

Un server - deci:

$ sudo apt-get instalare Puppetmaster Puppet

Fișierele de configurare a clientului și a serverului sunt stocate în directorul / etc / Puppet. Cel mai important dintre ele este fișierul /etc/puppet/manifests/site.pp care conține manifest.

Stochează descrierea stării și ar trebui să existe numai pe server. Pentru confortul de depanare adăugați la ea configurare simplă:


Classwd de clasă (
Fișier ("/ etc / passwd":
Proprietar \u003d\u003e root,
Grup \u003d\u003e rădăcină,
MODE \u003d\u003e 644,
}
}
NODE Implicit (
Include passwd.
}

Aceste rânduri descriu statul în care proprietarul proprietarului / etc / passwd ar trebui să fie rădăcină, iar drepturile de acces la 644 sunt setate la 644. În secțiunea următoare, vom lua în considerare formatul dosarului manifest. Cel de-al doilea fișier cel mai important este numit /etc/puppet/puppet.conf. Setează configurația serverului și a clientului, deci trebuie să fie prezentă pe toate mașinile organizate în rețeaua de marionetă. În Ubuntu, acest fișier conține minimul necesar și în majoritatea cazurilor suficiente setări. Mai jos sunt date cu comentarii:

# VI /Etc/puppet/puppet.conf.
# Modalități standard spre cataloage
Logdir \u003d / var / jurnal / marionetă
Vardir \u003d / var / lib / marionetă
SSLDIR \u003d / VAR / LIB / PUPUT / SSL
RunDir \u003d / Var / Run / Puppet
# Facilitarea instrumentului de localizare,
# folosit pentru a obține informații despre sistemul de operare
Factpath \u003d $ Vardir / Lib / Facter
# Sincronizați pluginurile
# (pluginurile instalate de pe server - sunt copiate clienților)
Pluginsync \u003d adevărat.
# Catalog cu șabloanele (citiți mai jos)
Templatedr \u003d $ Confdir / Șabloane
# Sincronizarea cu etckeeper
# (Cine știe - vor înțelege, restul nu au nevoie)
preri_command \u003d / etc / Puppet / etckeeper-comis
Postrun_Command \u003d / etc / Puppet / Eckeeper-CommitPost

Fișierul de configurare poate include un numar mare de Diferite opțiuni ale căror informații pot fi obținute prin generarea unui config implicit:

$ sudo PuppetMasmerd-Genconfig\u003e / etc / Puppet /
Puppetd.conf.default.

Configurarea implicită a clientului este generată utilizând o altă comandă:

$ sudo Puppet --Genconfig\u003e /etc/puppet/puppetd.conf.default

Fișierele FileServer.conf și Auth.conf sunt utilizate pentru a configura serverul de fișiere (citiți acest lucru în secțiunea server de fișiere) și autentificare. În timp ce nu au sens. La sfârșitul configurației, serverul de păpuși trebuie repornit:

$ sudo /etc/init.d/puppetmaster repornește

După aceasta, el va fi gata să accepte cererile clienților. Cu toate acestea, fără un certificat semnat, niciun client nu poate obține un manifest de la server și să configureze mașina.

Prin urmare, trebuie să conducem clienți de păpuși în modul de testare, astfel încât să poată transfera certificatele lor la serverul de semnături (apropo, simultan pe toate mașinile pe care le poate fi realizate utilizând instrumentul Shmux):

$ sudo puppedd -server server de păpuși --verbose -test

Ne întoarcem la server și obținem o listă de certificate gata pentru semnături:

$ sudo Puppetca --list

Alegeți o gazdă din listă și semnați certificatul IT:

$ sudo Puppetca --Sign Nomad.groder.com

Sau abonăm totul imediat:

$ sudo Puppetca --sign -all

Acum puteți rula clienții în modul Combate. Dar mai întâi trebuie să înregistrați numele serverului de păpuși în fișierul de configurare (în mod implicit, numele său este doar marionetă):

$ sudo su.
# Echo "" \u003e\u003e /etc/puppet/puppet.conf
# Echo "Server \u003d Puppet-server.com" \u003e\u003e /etc/puppet/puppet.conf
# IEȘIRE.

Rulați clienții:

$ sudo /etc/init.d/puppet start

Status Descriere Limba

Așa cum s-a menționat mai sus, marioneta își folosește propria limbă de descriere a stării finală a sistemului de operare, cu care Sysadmin indică modul în care trebuie să se acorde componentele OS pentru a obține starea dorită. Acesta este un limbaj destul de complicat, care, cu toate acestea, este mult mai ușor decât orice limbă de programare. Dacă sunteți cel puțin superficial familiarizat cu limba de script de bash, puteți înțelege cu ușurință limba de marionetă. Elementul cheie al limbii este resursele cu care descrierea se bazează pe modul în care trebuie administrată una dintre componentele OS. De exemplu, următoarea resursă cea mai simplă descrie starea dorită a fișierului / etc / passwd:

# Vi /etc/puppet/manifests/site.pp.
Fișier ("/ etc / passwd":
Proprietar \u003d\u003e "rădăcină"
}

Aici fișierul este un tip de resurse. Există mai multe duzini de ele, de la resurse care gestionează fișiere, ca în acest exemplu și se termină cu pachete și servicii. Rând / etc / passwd - nume de resurse.

În cazul tipului de fișier, numele coincide cu calea către fișier, cu toate acestea, în alte tipuri, numele poate fi arbitrar. Rândul proprietarului \u003d\u003e "root" descrie instalarea atributului proprietarului la valoarea rădăcinii, adică se spune că proprietarul (proprietar) al fișierului specificat trebuie să fie un administrator.

Fiecare tip de resurse are propriul set de atribute disponibile pentru modificarea, plus există atribute metalice speciale care pot fi utilizate în orice resursă. Una dintre calitățile importante ale resurselor este posibilitatea de a le referi la acestea. Acest lucru poate fi folosit pentru a forma lanțuri de dependență. Următoarea intrare creează o resursă / etc / grup care depinde de resurse / etc / passwd (dependențele sunt specificate utilizând atributul Meta Necesar):

# Vi /etc/puppet/manifests/site.pp.
Fișier ("/ etc / grup":
Necesită \u003d\u003e fișier ["/ etc / passwd"],
Proprietar \u003d\u003e "rădăcină",
}

Aceasta înseamnă că resursa / etc / grup poate fi configurată (dată celor de mai sus) numai dacă resursele / etc / passwd este configurată. Resursele pot fi grupate într-o colecție de resurse numite clase. Este necesar pentru a combina similare în sensul și tipul de sarcini efectuate într-o resursă abstractă. De exemplu, pentru comoditate, am putea combina instalarea și lansarea serverului Nginx Web la o resursă abstractă cu același nume:

# Vi /etc/puppet/manifests/site.pp.
Clasa nginx (
Pachet ("nginx":
Asigurați-vă \u003d\u003e instalat
}
Service ("nginx":
Asigurați-vă \u003d\u003e Rularea,
Necesită \u003d\u003e pachet ["nginx"],
}
}

Aici tipul de resurse de pachete este utilizat pentru a instala pachetul Nginx la sistem, iar serviciul este să porniți serviciul de același nume. Utilizarea necesită, forțăm sistemul să pornească serviciul numai dacă pachetul a fost instalat cu succes. Comoditatea clasei este că pot fi incluse și în funcție de:

# Vi /etc/puppet/manifests/site.pp.
Service ("Squid":
Asigurați-vă \u003d\u003e Rularea,
Necesită \u003d\u003e Clasa ["Nginx"],
}

Ca și în limbile reale OOP, clasele se pot moșteni reciproc și pot suprascrie atributele:

# Vi /etc/puppet/manifests/site.pp.
Classwd de clasă (
Fișier ("/ etc / passwd":
Proprietar \u003d\u003e "rădăcină",
grup \u003d\u003e "rădăcină",
}
}
Classwd-bsd moștenește passwd (
Fișier ["/ etc / passwd"] (grup \u003d\u003e "roată")
}

Aici, clasa PassWD-BSD este moștenită de la passwd pentru a suprascrie atributul de resurse / etc / passwd (în sistemele BSD / etc / passwd aparține grupului de roți, așa că am creat o clasă separată pentru astfel de sisteme). Mai târziu, luăm în considerare modul mai corect și evident de a selecta valori alternative de atribut folosind condiții.

Variabilele sunt una dintre componentele inalienabile ale oricărui limbaj de programare și în limba de marionetă, au și ei. Variabilele pornesc de la marcajul $ și pot conține orice număr, șir sau valoare booleană (adevărat, fals):

$ Dator_apache \u003d adevărat
$ Apache_version \u003d "2.2.14"

Una dintre cele mai puternice proprietăți ale limbajului de păpuși asociate cu variabilele este integrarea cu un instrument pentru obținerea informațiilor despre mașina de referință. Acest utilitar returnează toate informațiile specifice mașinii, sub forma unei perechi de "valoare cheie", care în marionetă sunt transformate în variabilele de același nume. Împreună cu instrucțiunile condiționate ale limbajului de marionetă, ele pot fi utilizate pentru a altera atributele de resurse în funcție de proprietățile mașinii.

De exemplu, clasa passwd descrisă mai sus poate fi ușor rescrisă pentru a selecta automat atributul în funcție de tipul de operare (clasa în sine nu mai este necesară):

# Vi /etc/puppet/manifests/site.pp.
Fișier ("/ etc / passwd":
Proprietar \u003d\u003e "rădăcină",
Grup \u003d\u003e $ kernel? (
Linux \u003d\u003e "rădăcină",
FreeBSD \u003d\u003e "roată",
},
}

În funcție de care sistemul de operare va fi analizat de acest fragment al manifestării, valoarea atributului grupului va fi fie rădăcină, fie roată. În plus față de operatorul condițional, limbajul de marionetă suportă operatorul de selecție a cazului, care poate fi utilizat pentru a crea una sau altă resursă în funcție de valoarea variabilei:

# Vi /etc/puppet/manifests/site.pp.
Case $ de funcționareSystem (
Redhat: (serviciu (httpd ": Asigurați \u003d\u003e Running))
Debian: (Service ("Apache": Asigurați-vă \u003d\u003e Rularea))
Implicit: (Service ("Apache2": Asigurați-vă \u003d\u003e
Alergare))
}

Acest cod definește diferite opțiuni de resurse pentru tipul de serviciu, în funcție de sistemul de operare (numele de serviciu în diferite distribuții Linux pot fi diferite, deci ce fel de serviciu trebuie să ruleze marionetă, este necesar să se specifice individual pentru fiecare dintre ele).

Varianta implicită este utilizată dacă valoarea variabilei nu corespunde niciuneia dintre opțiunile anterioare. În plus față de tipurile de resurse discutate anterior, pachetul și service, marionetă susține un număr mare de alții, inclusiv cele create de dezvoltatorii de tip de resurse terțe. Descrierea detaliată, inclusiv exemple, atribute și caracteristici susținute, puteți găsi în documentația oficială - http://docs.puppetlabs.com/references/stable/type.html. Mai jos este o listă și o scurtă descriere a celor mai utilizate:

Tipuri populare de resurse de marionete

  • managementul jobului Cron - Cron
  • eXEC - Lansarea de scripturi și echipe
  • fișier - Gestionarea fișierelor
  • fileBucket - Fișiere de backup
  • grupul de gestionare a grupului
  • gazdă - Gestionarea înregistrărilor în fișierul / etc / gazde
  • interfață - Configurarea interfețelor de rețea
  • montare - sisteme de fișiere de montare
  • notificați - trimiterea unui mesaj la fișierul jurnal de păpuși
  • pachet - Managementul pachetelor
  • servicii de gestionare a serviciilor
  • sSHKEY - Management Keys SSH
  • tidy - Ștergeți fișierele în funcție de condițiile
  • utilizator - Gestionarea utilizatorilor
  • zONE - Gestionarea zonelor Solaris

Al doilea după resurse este importanța limbajului de marionetă - acestea sunt noduri (noduri). Cu ajutorul lor, administratorul poate descrie ce ar trebui să se aplice cele sau alte resurse și clase la ce mașini. Cu alte cuvinte, acesta este modul de a specifica o configurație individuală pentru fiecare dintre mașinile care participă la rețeaua de păpuși. Cel mai simplu exemplu al nodului este dat la începutul articolului din secțiunea "Instalare":

# Vi /etc/puppet/manifests/site.pp.
NODE Implicit (
Include passwd.
}

Acesta este nodul implicit implicit, care include passwd-ul resursei / clasa. Implicit înseamnă "toate celelalte noduri", prin urmare, passwd-ul de resurse / clasa, definit undeva de mai sus, vor fi configurate pe fiecare dintre ele. Includeți cuvântul cheie aici este folosit pentru comoditate, de fapt, toate clasele și resursele pot fi descrise direct în descrierea site-ului, dar nu este recomandat să faceți acest lucru. În plus față de implicit, puteți specifica numele rețelei aparatului în numele gazdei (apoi toate resursele descrise în nod vor fi configurate numai pe această mașină) sau un nume arbitrar (atunci acest nod poate fi moștenit de un alt nod) . Pentru a înțelege cum funcționează totul împreună cu clasele și resursele, luați în considerare un exemplu de un manifest de păpuși gata folosit pentru a configura două mașini de rețea (server web și server NTP):

# Vi /etc/puppet/manifests/site.pp.
# Instalarea și pornirea serverului ssh
Clasa sshd (
Pachet (OpenSSH-Server: Asigurați-vă \u003d\u003e instalat)
Service (SSHD:
Nume \u003d\u003e $ sistem de operații? (
Fedora \u003d\u003e "sshd",
debian \u003d\u003e "ssh",
implicit \u003d\u003e "sshd",
},
Activați \u003d\u003e Adevărat,
Asigurați-vă \u003d\u003e Rularea,
}
}
# Instalarea și pornirea Apache
Clasa httpd (
Pachet (httpd: Essure \u003d\u003e Instalat)
Serviciu (httpd:
Activați \u003d\u003e Adevărat,
Asigurați-vă \u003d\u003e Rularea,
}
}
# Instalarea și pornirea serverului NTP
Clasa NTPD (
Pachet (NTP-server: asigură \u003d\u003e instalat)
Serviciu (
NTP-server:
Activați \u003d\u003e Adevărat,
Asigurați-vă \u003d\u003e Rularea,
}
}
# Nod de bază, folosit numai ca părinte al tuturor celorlalte
Baza de nod (
Include sshd.
}
# Nod pe care va fi localizat serverul web
Nod web.server.com moștenește baza (
Inlude httpd.
}
# Nod server NTP
Nod ntp.server.com moștenește baza (
Includeți NTPD.
}

Această configurație simplă are o mulțime de configurare: conduce la instalarea și lansarea Apache pe aparat cu adresa web.server.com și instalarea și lansarea serverului NTP cu mașina ntp.server.com.. În plus, ambele mașini instalează un server ssh. O astfel de configurație nu are greu de aranjat cel puțin un administrator; Acesta va trebui să finalizeze serios pentru a preda serverele de configurare corecte, primiți configuri proaspete și alte fișiere de la antetul de păpuși.

Cu toate acestea, arată clar puterea de marionetă. Cu ajutorul unui configurat simplu, am făcut ca mașinile să instaleze și să pornească software-ul necesar și să-l susțină în starea de lucru (dacă serverul cade, păpușul în sine va reevalua pentru a aduce sistemul la starea dorită).

Server de fișiere.

Multe sarcini administrarea la distanță Nu pot fi rezolvate fără copierea fișierelor suplimentare pe mașini. Poate fi pre-pregătit configuri, pagini web pentru Apache, pachete care lipsesc în depozitul oficial și multe altele. Pentru a facilita procesul de transferare a acestor fișiere la nodurile de la distanță, marioneta include un server de fișiere.

Setările serverului de fișiere sunt stocate în fișierul /etc/puppet/fileServer.conf. Pentru a forța marioneta să ofere clienților conținutul unui anumit director, trebuie să puneți mai multe linii în ea:

# Vi /etc/puppet/fileserver.conf.
Calea \u003d / var / marionetă / fișiere
Permiteți * .Server.com.

Aceste două linii indică faptul că directorul / var / fișiere / fișiere trebuie să fie accesibile tuturor gazdelor domeniului server.com. În plus, putem specifica numele de domeniu complet al mașinii permise sau adresa IP, precum și reducerea directivei RENY. După aceasta, orice fișier din acest director poate fi mutat la client utilizând resursa de fișier. De exemplu:

# Vi /etc/puppet/manifests/site.pp.
Fișier ("/etc/httpd/conf/httpd.conf":
Sursa \u003d\u003e "Puppet: //httpd/httpd.conf",
MODE \u003d\u003e 644,
}

Fișierul httpd.conf situat pe server din directorul / Var / Puppet / Fișiere / httpd va fi copiat pe mașina țintă de pe calea specificată în numele resursei.

Concluzii

În acest articol, am analizat o parte foarte mică din trăsăturile de păpuși. De fapt, acesta este un sistem cuprinzător, descris pe deplin numai pe paginile cărții. În același timp, marioneta este foarte simplă în înființarea și acompaniarea, mai ales că puteți găsi o mulțime de exemple de configurație.

Info.

  • Puppet folosește protocolul HTTP, astfel încât să crească performanța poate funcționa un server web.
  • Puppet poate fi folosit pentru autoconfigurare și mențineți o mașină locală.
  • Combinând marionetă, instalarea rețelei OS (PXE-INSTALL) și imagini de instalare de auto-asamblare, puteți crea o rețea complet configurabilă de mașini, pentru a implementa ceea ce este suficient pentru a executa o comandă.
  • Puppet folosește multe companii mari în activitatea lor, cum ar fi Proiectul Google, Fedora, Universitatea Stanford, Red Hat, Siemens Solution IT și SugarCRM.

Link-uri.

  • http://docs.puppetlabs.com - Documentația de păpuși
  • http://docs.puppetlabs.com/guides/language_tutorial.html - Descrierea completă a limbii de marionete
  • http://docs.puppetlabs.com/references/stable/type.html - Tipuri de resurse

Când numărul de servere pe care le gestionați mai puțin de zece se întreabă rar despre gestionarea centralizată, acest lucru nu este necesar. Când serverele zeci - controlul centralizat al software-ului și configurațiilor este extrem de util. Când serverele sunt sute și mii - este vital. Există o mulțime de astfel de programe, de exemplu: bucătarul, cmuncina, marionetă ... care este ultima și va fi discutată în această intrare.

Puppetul este considerat a fi una dintre cele mai bune soluții în acest fel. Folosește companii precum Google, Citrix și Red Hat. Aceasta este o aplicație client-server scrisă în limba de programare Ruby, care se extinde la două versiuni:

  • Puppet Open Source - Complet versiune gratuită.
  • Puppet Enterprise este o configurație gratuită la 10 servere, trebuie să cumpere licențe.

Luați în considerare instalarea serverului și a agentului de sursă deschisă de păpuși, care este prezent în pachetele cele mai moderne distribuții. Mai mult, vom merge la Ubuntu 12.04 Pardolin precis.

Partea serverului de păpuși este numită maestru papusar, începeți instalarea de la acesta:

: ~ # Apt-get instalare Puppetmaster

Și acum clientul:

: ~ # Apt-get instalare marionetă

În fișierul de configurare a clientului /etc/puppet/puppet.conf. Trebuie să spuneți despre server adăugând următoarea secțiune:

Server \u003d Puppet.Local Raport \u003d adevărat plugininc \u003d fals

La etapa inițială PluginSync este mai bine să opriți.

Să începem clientul de păpuși să creeze o cerere de certificat:

. 22: 9A: BA: 42: B8: A1: 63: 9E: 1F: 1F: 23: 51 Ieșirea; Nici un certificat găsit și WAITFORTRT este dezactivat

Pe server este necesar să verificați dacă solicitarea certificatului este obținută și, dacă da, scriem certificatul:

: ~ # Puppetca - List "Linux.Local" (E5: EA: AC: 5b: 22: 9a: BA: 42: B8: A1: 63: 9E: 1F: 1F: 23: 51): ~ # Puppetca - -SIGN Linux.Local: Cerere de certificare semnată pentru Linux.Local Notă: eliminarea Puppetului de fișier :: SSL :: CerdRequest Linux.Local la "/var/lib/puppet/ssl/ca/requests/linux.local.Pem"

Repetați pasul anterior pe client:

: ~ # Puppetdd - Iverbose - Cele mai multe informații: Certificatul de caching pentru Linux.Local Info: Retrieveving Plugin Info: Caching Certificat_revocation_list pentru Caching Info: Caching Catalog pentru Linux.Local Info: Aplicarea versiunii de configurare "1356278451" Info: Crearea fișierului de stat / Var / lib / Puppet / State / State.Yaml Notă: Catalogul finalizat Rulați în 0,02 secunde

Mare, totul funcționează. Du-te la crearea primului manifestat. Manifesto, ele sunt descrise într-o limbă declarativă specială. Vom avea imediat grijă de bine, folosim structura modulară și clasele. De exemplu, scriem un modul care va menține fișierul actualizat / etc / gazde Pe toate serverele noastre.

Verificați acolo unde păpușul caută module:

: ~ # Puppet Aplicați - Concilfigprint Modulepath / etc / Puppet / Module: / USR / Share / Puppet / Module

Creați directoare pentru modulul dvs.

: ~ # CD / etc / Puppet / Module: ~ # Mkdir gazde; CD-uri; Mkdir se manifestă; CD-urile se manifestă.

Primul manifest, el este dosarul principal al modulului - ar trebui să fie numit init.pp.

Gazde de clasă (# Puppet.Local Host ("Puppet.Local": Asigurați-vă \u003d\u003e "prezent", țintă \u003d\u003e / etc / gazde ", ip \u003d\u003e" 192.168.0.1, gazdă_aliases \u003d\u003e "marionetă",) Linux . Linux.local ": Asigurați-vă \u003d\u003e" prezent ", țintă \u003d\u003e" / etc / gazde ", IP \u003d\u003e 192.168.0.2", gazdă_aliases \u003d\u003e "Linux",)

Implicit, marioneta caută un fișier. /etc/puppet/manifests/site.pp. Pentru a descărca configurația, dați-le următoarea formular:

NODE Implicit (includeți gazdele)

Verificarea manifestului pe server:

: ~ # Puppet Apply --verbose /etc/puppet/manifests/Site.pp Info: Aplicarea versiunii de configurare "1356281036" ANUNȚ: / Etapa // Gazdă / Asigurați-vă: Au fost create informații: FileBucket Adăugarea (MD5) Notă: / Etapa // Gazdă / Asigurare: Aviz creat: Catalogul finalizat Rulați în 0.03 secunde

Pe client:

: ~ # # LL / etc / gazde RW-R - R- 1 rădăcină rădăcină 290 Dec 16 19:10 / etc / Hosts: ~ # Puppetd - Iverbose - Cele mai multe informații: Caching Catalog pentru Linux.Local Info: Aplicarea configurației Versiune "1356283380" Info: FileBucket Adăugarea anunțului: / Etapa / Hosts / Host / Asigurați: Aviz creat: a creat Notă: Catalog finalizat Rulați în 0.04 secunde: ~ # LL / etc / Hosts -Rw-R - R- 1 rădăcină rădăcină 551 decembrie 23 20:43 / etc / gazde

După ce ne-am asigurat că totul funcționează, permite serviciului să înceapă serviciul, în / etc / implicit / marionetă Schimbare:

# Start Puppet pe boot? Start \u003d Da.

Rulați un serviciu

: ~ # Service Puppet Start

Puppet va fi intervievat de un server Puppetmaster la fiecare 30 de minute pentru a schimba configurația și, dacă este necesar, efectuați setarea corespunzătoare a sistemului.

Sergey Yaremchuk.

Configurația centralizată a sistemelor Unix folosind marionetă

Gestionarea unui număr mare de sisteme UNIX nu pot fi numite confortabile. Pentru a schimba un parametru, administratorul trebuie să acceseze fiecare mașină, scripturile pot ajuta doar parțial, și nu în toate situațiile.

Trebuie recunoscut faptul că administratorii de rețea Windows sunt încă într-o poziție mai avantajoasă. Este suficient să schimbați setările politicilor de grup și, după un timp, toate computerele de rețea, inclusiv cu un sistem de operare nou instalat, vor "recunoaște" despre inovare dacă sunt, desigur, îngrijorări. Privind în jur pentru o perioadă lungă de dezvoltare a Unix, se poate observa că nimic nu se potrivește. Există soluții precum KickStart, care ajută la instalarea primară a sistemului de operare, dar finalizarea ulterioară va necesita eforturi considerabile. Soluții comerciale, cum ar fi Bladelogic și Opsware, problema automatizării setărilor rezolvă numai parțial, principalul lor avantaj este prezența unei interfețe grafice, iar numai organizațiile mari le pot dobândi. Desigur, există proiecte care oferă soluții gratuite, dar pentru tot timpul existenței lor nu au putut crea o comunitate mare. De exemplu, cmansina nu este foarte populară cu popularitatea aviaților, deși, în plus față de Linux, poate fi utilizată în * BSD, Windows și Mac OS X. Poate că este legată de complexitatea relativă în crearea de configurații. Sarcinile pozitive trebuie să țină cont de caracteristicile fiecărui sistem specific și să controleze manual secvența de acțiuni la executarea comenzilor. Administratorul trebuie să-și amintească faptul că pentru anumite sisteme este necesar să scrieți aduser pentru alții - Useradd, luați în considerare locația fișierelor în diferite sisteme și așa mai departe. Acesta este un ordin de mărime complicate procesul de scriere a comenzilor, este foarte dificil să creați configurația corectă din partea Go, iar configurațiile create citite într-un timp aproape nerealiste. În ciuda licenței CFINGINE GPL, de fapt, un proiect al unei persoane care controlează toate modificările și nu este foarte interesat să construiască o societate deschisă. Ca rezultat, cmansina este destul de satisfăcătoare dezvoltatorului, iar pentru administratorii rămași este mai degrabă o durere de cap în exces. Pentru a îmbunătăți cfecintanța, au fost create diverse adăugiri de către dezvoltatorii terți, ceea ce a înrăutăț adesea situația. Autorul mai multor astfel de module la cotgine Luke Kanies (Luke Kanies) Vitoga a decis să dezvolte un instrument similar, dar lipsit de multe defecte de ccingine.

Caracteristicile de păpuși

Puppet, cum ar fi CFINGINE, este un sistem client-server care utilizează un declarativ, adică obligatoriu pentru a executa o limbă pentru a descrie sarcinile și biblioteca pentru solid. Clienții periodic (în mod implicit la fiecare 30 de minute) sunt conectați la serverul central și obțineți ultima configurație. Dacă setările nu au fost coincis cu starea sistemului, acestea vor fi executate, dacă este necesar, serverul se referă la operațiunile de operații. Serverul de mesaje poate salva software-ul sau fișierul, creați un program RRD, trimiteți la e-mailul specificat. Nivelurile suplimentare de abstractizare tranzacțională și a resurselor oferă o compatibilitate maximă cu setările și aplicațiile sovietice, permițându-vă să vă concentrați asupra obiectelor de sistem, fără a vă îngrijora diferențele în implementarea și descrierea comenzilor detaliate ale formatelor de fișiere. Administratorul operează numai cu tipul de obiect, restul marionetei se ia pe sine. Astfel, tipul de pachete știe aproximativ 17 sisteme batch, care vor fi recunoscute automat pe baza informațiilor despre versiunea distribuției sau a sistemului, deși, dacă este necesar, un manager de lot poate fi adăugat forțat.

Spre deosebire de scripturile, care sunt adesea imposibil de utilizat în alte sisteme, configurațiile de păpuși scrise de administratorii terților vor lucra în cea mai mare parte în orice altă rețea. Cartea de bucate de pui are deja trei duzini de rețete gata făcute. În prezent, marionetă sprijină oficial următoarele sisteme și servicii de operare: Debian, Redhat / Fedora, Solaris, Suse, Centos, Mac OS X, OpenBSD, Gentoo și MySQL, LDAP.

Marionetă. Limba

Pentru a continua, mai întâi ar trebui să fie tratată cu principalele elemente și capabilități lingvistice. Limba este una dintre punctele forte ale păpușii. Cu aceasta, descrie resursele pe care administratorul intenționează să le gestioneze, iar acțiunile. Spre deosebire de cele mai multe astfel de soluții, limba de marionetă vă permite să simplificați apelul la toate resursele similare pe orice sistem într-un mediu eterogen. O descriere a resurselor, de regulă, constă într-un nume, tip și atribute. De exemplu, specificați fișierul / etc / passwd și instalați atributele sale:

fișier ("/ etc / passwd":

Proprietar \u003d\u003e root,

Grup \u003d\u003e rădăcină,

MODE \u003d\u003e 644,

Acum, clienții, conectarea la server, copiați fișierul / etc / passwd și instalați atributele specificate. Într-o regulă, puteți defini mai multe resurse simultan, despărțându-le cu un punct cu o virgulă. Și dacă fișierul de configurare utilizat pe server diferă de la client sau nu este utilizat deloc? De exemplu, această situație poate apărea atunci când conexiunile VPN sunt setări. În acest caz, trebuie să specificați dosarul directivei sursă. Iată două opțiuni, puteți, ca de obicei pentru a specifica calea către fișierul CCDRUG, precum și utilizarea celor două protocoale ale URI care sunt acceptate: fișier și marionetă. În primul caz, se utilizează un link către un server extern NFS, este lansat un serviciu asemănător NFS în a doua versiune de marionetă, care exportă resurse. În ultimul caz, în mod implicit, calea este indicată în raport cu directorul rădăcină Puppet- / etc / Puppet. Adică, păpuși de legătură: //server.domain.com/config/sshd_config va corespunde fișierului / etc / Puppet / config / sshd_config. Puteți suprascrie acest catalog la Directiva FileBucket, deși este mai corectă utilizarea secțiunii de același nume în fișierul /etc/puppet/fileServer.conf. În acest caz, puteți restricționa accesul la serviciul numai a adreselor sofisticate. De exemplu, descriem secțiunea Config:

Calea / var / marionetă / config

Permiteți * .domain.com.

Permiteți 127.0.0.1.

Permiteți 192.168.0. *

Permiteți 192.168.1.0/224

Nega * .wireless.domain.com.

Și apoi consultați această secțiune atunci când descrieți resursele:

sursa \u003d\u003e "Puppet: //server.domain.com/config/sshd_config"

Înainte ca colonul să fie numele resursei. În cele mai simple cazuri, puteți specifica pur și simplu calea completă la fișier. În configurații mai complexe, este mai bine să utilizați alias sau variabile. Aliasul este stabilit utilizând Directiva Alias:

fișier ("/ etc / passwd":

Alias \u200b\u200b\u003d\u003e passwd

O altă opțiune de a crea un pseudonim este bine potrivită în cazul în care trebuie să vă ocupați de diferite sisteme de operare. De exemplu, creați o resursă care descrie fișierul sshd_config:

fișier (sshdconfig:

Nume \u003d\u003e $ sistem de operații? (

Solaris \u003d\u003e "/ usr / local / etc / ssh / sshd_config",

Implicit \u003d\u003e "/ etc / ssh / sshd_config"

În acest exemplu, ne-am confruntat cu posibilitatea de alegere. Un fișier pentru Solaris este specificat separat, fișierul / etc / ssh / sshd_config va fi selectat pentru toate celelalte. Acum puteți contacta această resursă ca sshdconfig, în funcție de sistemul de operare, va fi selectată calea dorită. De exemplu, indicăm că dacă daemonul sshd este lansat și a primit un nou fișier, trebuie să reporniți serviciul:

service (SSHD:

Asigurați-vă \u003d\u003e adevărat,

Aboneaza \u003d\u003e Fișier

Variabilele sunt adesea utilizate la lucrul cu datele utilizatorului. De exemplu, descrieți locația directoarelor de directoare de domiciliu:

$ Homeroot \u003d "/ home"

Acum puteți contacta fișierele unui anumit utilizator ca:

$ (Homeroot) / $ nume

Numele contului utilizatorului va fi înlocuit în parametrul $ nume. În unele cazuri, este convenabil să se determine valoarea implicită pentru un anumit tip. De exemplu, pentru tipul Exec, directoarele în care ar trebui să vadă fișierul executabilului sunt foarte adesea indicate:

Exec (calea \u003d\u003e "/ usr / bin: / bin: / usr / sbin: / sbin")

În cazul în care aveți nevoie pentru a specifica mai multe fișiere și directoare imbricate, puteți utiliza parametrul de recurs:

fișier ("/etc/apache2/conf.d":

Sursa \u003d\u003e "Puppet: // Puppet: //server.domain.com/config/apache/conf.d",

RECURSE \u003d\u003e "Adevărat"

Mai multe resurse pot fi combinate în clase sau definiții. Clasele sunt descrierea completă a sistemului sau a serviciului și sunt utilizate pentru a fi separate:

clasa Linux (

Fișier (

"/ etc / passwd": ovner \u003d\u003e root, grup \u003d\u003e rădăcină, modul \u003d\u003e 644;

"/ etc / umbra": Ovner \u003d\u003e Root, Group \u003d\u003e Root, Mod \u003d\u003e 440

Ca și în limbile orientate spre obiect, clasele pot fi suprascrise. De exemplu, în grupul FreeBSD - proprietarul acestor fișiere este roata. Prin urmare, să nu rescrieți complet resursa, să creați o nouă clasă FREEBSD, ceea ce va moșteni clasa Linux:

clasa FreeBsd moștenește Linux (

Fișier ["/ etc / passwd"] (grup \u003d\u003e roată);

Fișier ["/ etc / umbra"] (grup \u003d\u003e roată)

Pentru comoditate, toate clasele pot fi luate într-un fișier separat pentru a conecta directiva includă. Definițiile pot lua numeroși parametri ca argumente, dar nu acceptă moștenirea și sunt utilizate dacă aveți nevoie pentru a descrie mai multe obiecte utilizate. De exemplu, definim directorul de domiciliu al utilizatorilor și comenzile de care aveți nevoie pentru a crea un cont nou:

definiți utilizator_homedir ($ Group, $ Fullname, $ ingroups) (

Utilizator ("$ nume":

Asigurați-vă \u003d\u003e prezent

Comentariu \u003d\u003e "$ Fullname",

Gid \u003d\u003e grup de "$",

Grupuri \u003d\u003e $ ingroups,

Membru \u003d\u003e minim,

Shell \u003d\u003e / bin / bash ",

Home \u003d\u003e / home / $ nume ",

Necesită \u003d\u003e grup de grup [$],

Exec ("$ nume homedir":

Comanda \u003d\u003e "/ bin / cp -r / etc / skel / home / $ nume; / bin / chown -r $ nume: $ grup / home / $ nume"

Creează \u003d\u003e / home / $ nume ",

Necesită \u003d\u003e utilizator [$ nume],

Acum, pentru a crea un cont nou, este suficient să contactați user_homedir:

user_homedir ("sergej":

Grup \u003d\u003e "sergej",

FullName \u003d\u003e "Sergej Jaremchuk",

Ingroups \u003d\u003e ["Media", "admin]

Descrie separat nodurile (nodul) care susțin moștenirea, precum și clasele. Când clientul este conectat la serverul de păpuși, se va selecta secțiunea NODE corespunzătoare, iar setările specifice numai pentru acest computer sunt emise. Pentru a descrie toate celelalte sisteme, puteți utiliza implicit NODE. Descrierea tuturor tipurilor este dată în documentul "Type Reference" cu care trebuie să citiți în orice caz, cel puțin pentru a înțelege toate caracteristicile limbii de marionete. Diferite tipuri permit aceste comenzi, inclusiv atunci când efectuează anumite condiții (de exemplu, schimbarea fișierului de configurare), lucrați cu CRON, acreditări și grupuri de utilizatori, computere, resurse montate, servicii de pornire și oprire, instalare, actualizare și ștergere pachete, lucrați cu ssh Tastele, zonele Solaris și așa mai departe. Acesta este cât de simplu poate fi făcut pentru a actualiza lista pachetelor în distribuții utilizând APT, zilnic între 2 și 4 ore:

program (zilnic:

Perioada \u003d\u003e zilnic

Gama \u003d\u003e

exec ("/ USR / BIN / APT-GET UPDATE":

Programare \u003d\u003e zilnic

Actualizarea pentru această perioadă de către fiecare sistem va fi efectuată o singură dată, după care sarcina este considerată a fi executată și va fi ștearsă de la computerul client. Limba de marionetă sprijină alte structuri familiare: condiții, funcții, matrice, comentarii și similare.

Instalarea de marionetă.

Puppet va necesita rubin (pornind de la versiunea 1.8.1 și mai mare) cu suport OpenSSL și bibliotecile XMLRPC, precum și mai rapide bibliotecă. În depozitul Ubuntu 7.04, care a fost utilizat în timpul unei instalații de testare, pachetul de catelus este deja activat:

$ sudo apt-cache de căutare marionetă

~ $ RUBY -RXMLRPC / Client -e "PUTES: YEP"

da.

Dacă erorile nu sunt primite, înseamnă că tot ce aveți nevoie este deja inclus. Fișierele care descriu configurația dorită a sistemului, terminologia păpușilor se numește manifestări (manifestări). Când începeți, daemonul încearcă să citească fișierul /etc/puppet/manifests/site.pp, cu absența acesteia oferă un mesaj de avertizare. La testarea, puteți specifica un daemon pentru a lucra offline, în care este necesar manifestul:

$ sudo / usr / bin / PuppetMasmerd --nonodes

Dacă este necesar, alte fișiere pot fi conectate la site.pp dacă vă puteți conecta. Pentru ca test, rulați în acest fișier, puteți aplica cea mai simplă instrucțiune.

clasa sudo (

Fișier ("/ etc / sudoers":

Proprietar \u003d\u003e root,

Grup \u003d\u003e rădăcină,

MODE \u003d\u003e 440,

nODE Implicit (

Includeți sudo.

Toate fișierele de configurare, ambele servere și clienți sunt situate în / etc / marionetă. Fișierul FileServer.conf, pe care l-am vorbit deja, nu este necesar și este utilizat numai când Puppet va funcționa și ca server de fișiere. Ubuntu În acest fișier, subdirectorul / etc / fișiere / fișiere este exportat. În subdirectorul SSL, certificatele și cheile vor fi utilizate pentru a cripta conexiunile clienților. Tastele sunt create automat când porniți mai întâi PuppetMasmerd, le puteți crea manual cu o comandă:

$ sudo / usr / bin / puppeldMasmerd --mkusers

Puppetd.conf și PuppetMasmerd.Conf sunt similare. Acestea includ unii parametri ai demonilor de pe sistemul clientului și serverul. Fișierul client diferă numai de prezența parametrului serverului care specifică computerul pe care se execută PuppetMasmerd:

server \u003d groapă.com.

logdir \u003d / var / jurnal / marionetă

vardir \u003d / var / lib / marionetă

rUNDIR \u003d / VAR / RUN

# Trimiteți un server de raport

raport \u003d adevărat.

Pentru a nu imprima totul manual, puteți crea un șablon folosind Puppetdd:

$ Puppetd --genconfig\u003e /etc/puppet/puppetd.conf

În mod similar, puteți crea atât site.pp pe server:

$ Puppetd --genmanifest\u003e /etc/puppet/manifests/site.pp

Un alt fișier Tagmail.conf vă permite să specificați adresele poștale la care vor fi trimise rapoarte. În cel mai simplu caz, puteți utiliza o singură linie:

toate: [E-mail protejat]

Fișierele de configurare nu sunt suficiente, astfel încât clientul să se poată conecta la server. Pentru a face acest lucru, trebuie încă să semnați certificate.

În primul rând, că serverul învață despre un computer nou, introducem comanda pe sistemul clientului:

$ sudo puppedd --server grinder.com --WaitFORCET 60 "CEST

Firewall-ul trebuie să permită conexiunile la portul 8140.

Pe server primim o listă de certificate care au nevoie de semnături:

$ sudo puppetca -list

nomad.groder.com.

Și să abonați un certificat de client:

$ sudo Puppetca -Sign Nomad.groder.com

Acum, clientul se poate conecta liber la server și poate primi setări.

Din păcate, toate caracteristicile de marionete din articol sunt imposibile. Dar, după cum puteți vedea, acesta este un instrument funcțional și flexibil care vă permite să rezolvați majoritatea sarcinilor pe administrarea simultană a unui număr mare de sisteme. Și, cel mai important, proiectul a reușit să colecteze până acum o comunitate mică, dar în continuă creștere. Prin urmare, sperăm că o idee bună nu va da să moară sau să se ducă deoparte.

Noroc!

  1. Site-ul proiectului Bladelogic - http://www.bladelogic.com.
  2. Site-ul proiectului opsware - http://www.opsware.com.
  3. Site-ul proiectului CFINGINE - http://www.cfengine.org.
  4. Site-ul proiectului Puppet http://reductivlabs.com/projects/puppet.
  5. Puppet de bucate - http://www.reductivslabs.com/trac/puppet/tagspuppet%2Crecipe.
  6. Biblioteca mai rapidă -


Ți-a plăcut articolul? Împărtășește-l