nad87563
nad87563

Reputation: 4072

Exec command time out Error when running nodejs app using puppet

I am cloning my repo and running my nodejs application using puppet. please find the code below:

package { 'git':
  ensure => 'latest',
}

vcsrepo { "/nodejs-helloworld":
  ensure   => latest,
  provider => git,
  require  => [ Package["git"] ],
  source   => "[email protected]:hello-world/nodejs-helloworld.git",
  revision => 'master',
  before   => Exec['/usr/local/bin/npm install;/usr/local/bin/npm start'],
}

exec { '/usr/local/bin/npm install;/usr/local/bin/npm start':
  cwd         => '/nodejs-helloworld',
  subscribe   => Vcsrepo['/nodejs-helloworld'],
  refreshonly => true,
}

My repository is cloned, my application is running fine, and npm test also works. Everything works fine. However, I get an exec command time out error.

Error log:

[root@ip-*******/]# puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for ip-**************
Info: Applying configuration version '1474433486'
Notice: /Stage[main]/Main/Exec[install-node-version-manager-global]/returns: executed successfully
Notice: /Stage[main]/Main/Exec[install-node-version-manager-latest]/returns: executed successfully
Notice: /Stage[main]/Main/Vcsrepo[/nodejs-helloworld]/ensure: Creating repository from latest
Notice: /Stage[main]/Main/Vcsrepo[/nodejs-helloworld]/ensure: created
Info: /Stage[main]/Main/Vcsrepo[/nodejs-helloworld]: Scheduling refresh of Exec[/usr/local/bin/npm install;/usr/local/bin/npm start]
Error: /Stage[main]/Main/Exec[/usr/local/bin/npm install;/usr/local/bin/npm start]: Failed to call refresh: Command exceeded timeout
Error: /Stage[main]/Main/Exec[/usr/local/bin/npm install;/usr/local/bin/npm start]: Command exceeded timeout
Notice: Finished catalog run in 302.86 seconds

As you can see here, even though I get an exec command timeout error, my app is running and npm test works.

 [root@ip-********* nodejs-helloworld]# netstat -anp 2> /dev/null | grep :3000
    tcp6       0      0 :::3000                 :::*                    LISTEN      17630/node
 [root@ip-********* nodejs-helloworld]# npm test

    > [email protected] test /nodejs-helloworld
    > mocha



      Test HelloWorld
        ✓ Should have the root route (46ms)
        ✓ Should have a hello world response


      2 passing (66ms)

Can anyone please tell me how to avoid the exec command timeout error?

Upvotes: 0

Views: 1100

Answers (1)

Farid Nouri Neshat
Farid Nouri Neshat

Reputation: 30420

If I'm not wrong what seems to be the problem is that, when you run npm start, it runs your application but it doesn't exit, and you don't want that because you want to keep your application running, however puppet expects it to exit at some point.

What you should do instead is to make the exec resource start your application in the background. You can have a look at this question where the answers describe various tools to easily achieve this.

Upvotes: 0

Related Questions