Problemas ao instalar o Grunt no ambiente Vagrant

1

Estou tentando instalar o node.js, o npm e o Grunt.js em um ambiente Ubuntu Trusty 64bit Vagrant e me deparo com alguns problemas. Aqui está o meu manifesto de marionetes:

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/'
    }

}

... e aqui está o log de erros do console que estou recebendo:

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

Agradecemos antecipadamente por qualquer ajuda / sugestão! : D

    
por kaffolder 27.09.2014 / 19:25

1 resposta

1

Você obteria resultados muito melhores usando módulos de fantoches para apt, nodejs, etc., dê uma olhada em forjado de bonecos .
Usar exec é uma má ideia, já que você realmente precisa cuidar da idempotência por conta própria.

Por exemplo, em vez de linhas:

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'
}

você pode usar:

include nodejs  

Verifique seu arquivo do Vagrant e certifique-se de ter configurado o diretório modules e manifests.
Em seguida, pesquise o fantoche para os módulos, por exemplo, apt , nodejs , ruby etc.

Faça o download e instale (descompacte no diretório de módulos). Certifique-se de alterar os nomes dos diretórios dos módulos.
Por exemplo, de puppetlabs-apt para apt
Dê uma olhada na visão geral dos módulos e no guia de uso que lhe dirá como usar um módulo.

Veja também este tutorial sobre o uso de vagabundos com fantoches.

Se você quiser saber mais sobre o fantoche, consulte a VM de aprendizagem e os documentos p>     

por 27.09.2014 / 21:29