Puncte:0

Puppet - pot notifica selectiv un serviciu?

drapel jp

Am un script Puppet care gestionează lucrurile diferit în medii diferite, pe baza unui dacă/altfel bloc. Dar am o grămadă de blocuri comune de resurse de fișiere în partea de jos care se aplică tuturor mediilor. În prezent, acele blocuri notify => Service['my-service'], dar pentru producție, vreau să nu notifice. Vreau doar să actualizeze fișierele, nu să pornească sau să oprească niciun serviciu.

Ideea mea inițială este, pot stoca Serviciul într-o variabilă și pot seta în fiecare secțiune?

Exemplu:

if ($env == 'dev') {
  $myService = Service['my-service']
} elsif ($env == 'prod') {
  $myService = Service['dummy-service']
}

fișier { "fișierul meu.xml":
      asigura => fișier,
      continut =>
        template("mytemplate.erb"),
      require => Pachetul['my-service'],
      notify => $myService
}

Nu sunt sigur dacă va funcționa sau nu, dar dacă funcționează, ce aș putea folosi pentru un serviciu fals?

Puncte:2
drapel us

Da, acest lucru este posibil, iar codul dvs. este destul de aproape de soluția corectă:

if ($env == 'dev') {
  $my_service = 'serviciul meu'
} elsif ($env == 'prod') {
  $my_service = 'serviciu-fictiv'
}

fișier { "fișierul meu.xml":
  asigura => fișier,
  conținut => șablon ("mytemplate.erb"),
  require => Pachetul['my-service'],
  notify => Service[$my_service]
}

Cu toate acestea, deoarece solicitarea dvs. este să nu notificați deloc într-un anumit mediu, o modalitate mai bună ar fi să o faceți în acest fel decât să notificați un serviciu fals:

if ($env == 'dev') {
  File['myfile.xml'] ~> Service['my-service']
} 

Acestea se numesc săgeți de înlănțuire: https://puppet.com/docs/puppet/7/lang_relationships.html#lang_rel_chaining_arrows

bdetweiler avatar
drapel jp
Fișierul meu Puppet a fost puțin prea complicat pentru a realiza acest lucru, așa că am ajuns să creez o clasă separată pentru modificările de configurare, apoi să folosesc operatorul de lanț pentru a apela `-> Class['my_configs']` după instalarea RPM. Acum pot alege să actualizez numai configurațiile folosind `puppet agent -t --tags my_configs`, sau pot face întreaga instalare RPM + configs.

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.