Назад | Перейти на главную страницу

Как исключить именованные каналы и сокеты в Puppet?

У нас есть приложение, которое на лету порождает именованные каналы (тип 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 {} \;"
}