Skip to content

Instantly share code, notes, and snippets.

@xorpaul
Created September 9, 2013 09:15
Show Gist options
  • Save xorpaul/6493311 to your computer and use it in GitHub Desktop.
Save xorpaul/6493311 to your computer and use it in GitHub Desktop.
foreman init db missing puppet gem
/usr/share/foreman# su - foreman -s /bin/bash -c /usr/share/foreman/extras/dbmigrate
rake aborted!
cannot load such file -- puppet
Tasks: TOP => db:migrate => environment
(See full trace by running task with --trace)
/usr/share/foreman# RAILS_ENV=production bundle exec rake db:migrate
rake aborted!
cannot load such file -- puppet
Tasks: TOP => db:migrate => environment
(See full trace by running task with --trace)
/usr/share/foreman# head -5 /usr/share/foreman/config/initializers/puppet.rb
require 'active_support/dependencies'
ActiveSupport::Dependencies.unhook!
require 'puppet'
require 'puppet/rails'
# irb
irb(main):001:0> require 'puppet'
=> true
irb(main):002:0>
@xorpaul
Copy link
Author

xorpaul commented Sep 9, 2013

The solution was to add the puppet gem to the bundler dependencies by adding another file under bundler.d:

  /usr/share/foreman# cat bundler.d/Gemfile.local.rb 
  gem 'puppet'

and another bundler install:

  /usr/share/foreman# bundler install
  [...]
  Updating .gem files in vendor/cache
  * facter-1.7.2.gem
  * json_pure-1.8.0.gem
  * hiera-1.2.1.gem
  * rgen-0.6.6.gem
  * puppet-3.2.4.gem

@xorpaul
Copy link
Author

xorpaul commented Sep 13, 2013

Solving this in puppet would be:

  # install puppet gem in bundle vendor path
  file { "${foreman::params::app_root}/bundler.d/Gemfile.local.rb":
    owner   => $foreman::user,
    group   => $foreman::group,
    content => 'gem \'puppet\'',
    # uncomment if you haven’t explicitly set db_manage to false
    #before  => Exec['dbmigrate'],
  }
  ->
  exec { 'foreman-bundle-install':
    command     => 'bundle install',
    cwd         => $foreman::app_root,
    user        => $foreman::user,
    environment => "HOME=${foreman::app_root}",
    path        => '/usr/sbin:/usr/bin:/bin',
    logoutput   => 'on_failure',
  }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment