Кукольный условно, только если файл существует в определенном каталоге - PullRequest
1 голос
/ 21 марта 2020

В моем манифесте марионетки есть следующий файловый ресурс:

file{
  'example.dat'
  path   => "/path/to/example.dat",
  owner  => devops,
  mode   => "0644",
  source => "/path/to/example.txt" 
}

Я хочу запустить приведенный выше фрагмент, только когда файл .txt присутствует в определенном каталоге. В противном случае, я не хочу, чтобы сниппет запускался.

Как мне go сделать это в марионетке?

1 Ответ

1 голос
/ 21 марта 2020

Как правило, вы создаете пользовательский факт , который возвращает значение true, когда рассматриваемый каталог удовлетворяет вашему условию. Например:

Facter.add('contains_txt') do
  setcode do
    ! Dir.glob("/path/to/dir/*.txt").empty?
  end
end

Тогда вы бы написали:

if $facts['contains_txt'] {
  file { 'example.dat':
    path   => "/path/to/example.dat",
    owner  => devops,
    mode   => "0644",
    source => "/path/to/example.txt",
  }
}
...