This is an old revision of the document!
Un manifest Puppet poate contine declarari pentru mai multe resurse, insa ordinea in care sunt aplicate nu este bine definita.
Sunt cazuri in care trebuie sa ne asiguram ca o resursa este aplicata inaintea alteia (de exemplu, un pachet este instalat inaintea pornirii serviciului).
In aceste situatii, trebuie sa definim dependente intre resurse.
Modificam manifestul creat anterior astfel:
file {'my_file': path => '/tmp/my_file', ensure => present, mode => 0640, content => "File created using Puppet.", } notify {'my_notify': message => "File /tmp/my_file has been synced", require => File['my_file'], }
notify
defineste un mesaj ce va fi afisat in momentul cand declaratia sa este evaluata;require
. In cazul de fata, resursa my_file este evaluata inaintea resursei my_notify.Modificati fisierul /tmp/my_file, apoi aplicati manifestul de mai sus. Observati ordinea in care resursele sunt evaluate.
O sintaxa echivalenta ar fi folosirea parametrului before
in resursa my_file:
file {'my_file': path => '/tmp/my_file', ensure => present, mode => 0640, content => "File created using Puppet.", before => Notify['my_notify'], } notify {'my_notify': message => "File /tmp/my_file has been synced", }
Pentru unele resurse are sens actiunea de “refresh” (de exemplu, un serviciu care trebuie repornit).
Daca dorim ca, in plus fata de dependenta intre resurse, sa facem “refresh” pentru a doua resursa, cand prima resursa este modificata, trebuie:
Un exemplu ar fi repornirea serviciului SSH atunci cand fisierul sau de configurare este modificat:
file { '/etc/ssh/sshd_config': ensure => file, mode => 600, source => '/root/examples/sshd_config', } service { 'sshd': ensure => running, enable => true, subscribe => File['/etc/ssh/sshd_config'], }
Creati un manifest cu codul de mai sus, apoi modificati fisierul /etc/ssh/sshd_config si aplicati manifestul.
In locul atributelor before / require sau notify / subscribe putem folosi operatorul →
, respectiv ~>
.
Exemplu:
file {'my_file': path => '/tmp/my_file', ensure => present, mode => 0640, content => "File created using Puppet.", } -> notify {'my_notify': message => "File /tmp/my_file has been synced", }