("config.php" vs. "autoconfig.php"). In that case, my only bit of
doesn't make itself.
Custom fact, it is...
That is an excellent example, but I think you miss the original point:
Your example deals with only one file resource - the dot-gitconfig
file Suppose you only wanted to perform this action if git was
installed on the system, and do nothing if it was not ?
This additional requirement puts it closer to the original question
and this is where a custom fact is called for in the opinion of
several folks on the list including myself.
If you can offer an example that demonstrates otherwise, I would
welcome it. I do not believe it possible without the custom fact and
I have several hours of frustrated tinkering to show for it. I
wanted to set a parameter in a config file but only if (the config
file exists and/or the associated package is installed) and found I
could not do it completely from within the manifest.
“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: "Matthias Saou" <matt...@saou.eu <javascript:>>
To: puppet...@googlegroups.com <javascript:>
Sent: Friday, May 31, 2013 4:00:15 AM
Subject: Re: [Puppet Users] Run a File resource only if another file
is missing
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 = "${tit...@example.com <javascript:>"
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 <yg...@comcast.net <javascript:>> 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" <hosting...@gmail.com <javascript:>>
To: puppet...@googlegroups.com <javascript:>
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