CentOS 7
Sponsored Link

Puppet : How to use [file Resource]
2015/07/22
 
This is the exmaples for file resource.
[1] It manages the configuration to keep a file like follows.
If the file is none on Puppet client, it is created.
If exists, it keeps with the specified attributes.
[[email protected] ~]#
vi /etc/puppet/manifests/site.pp
file { '/home/testfile.txt':
    ensure  => file,
    owner   => 'root',
    group   => 'root',
    mode    => 644,
    content => 'This is the puppet test file.',
}
[2] Specify the contents with variable.
[[email protected] ~]#
vi /etc/puppet/manifests/site.pp
$contents = 'This is the test Puppet manifest.
Sample contents
Test contents
'

file { '/home/testfile.txt':
    ensure  => file,
    owner   => 'root',
    group   => 'root',
    mode    => 644,
    content => "$contents",
}
[3] Specify the source file on the Puppet server as a template.
[[email protected] ~]#
vi /etc/puppet/fileserver.conf
# add to the end: specify the directory which includes template files

[extra_files]
    path /etc/puppet/files
    allow *

extra_files  ⇒  any name you like
path         ⇒  path to to the directory
allow        ⇒  clients you permit to access
                 The example above means to permit all.
                 If you specify clients, write like follows.
                 "allow 192.168.0.0/24" or "*.srv.world"

[[email protected] ~]#
vi /etc/puppet/manifests/site.pp
file { '/home/testfile.txt':
    ensure => file,
    owner  => 'root',
    group  => 'root',
    mode   => 644,
    source => 'puppet://dlp.srv.world/extra_files/test.txt',
}

[[email protected] ~]#
mkdir /etc/puppet/files

[[email protected] ~]#
echo "Puppet test file" > /etc/puppet/files/test.txt

[4] It manages the configuration to keep a link.
For example, it keeps "/home/testfile.link" from "/home/testfile.txt".
[[email protected] ~]#
vi /etc/puppet/manifests/site.pp
file { '/home/testfile.link':
    ensure => link,
    target => '/home/testfile.txt',
}
[5] It manages the configuration to keep a file does not exist. If it exists, it is deleted.
[[email protected] ~]#
vi /etc/puppet/manifests/site.pp
file { '/home/testfile.link': ensure => absent }
[6] It manages the configuration to keep a directory recursively.
The example specifies "mode" as "644" but "x" is added for directories.
Furthermore, files or directories which does not exist in source directory are deleted with the parameter "purge" or "force".
[[email protected] ~]#
vi /etc/puppet/fileserver.conf
# add to the end: specify the directory as a source

[extra_dir]
    path /etc/puppet/dirs
    allow *

[[email protected] ~]#
vi /etc/puppet/manifests/site.pp
file { '/home/testdir':
    ensure  => directory,
    recurse => true,
    purge   => true,
    force   => true,
    owner   => 'root',
    group   => 'root',
    mode    => 644,
    source  => 'puppet://dlp.srv.world/extra_dir/testdir',
}

[[email protected] ~]#
mkdir -p /etc/puppet/dirs/testdir