У нас есть приложение, которое на лету порождает именованные каналы (тип p). Мы хотим управлять другими файлами каталога, в котором создаются каналы с помощью Puppet. Есть ли простой способ указать марионетке пропустить этот тип файла. Я мог проигнорировать пару файлов, например:
file {'/var/opt/OV/share/tmp':
ensure => directory,
recurse => true, # enable recursive directory management
owner => user,
group => group,
mode => 2775,
ignore => 'ovcd.*',
}
Но, как я уже сказал, я не могу заранее определить, как названы каналы. Мне бы очень хотелось игнорировать => Введите p или что-то в этом роде. Можно ли это сделать стандартно в Puppet?
Я получил:
exec { "set_perms_tmp":
command => '/usr/bin/find /var/opt/OV/tmp ! \( -type s -o -type p \) -exec chmod 2775 {} \; -exec chown -R bin:bin /var/opt/OV/tmp/* {} \;'
}
Sockets и Puppet тоже не доставляют радости.
Когда что-то не встроено в файл, я обычно просто обращаюсь к марионетке exec
декларация. Используя find для выполнения любых команд, которые вы подразумеваете под «управлением файлами», вы сможете достичь своей цели.
Найти можно исключить именованные каналы:
-type c
File is of type c:
b block (buffered) special
c character (unbuffered) special
d directory
p named pipe (FIFO)
f regular file
....
Так что-то вроде:
exec { "set_perms":
command => "/usr/bin/find /var/opt/OV/share/tmp ! -type p -exec chmod 2775 {} \;"
}