2016-01-29 4 views
0

Мне было интересно, как можно было бы использовать обработчик исключений типа try/catch/throw в манифесте марионеток. Вот как я хочу кукольный бы работать ...Обработка исключений для марионеток?

class simple { 
    unless (package { 'simple': ensure => present }) { 
     file { '/tmp/simple.txt': 
      content => template('simple/simple.erb'), 
     } 
    } 
} 

Благодаря

+0

Исправьте меня, если я ошибаюсь. Вы хотите создать файл только в том случае, если пакет присутствует. В этом случае вы можете использовать 'exec' для создания файла и указать параметр' except'. [exec explain] (http://docs.puppetlabs.com/puppet/latest/reference/type.html#exec) – harshad

+0

Привет, спасибо за комментарий. Я хочу выполнить блок марионетки, если ресурс пакета не удался по какой-либо причине. –

ответ

1

Я не думаю, что есть обработка в программном, как вы хотели бы в кукольный исключение. Если вы объявите ресурс, ожидается, что марионетка перенесет ваш компьютер в это состояние (установленный пакет), а если нет, он автоматически сработает. Одна вещь, которую вы можете сделать (и я не рекомендую), и это не «марионетка путь» заключается в следующем:

  1. Создание пользовательских facter (не пользовательская функция, так как она выполняется на кукловода, и вы хотите это рубиновый код, который должен быть выполнен на марионеточном агенте)
  2. Так как это обычный рубиновый код, вы можете иметь обработку исключений и все программные вещи. Вы можете установить пакет как команду unix из марионеточного кода и иметь некоторую логику, которая, если не установлена, получит какое-то значение как факт
  3. Вы бы использовали это значение факта и на его основе вы бы определили, хотите ли вы создать файл или нет

Кроме того, если проще, то вы можете написать Баш скрипт, который будет делать эту логику и выполнить его с помощью марионеточного EXEC ресурса

Надеется, что это помогает.

Смежные вопросы