title: Puppet does not honor 'require' modules
body: <p>I have created a module to add a user as follows:</p>
  
  <pre><code>user { 'test':
      ensure =&gt; 'present',
      comment =&gt; 'Test User',
      home =&gt; '/home/test',
      shell =&gt; '/bin/bash',
      managehome =&gt; 'true',
      gid =&gt; 'postgres',
      groups =&gt; 'users',
      password =&gt; '$1$PIp.c9J6$gdAyd76OhBk7n9asda80wm0',
      require =&gt; [ Package['rubygem-ruby-shadow'], Class['postgres'] ],
  }
  </code></pre>
  
  <p>It requires the class postgres as I need its primary group to be assigned to postgres, and the rubygem-ruby-shadow dependency is for the password setup.</p>
  
  <p>My problem is puppet does not honor these requirements. Puppet will always execute the useradd module first before rubygem-ruby-shadow, and this causes the password setup to fail. I have also tried to include rubygem-ruby-shadow in the same class as useradd but to no avail.</p>
  
  <p>The output upon <code>running puppet agent -t</code>:</p>
  
  <pre><code>linux-z14x:~ # puppet agent -t
  info: Caching catalog for linux-z14x.playground.local
  info: /User[test]: Provider useradd does not support features manages_passwords; not managing attribute password
  info: Applying configuration version '1425978163'
  notice: /Stage[main]/Users/Package[rubygem-ruby-shadow]/ensure: created
  notice: /User[test]/ensure: created
  notice: Finished catalog run in 78.19 seconds
  </code></pre>
  
  <p>Running it the second time:</p>
  
  <pre><code>linux-z14x:~ # puppet agent -t
  info: Caching catalog for linux-z14x.playground.local
  info: Applying configuration version '1425978163'
  notice: /Stage[main]/Users/User[test]/password: changed password
  notice: Finished catalog run in 74.79 seconds
  </code></pre>
  
  <p>My rubygem-ruby-shadow class:</p>
  
  <pre><code>package { 'rubygem-ruby-shadow':
          ensure =&gt; 'installed',
          require =&gt; Class['myrepo'],
          provider =&gt; 'zypper',
  }
  </code></pre>
  
  <p>How do I get rubygem-ruby-shadow module to run first before the useradd?</p>
  
  <p>Puppet master version is 3.7.4-1 (on CentOS) and puppet client is 2.6.12-0.10.1 (on SLES 11 SP2).</p>
  
  <p>Thanks.</p>