file - управление папками и директориями

Ресур используется для управления файлами и папками.

Имеет следующие атрибуты:

  • backup - куда бекапить файл, если он существует

    • false - не бекапить
    • puppet - значение по умолчанию, бэкапится в какую то специальную папку папета
  • checksum - алгоритм проверки контрольной суммы

    • md5 - по умолчанию
    • md5lite
    • sha256
    • sha256lite
    • mtime
    • ctime
    • none
  • checksum_value - значение контрольной суммы, используется только для md5 и sha256

  • content - содержимое ресурса

  • ctime - время создания файла

  • ensure - состояние

    • direcory - папка
    • link - создать ярлык/симлинк на файл
    • present - файл должен существовать
    • absent - файл не должен существовать
    • file - файл
  • force - форсировать действие, например удаление директории с поддиректориями: true/false, yes/no

  • group - группа пользователей, владельцы

  • ignore - игнорируемые файлы при рекурсивной обработке каталога

  • links - как обрабатывать символьные ссылки во время обработки файлов

    • follow - скопировать указанный по ссылке файл
    • manage - скопировать саму ссылку
    • ignore - ничего не делать
  • mode - права на файл, всегда указывать строкой

  • mtime - время изменения

  • notify - уведомить кого-то об изменении ресурса

  • owner - пользователь, владелец

  • path - путь к файлу ресурса, по умолчанию равен названию ресурса

  • provider - бекенд для ресурса

    • posix
    • windows
  • purge - удалять ли файлы из директории которых нет на мастере, когда rescue => true

    • true - в директории будут только те файлы что есть на мастере, остальные удалятся
    • false - синхронизирует те файлы, что есть на сервере, остальные останутся без изменений
  • replace - заменить, если ресурс уже существует

    • no
  • require - зависимости ресурса

  • recurse - обрабатывать директорию ркурсивно, когда ensure => ‘directory’

    • true
    • false
    • remote - перебрать каталог рекурсивно на сервере
  • recurselimit - максимальная глубина рекурсии

  • replace

  • selinux_ignore_defaults

  • selrange

  • selrole

  • seltype

  • seluser

  • show_diff - отображать различия файлов

  • source - исходник ресурса

  • source_permissions - как обрабатывать права на копируемые ресурсы

    • use - применить права и владельцев копируемого ресурса
    • use_when_creating - применить права и владельца если копируемого файла ещё не существует
    • ignore - ничего не делать
  • sourceselect - задает правила копирования при рекурсивном копировании директории

    • all - копируются все файлы из всех доступных источников
    • first - по умолчанию, копируется файлы из первого достпного источника
  • target - путь к символьгной ссылке, если ensure => ‘link’

  • type

  • validate_cmd

  • validate_replacement

# создать папку
file {
    '/direcory/path':
        ensure => 'directory'
}
# создать файл если его не существует
file {
    '/tmp/hello-file':
        ensure  => 'present',
        replace => 'no',
        content => "From Puppet\n",
        mode    => '0644',
}
# создать много директории
file {
    ['/home/ilnurgi/webiste', '/home/ilnurgi/website/logs/']:
        ensure => 'directory'
}
# уведомление сервиса, при изменнии ресурса
file {
    '/etc/ssh/sshd_config':
        notify  => Service['sshd'],  # this sets up the relationship
        mode    => '0600',
        owner   => 'root',
        group   => 'root',
        require => Package['openssh-server'],
        content => template('ssh/sshd_config.erb')
}
File {
    ensure => 'present',
    owner  => 'root',
    group  => 'root',
    mode   => '0644',
}

file {
    '/etc/cobbler/modules.conf':
        content => template('cobbler/modules.conf');
    '/etc/cobbler/dhcp.template':
        content => template('cobbler/dhcp.template');
    '/etc/cobbler/users.digest':
        source => 'puppet:///modules/cobbler/users.digest.live',
        mode   => '0660';
}
file {
    '/tmp/fakefile':
        content => file('/etc/puppet/modules/yourmodulename/files/fakefile')
}
file {
    '/tmp/fakefile':
        content =>  file(
            "yourmodulename/fakefile.${::hostname}",
            'yourmodulename/fakefile'
        )
}