Проблемы, устанавливающие Пехотинца в Бродячей среде

Я пытаюсь установить node.js, npm и Grunt.js в Надежном человеке Ubuntu Бродячая среда на 64 бита и сталкиваюсь с некоторыми проблемами. Вот моя марионеточная декларация:

init.pp-
class grunt::install {

    exec { 'apt_update':
        command => 'apt-get update',
        path    => '/usr/bin'
    }

    package { [
      'curl',
      'python-software-properties',
      'ruby1.9.3'
    ]:
        ensure  => present,
        require => Exec['apt_update']
    }

    # Get node
    exec { 'add-node-repo':
        command => '/usr/bin/add-apt-repository ppa:chris-lea/node.js && /usr/bin/apt-get update',
        require => Package['python-software-properties']
    }
    package { 'nodejs':
        ensure  => latest,
        require => [Exec['apt_update'], Exec['add-node-repo']]
    }

    # Install npm
    exec { 'npm':
        command     => '/usr/bin/curl -L https://npmjs.org/install.sh | /bin/sh',
        require     => [Package['nodejs'], Package['curl']],
        environment => 'clean=yes'
    }

    # Create symlink to stop node-modules folder breaking
    exec { 'node-modules-symlink':
        command => '/bin/rm -rfv /usr/local/node_modules && /bin/rm -rfv /vagrant/node_modules && /bin/mkdir /usr/local/node_modules && /bin/ln -sf /usr/local/node_modules /vagrant/node_modules ',
    }

    # Copy Grunt config files over for the vagrant setup.
    file { '/vagrant/package.json':
        source  => 'puppet:///modules/grunt/package.json'
    }
    file { '/vagrant/Gruntfile.js':
        source  => 'puppet:///modules/grunt/Gruntfile.js'
    }

    # Finally install grunt
    exec { 'install-grunt':
        command => '/usr/bin/npm install -g grunt-cli',
        require => Exec['npm']
    }

    # Install grunt task runner in directory
    exec { 'install-grunt-task-runner':
        command => '/usr/bin/npm install grunt --save-dev',
        cwd     => '/vagrant/',
        require => Exec['install-grunt']
    }
    exec { 'install-project-dependencies':
        command => '/usr/bin/npm install --save-dev',
        require => [Exec['install-grunt-task-runner'], Exec['node-modules-symlink']],
        cwd     => '/vagrant/'
    }

}

... и вот консольный журнал ошибок, который я получаю:

Stderr from the command:

stdin: is not a tty

Error: /usr/bin/npm install grunt --save-dev returned 1 instead of one of [0]
Error: /Stage[main]/Grunt::Install/Exec[install-grunt-task-runner]/returns: change from notrun to 0 failed: /usr/bin/npm install grunt --save-dev returned 1 instead of one of [0]
Warning: /Stage[main]/Grunt::Install/Exec[install-project-dependencies]: Skipping because of failed dependencies

Заранее спасибо за любую справку/предложения!:D

1
задан 27 September 2014 в 20:25
1 ответ

Вы получите гораздо лучшие результаты, используя модули марионеток для apt, nodejs и т. Д., Взгляните на puppet forge .
Использование exec - плохая идея, поскольку вам действительно нужно позаботиться об идемпотентности самостоятельно.

Например, вместо строк:

package { 'nodejs':
    ensure  => latest,
    require => [Exec['apt_update'], Exec['add-node-repo']]
}

# Install npm
exec { 'npm':
    command     => '/usr/bin/curl -L https://npmjs.org/install.sh | /bin/sh',
    require     => [Package['nodejs'], Package['curl']],
    environment => 'clean=yes'
}

вы можете просто использовать:

include nodejs  

Проверьте свой Vagrant файл и убедитесь, что вы установили каталог модулей и манифестов.
Затем найдите в марионеточной кузнице модули, например apt , nodejs , ruby ​​ и т. Д.

Загрузите их и установите (разархивируйте в каталоге модулей) . Обязательно измените имена каталогов модулей.
Например из puppetlabs-apt - apt
Взгляните на обзор модулей и руководство по использованию, в котором рассказывается, как использовать модуль.

Также ознакомьтесь с этим учебным пособием об использовании vagrant с puppet.

Если вы хотите узнать больше о марионетке, посмотрите обучающую виртуальную машину и документы.

1
ответ дан 4 December 2019 в 00:18

Теги

Похожие вопросы