Запустить puppet exec если только файла не существует
Posted in Новости on 13 августа, 2013 by adminexec { «mkdir_test» :
command => «/bin/mkdir /tmp/test»,
creates => «/tmp/test» }
exec { «mkdir_test» :
command => «/bin/mkdir /tmp/test»,
creates => «/tmp/test» }
Puppet кроме системных переменных использует facter, в нем существует переменная, отдающая название ОС — lsbdistcodename
итак, пишем скрипт :
if $lsbdistcodename == "wheezy" {
exec { "echo":
command => "/bin/touch WHEEZY" }
}
if $lsbdistcodename == "squeeze" {
exec { "echo":
command => "/bin/touch SQUEEZE" }
}
1. Сначала импортируем массив в систему
zpool import massive
2. А затем, если он уже не был смонтирован в /massive делаем так :
mount -t sfs massive /mnt
preinst — install, upgrade, abort-upgrade
postinst — configure, abort-upgrade, abort-remove, abort-deconfigure
prerm — remove, upgrade, faled-upgrade, deconfigure
postrm — remove, purge, upgrade, failed-upgrade, abort-install, abort-upgrade, disappear
Пример sub :
sub test {
my @arr = ("1", "2", "3", "4");
};
Чтобы вернуть массив, мы возвращаем ссылку на него :
sub test {
my @arr = ("1", "2", "3", "4");
reutrn \@arr;
};
Далее в скрипте присваиваем ссылку переменной :
my $ref = &test();
и разыменовываем ссылку на массив, тем самым получая содержимое массива :
my @arr_ref = @$ref;
Итоговая тестовый скрипт выглядит так :
#!/usr/bin/perl
use strict;
use warnings;
sub test { my @test = ("1", "2", "3", "4"); return \@test;};
my $ref = &test();
print "@$ref[1]"; # обращаемся к элементам массива напрямую из разыменованной ссылки
Также можно использовать операторы разадресования :
#!/usr/bin/perl
use strict;
use warnings;
sub test { my @test = ("1", "2", "3", "4"); return \@test;};
my @ref = @{&test()};
print "$ref[1]";