Differences

This shows you the differences between two versions of the page.

Link to this comparison view

saisp:labs:10:contents:05 [2013/11/11 00:46]
127.0.0.1 external edit
saisp:labs:10:contents:05 [2017/05/22 17:28] (current)
alexandru.carp
Line 1: Line 1:
-==== 05. Lorem ipsum ====+==== 05. [20p] Variabile si selectori ​====
  
 +=== Variabile ===
 +
 +Pentru a defini variabile in Puppet, folosim sintaxa ''​$variabila'',​ atat pentru atribuire, cat si pentru referentiere.
 +
 +Rescriem manifestul pentru fisierul **my_file**,​ definind continutul fisierului intr-o variabila:
 +
 +<​code>​
 +$my_content = "File created using Puppet."​
 +
 +file {'​my_file':​
 +  path    => '/​tmp/​my_file',​
 +  ensure ​ => present,
 +  mode    => 0640,
 +  content => $my_content,​
 +}
 +</​code>​
 +
 +=== Facts ===
 +
 +In afara de variabilele definite de utilizator, Puppet defineste si anumite variabile de sistem. Acestea se numesc **facts**.
 +
 +Pentru a vizualiza toate aceste variabile, folosim comanda ''​facter'':​
 +
 +<​code>​
 +[root@learn ~]# facter ​
 +architecture => i386
 +augeasversion => 1.1.0
 +bios_release_date => 12/01/2006
 +bios_vendor => innotek GmbH
 +bios_version => VirtualBox
 +blockdevice_sda_model => VBOX HARDDISK
 +blockdevice_sda_size => 8589934592
 +blockdevice_sda_vendor => ATA
 +blockdevices => sda
 ... ...
 +</​code>​
 +
 +=== If ===
 +
 +Un exemplu de folosire a variabilelor de sistem este luarea anumitor decizii in functie de valoarea acestora.
 +
 +Urmatorul manifest se asigura ca serviciul NTP:
 +  * este pornit daca masina este fizica;
 +  * este oprit daca masina este virtuala.
 +
 +Decizia se ia in functie de valoarea variabile de sistem ''​$is_virtual''​.
 +
 +<​code>​
 +if str2bool("​$is_virtual"​) {
 +  service {'​ntpd':​
 +    ensure => stopped,
 +    enable => false,
 +  }
 +}
 +else {
 +  service { '​ntpd':​
 +    name       => '​ntpd',​
 +    ensure ​    => running,
 +    enable ​    => true,
 +    hasrestart => true,
 +    require => Package['​ntp'​],​
 +  }
 +}
 +</​code>​
 +
 +Aplicati manifestul si observati starea serviciului NTP.
 +
 +=== Manifest pentru instalare NTP ===
 +
 +Mai intai, dezinstalati serverul de NTP din masina virtuala.
 +
 +Apoi, scrieti un manifest care:
 +  * sa instaleze pachetul pentru serverul NTP;
 +  * sa se asigure ca serviciul NTP este pornit (numele serviciului difera, in functie de distributia de Linux);
 +  * sa se asigure ca fisierul de configurare este cel corect (in functie de distributie). ​
 +Folositi structura conditionala **case**.
 +
 +<​note>​
 +Consultati documentatia pentru **case**: https://​docs.puppet.com/​puppet/​3.5/​lang_conditional.html#​case-statements
 +</​note>​
 +
 +<​note>​
 +  * Pentru Ubuntu sau Debian serviciul se numeste **ntp** iau pentru Redhat si Fedora se numeste **ntpd**.
 +  * Descarcati fisierul de configurare pentru Debian / Ubuntu (https://​github.com/​ihcsim/​puppet-tutorial/​blob/​master/​src/​modules/​ntp/​files/​ntp.conf.debian) sau RedHat / Fedora (https://​github.com/​ihcsim/​puppet-tutorial/​blob/​master/​src/​modules/​ntp/​files/​ntp.conf.el)
 +</​note>​
 +
 +<​solution -hidden>
 +<​code>​
 +case $operatingsystem {
 +  centos, redhat: {
 +    $service_name = '​ntpd'​
 +    $conf_file ​   = '​ntp.conf.el'​
 +  }
 +  debian, ubuntu: {
 +    $service_name = '​ntp'​
 +    $conf_file ​   = '​ntp.conf.debian'​
 +  }
 +}
  
 +package { '​ntp':​
 +  ensure => installed,
 +}
 +file { '​ntp.conf':​
 +  path    => '/​etc/​ntp.conf',​
 +  ensure ​ => file,
 +  require => Package['​ntp'​],​
 +  source ​ => "/​root/​${conf_file}"​
 +}
 +service { '​ntp':​
 +  name      => $service_name,​
 +  ensure ​   => running,
 +  enable ​   => true,
 +  subscribe => File['​ntp.conf'​],​
 +}
 +</​code>​
 +</​solution>​
  
saisp/labs/10/contents/05.1384123598.txt.gz ยท Last modified: 2014/01/24 16:46 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0