Puncte:1

Configurarea manifestului marionetă pentru verificarea imaginii Docker

drapel cn

Sunt destul de nou în devops/ci/cd, așa că suportați-mă.

În prezent, primesc o configurație de manifest pentru marionete configurată pentru verificarea imaginii docker. Lasă-mă să încerc să-l aranjez:

Am un server puppet master cu următoarea configurație:

  • Versiunea Puppetmaster: 5.5.10-4ubuntu3
  • Ambele servere sunt Linux 20.04
  • Toate găzduite pe AWS

/etc/puppet/code/environments/production/manifests/site.pp

nod implicit {
    include „docker”
    docker::image { 'jorgemauriciodev/ubuntu-dockerfile-dev-v1': }
}

De fiecare dată când încerc o nouă comandă de verificare în .pp, repornesc serverul puppet master cu următoarea comandă: sudo systemctl restart puppet-master

Am instalat un modul numit garethr-docker pe ambele servere – agentul și masterul.

Pe serverul slave / agent, am această imagine de docker de imagine prezentă și rulând: jorgemauriciodev/ubuntu-dockerfile-dev-v1 Pentru primul pas, vreau doar să verific dacă imaginea există pe serverul meu slave. Mai târziu, îmi voi da seama pentru a mă asigura că rulează sau este construit cu Dockerfile.

Pe serverul slave/agent, rulez: sudo puppet agent âtest

Și primesc următorul mesaj de eroare:

Eroare: Nu s-a putut prelua catalogul de pe serverul la distanță: Eroare 500 pe SERVER: Eroare server: Eroare de evaluare: Eroare la evaluarea unui apel de funcție, Nu s-a putut găsi clasa ::docker pentru ip-123-123-123-123-123.us-east- 2.compute.internal (fișier: /etc/puppet/code/environments/production/manifests/site.pp, linia: 2, coloana: 5) pe nodul ip-123-123-123-123.us-east-2 .calcula.intern Avertisment: Nu se utilizează memoria cache în catalogul eșuat Eroare: nu s-a putut prelua catalogul; sărind alergarea

Are cineva idee despre ce greșesc cu fișierul manifest al marionetei?

Editare 1:

Am făcut câteva modificări care mi-au fost sugerate. Acum, fișierul meu are un nume diferit și a schimbat conținutul: /etc/puppet/code/environments/production/manifests/init.pp

include „docker”
clasa { 'docker':
  versiune => 'cel mai recent',
}
docker::image { 'jorgemauriciodev/ubuntu-dockerfile-dev-v1': }

Tot îmi returnează același mesaj de eroare.

Iată mesajul complet:

/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit
/usr/lib/ruby/vendor_ruby/puppet/util.rb:315: avertisment: obiectul depreciat#=~ este apelat pe Puppet::Transaction::Report; se întoarce întotdeauna zero
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit
/usr/lib/ruby/vendor_ruby/puppet/util.rb:315: avertisment: obiectul depreciat#=~ este apelat pe Puppet::Transaction::Report; se întoarce întotdeauna zero
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit
Informații: Utilizarea mediului configurat „producție”
Informații: Preluare pluginfacts
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit
/usr/lib/ruby/vendor_ruby/puppet/util.rb:315: avertisment: obiectul depreciat#=~ este apelat pe Puppet::Transaction::Report; se întoarce întotdeauna zero
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit
/usr/lib/ruby/vendor_ruby/puppet/indirector/request.rb:272: avertisment: URI.unescape este învechit
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit
Informații: Se preiau pluginul
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit
/usr/lib/ruby/vendor_ruby/puppet/util.rb:315: avertisment: obiectul depreciat#=~ este apelat pe Puppet::Transaction::Report; se întoarce întotdeauna zero
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit
/usr/lib/ruby/vendor_ruby/puppet/indirector/request.rb:272: avertisment: URI.unescape este învechit
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit
Informații: Preluare localități
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit
/usr/lib/ruby/vendor_ruby/puppet/util.rb:315: avertisment: obiectul depreciat#=~ este apelat pe Puppet::Transaction::Report; se întoarce întotdeauna zero
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit
/usr/lib/ruby/vendor_ruby/puppet/indirector/request.rb:272: avertisment: URI.unescape este învechit
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit
Eroare: Nu s-a putut prelua catalogul de pe serverul la distanță: Eroare 500 pe SERVER: Eroare server: Eroare de evaluare: Eroare la evaluarea unui apel de funcție, Nu s-a putut găsi clasa ::docker pentru ip-172-31-21-116.us-east- 2.compute.internal (fișier: /etc/puppet/code/environments/production/manifests/init.pp, linia: 1, coloana: 1) pe nodul ip-172-31-21-116.us-east-2 .calcula.intern
Avertisment: Nu se utilizează memoria cache în catalogul eșuat
Eroare: nu s-a putut prelua catalogul; sărind alergarea
/usr/lib/ruby/vendor_ruby/puppet/file_system/uniquefile.rb:126: avertisment: $SAFE va deveni o variabilă globală normală în Ruby 3.0
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit
/usr/lib/ruby/vendor_ruby/puppet/file_system/uniquefile.rb:126: avertisment: $SAFE va deveni o variabilă globală normală în Ruby 3.0

Editarea 2:

Am instalat alte module pe serverul master și serverul slave/agent cu această comandă:

sudo puppet module instalează puppetlabs-docker --versiunea 4.1.2

