Как запустить скрипт оболочки из puppet?

8

Мне нужно установить, npmчто сделано curl http://npmjs.org/install.sh | shи, будучи новичком в использовании puppet, я немного запутался, как это должно быть сделано.

Я хорошо знаю о создании package {}записи, которая вызывает execцель, но, как я установил npmиз источника, это не собирается сокращать его.

Я явно не хочу собирать npmкаждый раз, когда мой puppetделает тянуть, поэтому мне нужно как-то проверить, установлен ли он или нет, так что просто создание exec {}одного тоже недостаточно.

Что я могу сделать?

промышленные
источник

Ответы:

15

Что-то вроде

exec { "install npm":
    command => "/usr/bin/curl http://npmjs.org/install.sh | sh",
    creates => "/some/directory/somewhere"
}

Должен сделать свое дело.

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

romble
источник
4

Я бы «повторил» все, что сказал Womble об упаковке и установке с помощью инструментов управления пакетами из локального репозитория. В зависимости от платформы могут также использоваться надежные сторонние репозитории, которые вы можете использовать.

Небольшая мелочь в ответе Уомбла: руководство по стилю марионеток рекомендует использовать одинарные кавычки, если вам не нужны двойные кавычки для интерполяции переменных. В коде, который показывает Womble, нет переменных, поэтому все «должно быть вместо».

Обратите внимание, что большая часть документации марионеток не была обновлена ​​в соответствии с этой рекомендацией, поэтому вы увидите двойные кавычки во многих местах, даже в официальных документах. Руководство по стилю и puppet-lint отражают текущие рекомендуемые передовые практики, и, надеюсь, документы в конечном итоге будут исправлены.

Тим
источник