Linux
木偶上存在目錄
我想用 puppet 檢查“如果 dir 存在”條件是如何在這裡完成的 如何在 Puppet 中條件性地執行文件/目錄存在?但是如果我寫
exec { 'check_presence': command => "true", path => ["/usr/bin","/usr/sbin", "/bin"], onlyif => "test -d /test" } file { '/test/123': ensure => directory, mode => '0644', require => Exec['check_presence'] }
從
exec
我得到 alwyastrue
和 puppet 總是嘗試創建 /test/123Debug: Exec[check_presence](provider=posix): Executing check 'test -e /test' Debug: Executing 'test -e /test' Error: Cannot create /test/123; parent directory /test does not exist Error: /Stage[main]/tst::test/File[/test]/ensure: change from absent to directory failed: Cannot create /test/123; parent directory /test does not exist
他為什麼要這樣做?!以及我必須如何檢查父目錄是否存在?!
我的木偶是3.8
UPD我不想創建
/test
!我只想在 /test 已經存在的情況下/test/123
創建!
puppet 對此沒有一個本機功能,唯一的解決方法是:
mkdir -p your_module_path/lib/puppet/parser/functions/
現在您需要directory_exists.rb
使用以下程式碼創建此文件:require 'puppet' module Puppet::Parser::Functions newfunction(:directory_exists, :type => :rvalue) do |args| if File.directory?(args[0]) return true else return false end end end
現在在您的 puppet 程式碼中,您可以使用以下功能:
if directory_exists('/test') { file { '/test/123': ensure => directory, mode => '0644', owner => 'root', group => 'root', } }