Și încă îmi returnează un mesaj de eroare, dar acum se pare că este unul diferit. Deci, probabil o problemă de sintaxă acum.

Iată partea importantă a mesajului.

Eroare: Nu s-a putut prelua catalogul de pe serverul de la distanță: Eroare 500 pe SERVER: Eroare server: Eroare de evaluare: Eroare la evaluarea unei declarații de resurse, Declarație duplicată: Clasa[Docker] este deja declarată; nu poate redeclara (fișier: /etc/puppet/code/environments/production/manifests/init.pp, linia: 3) (fișier: /etc/puppet/code/environments/production/manifests/init.pp, linia: 3, coloană: 1) pe nodul ip-123-123-123-123.us-east-2.compute.internal
Avertisment: Nu se utilizează memoria cache în catalogul eșuat
Eroare: nu s-a putut prelua catalogul; sărind alergarea

Pe lângă acest mesaj, încă îmi returnează acele avertismente, dar lista este mult mai mare. Cu toate acestea, nu cred că este o preocupare în acest moment.

Puncte:0
drapel ng

Eroarea 500 în marionetă înseamnă cod scris rău, vă rog să împărtășiți întreaga configurație (init.pp) și vă pot spune de acolo.

clasa { 'docker':
  versiune => 'cel mai recent',
}

docker::image { 'jorgemauriciodev/ubuntu-dockerfile-dev-v1': }

Mai multe informații sunt disponibile aici: https://forge.puppet.com/modules/puppetlabs/docker

Jorge Mauricio avatar
drapel cn
Bine. Acesta este dosarul complet. În regulă atunci. Voi schimba numele fișierului și voi verifica dacă este tot. ar trebui să fie în calea pe care am pus-o?
Zhivko Zhelev avatar
drapel ng
de obicei, acesta este ```/etc/puppetlabs/code/environments/production/manifests/init.pp```
Zhivko Zhelev avatar
drapel ng
Vă rugăm să priviți răspunsul. Acesta este modul în care ar trebui să fie scris, încercați să îl copiați/lipiți și fișierul nu este necesar să fie exact ```init.pp``` în cazul dvs., îmi pare rău.
Jorge Mauricio avatar
drapel cn
multumesc pentru ajutor. Am făcut exact cum ați postat, am repornit serverul puppet master, am rulat sudo puppet agent --test și am primit aceeași eroare. Nu sunt sigur dacă am instalat corect modulul garethr-docker. Am folosit acest CMD: sudo puppet module install garethr-docker. Ar trebui să-l instalez pe master sau slave? Și există vreo modalitate de a verifica dacă l-am instalat corect? Sau mai lipsește ceva?
Zhivko Zhelev avatar
drapel ng
Ar trebui să folosească ```r10k```, acesta este instrumentul de gestionare a pachetelor încorporat în puppet, încercați și ```sudo puppetrun --noop``` pe client și vă rugăm să dați rezultatul. Nu am idee cum ai configurat mediul păpuși și nu este ușor să dai un răspuns clar.
Jorge Mauricio avatar
drapel cn
Înțeleg. Ei bine, știu că sunt aproape acolo, pentru că am testat manifestul .pp cu alte comenzi care au funcționat. De exemplu: ``` fișier {'/tmp/it_works.txt': asigura => prezent, mod => '0644', content => "Funcționează pe ${ipaddress_eth0}!\n", }``` - a funcționat și, de asemenea, ```service { 'docker': asigura => rulează, }``` - a lucrat. Când am rulat comanda pe care tocmai mi-ați trimis-o acum (sudo puppet run --noop), ea afișează acest mesaj: /usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit Eroare: subcomandă Puppet necunoscută „run” Consultați „ajutor pentru păpuși” pentru ajutor cu privire la marioneta disponibilă
Jorge Mauricio avatar
drapel cn
Cred că ar trebui să conduc asta, corect: sudo puppet agent --noop. Dacă acestea au fost cazurile, iată ce mi-a apărut: /usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit /usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit /usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit /usr/lib/ruby/vendor_ruby/puppet/util.rb:461: avertisment: URI.escape este învechit /usr/lib/ruby/vendor_ruby/puppet/util.rb:315: avertisment: obiectul depreciat#=~ este apelat pe Puppet::Transaction::Report; se întoarce întotdeauna zero (continuă pentru 3 rânduri)
Zhivko Zhelev avatar
drapel ng
ok, vă rugăm să rulați acest lucru pe server și agent ```puppet module instalați puppetlabs-docker --versiunea 4.1.2``` și încercați din nou cu ```puppet agent --test```
Jorge Mauricio avatar
drapel cn
Bine. Cred că evoluăm. Multumesc pentru ajutor.Am instalat modulele suplimentare atât pe master cât și pe agent. A repornit serviciul puppet master și a rulat din nou ```sudo puppet agent --test```. Mi-a dat un mesaj de avertizare mai mare și un alt mesaj de eroare. Se pare că ar putea fi o problemă de sintaxă acum. Am editat întrebarea și am pus noul avertisment de eroare.
Zhivko Zhelev avatar
drapel ng
eliminați ```include 'docker'``` și ar trebui să fiți gata :) această linie este aceeași cu ```class { 'docker':``` ambele o vor include, doar că cu prima nu faci nimic
Jorge Mauricio avatar
drapel cn
A lucrat! Multumesc de un milion de ori!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.