FAQ
There are other ways. None are nice and clean, but a custom fact just
for this seems overkill.

Here's a quick example of how I've implemented creating a default
~/.gitconfig for users if it doesn't exist, but not modify it if it's
already there or has been modified.

     $gitconfig_user_name = $mymodule::uservar::fullname[$title]
     $gitconfig_user_email = "${title}@example.com"
     file { "${home}/.gitconfig":
       owner => $owner,
       group => $group,
       mode => '0644',
       require => Exec["create-gitconfig-${title}"],
     }
     exec { "create-gitconfig-${title}":
       command => template('mymodule/user/gitconfig.erb'),
       require => User[$title],
       creates => "${home}/.gitconfig",
     }

The gitconfig.erb has the following content :
/bin/cat > <%= home %>/.gitconfig << EOF
[user]
  name = <%= @gitconfig_user_name %>
  email = <%= @gitconfig_user_email %>
EOF

Basically, just don't have either 'source' nor 'content' for your file
resource, and create the initial content using an exec with the
'creates' condition.

Matthias

Dan White wrote:
Short Answer: You need to create a custom fact that would drive the
decision to create the new file resource.

I just went thru this issue and also performing an action based on
whether or not a package (RPM in my case) is installed.

Same answer to both.

For the existence of a file, you can do this:

#!/bin/bash
test -f /var/www/owncloud/config/config.php
rc=$?
echo "is_my_file_there=${rc}"

That goes into /etc/facter/facts.d/ as an executable shell script and
then in your manifest:

if $::is_my_file_there != 0 {
file { 'autoconfig.php':
.....
}
}


“Sometimes I think the surest sign that intelligent life exists
elsewhere in the universe is that none of it has tried to contact
us.” Bill Waterson (Calvin & Hobbes)

----- Original Message -----
From: "John Naggets" <hostingnuggets@gmail.com>
To: puppet-users@googlegroups.com
Sent: Thursday, May 30, 2013 4:04:29 PM
Subject: [Puppet Users] Run a File resource only if another file is
missing

Hi,

I would like to run the File resource below:

file { 'autoconfig.php':
path => '/var/www/owncloud/config/autoconfig.php',
ensure => file,
owner => 'www-data',
group => 'www-data',
content => template("owncloud/autoconfig.php.erb"),
}

only when a specific file (in my
case: /var/www/owncloud/config/config.php) is missing. Is this
somehow possible? Couldn't find my case in the puppet
documentation...

Thanks!
John
--
You received this message because you are subscribed to the Google Groups "Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to puppet-users+unsubscribe@googlegroups.com.
To post to this group, send email to puppet-users@googlegroups.com.
Visit this group at http://groups.google.com/group/puppet-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.

Search Discussions

Discussion Posts

Previous

Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 3 of 9 | next ›
Discussion Overview
grouppuppet-users @
categoriespuppet
postedMay 30, '13 at 8:26p
activeJun 3, '13 at 9:44a
posts9
users5
websitepuppetlabs.com

People

Translate

site design / logo © 2021 Grokbase