Check directory before creating file in puppet

puppetpuppetmaster

I'm trying to make a function which directory/file will be created only when the first directory exists, of not it must be skipped because of failed dependence.

I've tried this "onlyif" workaround, but unfortunately it doesn't work with my function.

$check_directory = file("/path/to/directory")
if($check_directory != '') {
    file{"/path/to/config":
        ensure  =>  directory,
        mode    =>  0755,
    }
    file{"/path/to/config/a.conf":
        ensure  =>  file,
        mode    =>  0755,
        content =>  template("config_template.conf"),
    }
}

I've got an error:

Error: Is a directory - /path/to/directory

Is there a way to do any other if statement? Or any parameter? Thank you.

Best Answer

You should be able to simply use a require statement in your a.conf file resource:

file{"/path/to/directory":
    ensure  =>  directory,
    mode    =>  0755,
}

file{"/path/to/config":
    ensure  =>  directory,
    mode    =>  0755,
}
file{"/path/to/config/a.conf":
    ensure  =>  file,
    mode    =>  0755,
    content =>  template("config_template.conf"),
    require => File["/path/to/directory"],
}

This will make sure that the directory will be created before the file.