Я пишу модуль Puppet для установки приложения на наших тестовых серверах. В среде тестирования нам необходимо установить пакет узлов с именем execSync (https://github.com/mgutz/execSync). Поскольку execSync является родным пакетом, он компилируется при установке. Когда я пытаюсь вручную установить его на сервер, он устанавливается. Однако, когда я делаю то же самое, используя Puppet, шаг компиляции не выполняется.Установка execSync с использованием Puppet
Я попытался установить execSync с помощью модуля puppetlabs-nodejs (https://github.com/puppetlabs/puppetlabs-nodejs) и используя exec
определенный тип с командой npm install execSync
, как хорошо, и ничто не похоже на работу. Я также проверил, что используются правильные версии nodejs и npm.
Я хотел бы полностью автоматизировать этот процесс, но ничего не работает, и у меня закончились варианты. Каковы могут быть возможные причины?
Отредактировано:
Вот манифеста я использую:
exec { 'npm-install':
command => 'npm install execSync',
cwd => '/var/www/appv3',
path => '/usr/local/node/node-default/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
logoutput => true,
}
Я бегу это с помощью puppet apply
.
Это то, что я вижу в консоли вывода:
Notice: Compiled catalog for test.app.com in environment production in 0.54 seconds
Notice: /Stage[main]/Main/Exec[npm-install]/returns: npm http GET https://registry.npmjs.org/execSync
Notice: /Stage[main]/Main/Exec[npm-install]/returns: npm http 304 https://registry.npmjs.org/execSync
Notice: /Stage[main]/Main/Exec[npm-install]/returns: npm http GET https://registry.npmjs.org/temp
Notice: /Stage[main]/Main/Exec[npm-install]/returns: npm http 304 https://registry.npmjs.org/temp
Notice: /Stage[main]/Main/Exec[npm-install]/returns: npm http GET https://registry.npmjs.org/rimraf
Notice: /Stage[main]/Main/Exec[npm-install]/returns: npm http 304 https://registry.npmjs.org/rimraf
Notice: /Stage[main]/Main/Exec[npm-install]/returns: npm http GET https://registry.npmjs.org/graceful-fs
Notice: /Stage[main]/Main/Exec[npm-install]/returns: npm http 304 https://registry.npmjs.org/graceful-fs
Notice: /Stage[main]/Main/Exec[npm-install]/returns:
Notice: /Stage[main]/Main/Exec[npm-install]/returns: > [email protected] install /var/www/appv3frontend_testapp.vwo.com/node_modules/execSync
Notice: /Stage[main]/Main/Exec[npm-install]/returns: > node install.js
Notice: /Stage[main]/Main/Exec[npm-install]/returns:
Notice: /Stage[main]/Main/Exec[npm-install]/returns: [execsync v1.0.2] Attempting to compile native extensions.
Notice: /Stage[main]/Main/Exec[npm-install]/returns: [execSync v1.0.2]
Notice: /Stage[main]/Main/Exec[npm-install]/returns: Native code compile failed!!
Notice: /Stage[main]/Main/Exec[npm-install]/returns: [email protected] node_modules/execSync
Notice: /Stage[main]/Main/Exec[npm-install]/returns: └── [email protected] ([email protected])
Notice: /Stage[main]/Main/Exec[npm-install]/returns: executed successfully
То же самое работает нормально, когда я запускаю команду вручную. Компиляция выполняется успешно.
Из предоставленной вами информации, это может быть в буквальном смысле ничего. Пожалуйста, укажите журналы отладки и т. Д. –
Когда вы говорите, что он работает, когда вы запускаете его вручную, используете ли вы тот же пользователь и среду, что и марионетка? –
@ChrisPitman Да. Запуск «марионетки» в качестве корня. переменная 'path' была установлена так же, как и при попытке установить вручную. – vaidik