Check directory before creating file in puppet?

20,111

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.

Share:
20,111

Related videos on Youtube

skantana
Author by

skantana

Updated on September 18, 2022

Comments

  • skantana
    skantana almost 2 years

    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.

  • skantana
    skantana almost 9 years
    Thanks for the answer, but it's difference directory. I would like to check another path to configuration, not the one that will be created. if I do so, I will get .. Error: Could not find dependency
  • FooBee
    FooBee almost 9 years
    Then you have to add a file resource for that new directory and then use require with that resource. See my edited answer.
  • FooBee
    FooBee almost 9 years
    Sorry, now I got it. But the sample code you wrote doesn't use the onlyif trick you linked to. So I am still confused - what exactly did you try and what didn't work. Please read How to ask better questions on Serverfault to avoid wasting your and our time.