This is an old revision of the document!
Un manifest Puppet poate contine declarari pentru mai mule 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. 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 ca:
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 ~>.