Я пытаюсь написать модуль, в котором он создает файл, если каталог существует, иначе он ничего не должен делать.
class puppetmodule{
exec { 'chk_dir_exists':
command => 'test -d /usr/dir1',
path => ["/usr/bin","/usr/sbin", "/bin"],
} ->
file {'usr/dir1/test.txt':
ensure => 'file',
owner => 'root',
group => 'root',
mode => '0750',
}
}
Ниже приведена ошибка это бросает. Пожалуйста, посоветуйте мне это.
Ошибка: test -d / usr / dir1 вернул 1 вместо одного из [0]
Kukla son vəziyyətdən bəhs edir. Bir sənədin göstərdiyiniz və ya olmadığı vəziyyətlə mövcud olmasını təmin edə bilərsiniz. Bir az dallanma ( əgər ) məntiqi etməlisinizsə, Kukla bunu da dəstəkləyir. Sənədlərdəki şərtlərə baxın - https://docs.puppet.com/puppet/latest/reference/lang_conditional.html
$directory_exists = <insert logic here>
if $directory_exists {
file {'usr/dir1/test.txt':
ensure => 'file',
owner => 'root',
group => 'root',
mode => '0750',
}
}
Примерно так будет работать:
$dir = "/usr/dir1"
exec { "chk_${dir}_exist":
command => "true",
path => ["/usr/bin","/usr/sbin", "/bin"],
onlyif => "test -d ${dir}"
}
file {"${dir}/test.txt":
ensure => file,
owner => 'root',
group => 'root',
mode => '0750',
require => Exec["chk_${dir}_exist"],
}
Объяснение:
onlyif => "test -d $ {dir}"
означает, что Exec ресурс создается только в том случае, если вывод test -d
истинен.
require => Exec ["chk _ $ {dir} _exist"]
означает, что ресурс File создается, только если Exec ресурс существует.
Если каталог не существует, запуск марионетки выдаст ошибку, указывающую, что он не может создать т.е. файловый ресурс, потому что ресурс Exec не существует. Это ожидаемо и может быть безопасно проигнорировано, поскольку остальная часть каталога марионеток по-прежнему применяется.
Если каталог существует, создается и применяется ресурс File.