Мне нужно установить npm
что делается curl http://npmjs.org/install.sh | sh
и новичок в использовании puppet
, Я немного не понимаю, как это нужно делать.
Я хорошо знаю о создании package {}
запись, которая вызывает exec
цель, но когда я устанавливаю npm
из источника, это не сокращает его.
Я явно не хочу строить npm
каждый раз мой puppet
делает тягу, поэтому мне нужно как-нибудь проверить, установлен он или нет, поэтому просто сделайте exec {}
одного тоже недостаточно.
Что я могу сделать?
Что-то вроде
exec { "install npm":
command => "/usr/bin/curl http://npmjs.org/install.sh | sh",
creates => "/some/directory/somewhere"
}
Должен сделать свое дело.
Однако я бы сильно не советую делать это, так как это делает ваш процесс установки зависимым от многих других вещей, работающих правильно, и отбрасывает неотслеживаемые файлы неизвестно откуда в вашей файловой системе (и это даже до того, как мы начнем говорить о последствиях для безопасности запуска ненадежного и непроверяемого кода автоматически). Было бы намного лучше создать собственный пакет для вашей ОС, поместить его в локальное репо и установить его с помощью ресурса пакета.
Я бы «вторил» все, что Уомбл сказал об упаковке и установке с помощью инструментов управления пакетами из локального репозитория. В зависимости от платформы также могут быть надежные сторонние репозитории, которые вы могли бы использовать.
Одна небольшая придирка относительно ответа Уомбла: руководство по кукольному стилю рекомендует использовать одинарные кавычки, если вам не нужны двойные кавычки для интерполяции переменных. В коде, который показывает Уомбл, нет переменных, поэтому вместо этого все должно быть «».
Обратите внимание, что большая часть документации по марионетке не обновлялась для отражения этой рекомендации, поэтому вы увидите двойные кавычки во многих местах даже в официальных документах. Руководство по стилю и кукольный пух оба отражают текущие рекомендуемые передовые практики, и мы надеемся, что в конечном итоге документы будут исправлены.