I ran into a funny problem updating my rnelson0/certs puppet module today. I tried to use puppet-blacksmith to create and push a new build to the Forge. It continually failed with a strange error:
[rnelson0@build02 certs:master]$ be rake module:release Cleaning for module build Uploading to Puppet Forge rnelson0/certs rake aborted! Errno::ECONNRESET: Connection reset by peer
Well crap, that doesn’t make any sense! Let’s do a build manually and take a look at it:
[rnelson0@build02 certs:master]$ puppet module build Notice: Building /home/rnelson0/modules/certs for release Module built: /home/rnelson0/modules/certs/pkg/rnelson0-certs-0.7.0.tar.gz [rnelson0@build02 certs:master]$ ls -lh pkg total 21M drwxrwxr-x. 6 rnelson0 rnelson0 4.0K Nov 15 04:16 rnelson0-certs-0.7.0 -rw-rw-r--. 1 rnelson0 rnelson0 21M Nov 15 04:16 rnelson0-certs-0.7.0.tar.gz [rnelson0@build02 certs:master]$ tar tzvf pkg/rnelson0-certs-0.7.0.tar.gz | more drwxrwxr-x rnelson0/rnelson0 0 2015-11-15 04:16 rnelson0-certs-0.7.0/ drwxrwxr-x rnelson0/rnelson0 0 2015-11-15 04:16 rnelson0-certs-0.7.0/tests/ -rw-rw-r-- rnelson0/rnelson0 509 2015-10-24 19:27 rnelson0-certs-0.7.0/tests/init.pp -rw-rw-r-- rnelson0/rnelson0 911468 2015-11-15 04:16 rnelson0-certs-0.7.0/checksums.json drwxrwxr-x rnelson0/rnelson0 0 2015-11-15 04:16 rnelson0-certs-0.7.0/manifests/ -rw-rw-r-- rnelson0/rnelson0 310 2015-10-24 17:27 rnelson0-certs-0.7.0/manifests/init.pp -rw-rw-r-- rnelson0/rnelson0 2208 2015-10-24 17:27 rnelson0-certs-0.7.0/manifests/vhost.pp drwxrwxr-x rnelson0/rnelson0 0 2015-11-15 04:16 rnelson0-certs-0.7.0/spec/ drwxrwxr-x rnelson0/rnelson0 0 2015-11-15 04:16 rnelson0-certs-0.7.0/spec/classes/ -rw-rw-r-- rnelson0/rnelson0 141 2015-10-24 19:27 rnelson0-certs-0.7.0/spec/classes/init_spec.rb drwxrwxr-x rnelson0/rnelson0 0 2015-11-15 04:16 rnelson0-certs-0.7.0/spec/defines/ -rw-rw-r-- rnelson0/rnelson0 1433 2015-10-24 19:27 rnelson0-certs-0.7.0/spec/defines/vhost_spec.rb -rw-rw-r-- rnelson0/rnelson0 52 2015-10-24 17:27 rnelson0-certs-0.7.0/spec/spec_helper.rb drwxrwxr-x rnelson0/rnelson0 0 2015-11-15 04:16 rnelson0-certs-0.7.0/spec/fixtures/ drwxrwxr-x rnelson0/rnelson0 0 2015-11-15 04:16 rnelson0-certs-0.7.0/spec/fixtures/manifests/ drwxrwxr-x rnelson0/rnelson0 0 2015-11-15 04:16 rnelson0-certs-0.7.0/spec/fixtures/modules/ -rw-rw-r-- rnelson0/rnelson0 1409 2015-10-24 19:27 rnelson0-certs-0.7.0/Rakefile -rw-rw-r-- rnelson0/rnelson0 2208 2015-11-15 02:58 rnelson0-certs-0.7.0/README.md drwxrwxr-x rnelson0/rnelson0 0 2015-11-15 04:16 rnelson0-certs-0.7.0/vendor/ drwxrwxr-x rnelson0/rnelson0 0 2015-11-15 04:16 rnelson0-certs-0.7.0/vendor/ruby/
Can you see the problem? The vendor directory used by bundler is part of the package. That’s not right! It’s causing the forge connection to timeout because of the size or transmission time. Plus, no-one’s going to download a 21M module. Thankfully, there’s an easy way to fix this. In addition to the .gitignore that we use to prevent files from being made part of the git repository, we also need a .pmtignore, but we only need to exclude the vendors path:
[rnelson0@build02 certs:master]$ cat > .pmtignore vendor/ [rnelson0@build02 certs:master±]$ puppet module build Notice: Building /home/rnelson0/modules/certs for release Module built: /home/rnelson0/modules/certs/pkg/rnelson0-certs-0.7.0.tar.gz [rnelson0@build02 certs:master±]$ ls -lh pkg total 12K drwxrwxr-x. 5 rnelson0 rnelson0 4.0K Nov 15 04:23 rnelson0-certs-0.7.0 -rw-rw-r--. 1 rnelson0 rnelson0 7.0K Nov 15 04:23 rnelson0-certs-0.7.0.tar.gz [rnelson0@build02 certs:master±]$ tar tzvf pkg/rnelson0-certs-0.7.0.tar.gz drwxrwxr-x rnelson0/rnelson0 0 2015-11-15 04:23 rnelson0-certs-0.7.0/ drwxrwxr-x rnelson0/rnelson0 0 2015-11-15 04:23 rnelson0-certs-0.7.0/tests/ -rw-rw-r-- rnelson0/rnelson0 509 2015-10-24 19:27 rnelson0-certs-0.7.0/tests/init.pp -rw-rw-r-- rnelson0/rnelson0 631 2015-11-15 04:23 rnelson0-certs-0.7.0/checksums.json -rw-rw-r-- rnelson0/rnelson0 10143 2015-11-15 03:42 rnelson0-certs-0.7.0/Gemfile.lock drwxrwxr-x rnelson0/rnelson0 0 2015-11-15 04:23 rnelson0-certs-0.7.0/manifests/ -rw-rw-r-- rnelson0/rnelson0 310 2015-10-24 17:27 rnelson0-certs-0.7.0/manifests/init.pp -rw-rw-r-- rnelson0/rnelson0 2208 2015-10-24 17:27 rnelson0-certs-0.7.0/manifests/vhost.pp drwxrwxr-x rnelson0/rnelson0 0 2015-11-15 04:23 rnelson0-certs-0.7.0/spec/ drwxrwxr-x rnelson0/rnelson0 0 2015-11-15 04:23 rnelson0-certs-0.7.0/spec/classes/ -rw-rw-r-- rnelson0/rnelson0 141 2015-10-24 19:27 rnelson0-certs-0.7.0/spec/classes/init_spec.rb drwxrwxr-x rnelson0/rnelson0 0 2015-11-15 04:23 rnelson0-certs-0.7.0/spec/defines/ -rw-rw-r-- rnelson0/rnelson0 1433 2015-10-24 19:27 rnelson0-certs-0.7.0/spec/defines/vhost_spec.rb -rw-rw-r-- rnelson0/rnelson0 52 2015-10-24 17:27 rnelson0-certs-0.7.0/spec/spec_helper.rb drwxrwxr-x rnelson0/rnelson0 0 2015-11-15 04:23 rnelson0-certs-0.7.0/spec/fixtures/ drwxrwxr-x rnelson0/rnelson0 0 2015-11-15 04:23 rnelson0-certs-0.7.0/spec/fixtures/manifests/ drwxrwxr-x rnelson0/rnelson0 0 2015-11-15 04:23 rnelson0-certs-0.7.0/spec/fixtures/modules/ -rw-rw-r-- rnelson0/rnelson0 1409 2015-10-24 19:27 rnelson0-certs-0.7.0/Rakefile -rw-rw-r-- rnelson0/rnelson0 2208 2015-11-15 02:58 rnelson0-certs-0.7.0/README.md -rw-rw-r-- rnelson0/rnelson0 861 2015-10-24 19:27 rnelson0-certs-0.7.0/Gemfile -rw-rw-r-- rnelson0/rnelson0 506 2015-11-15 04:23 rnelson0-certs-0.7.0/metadata.json [rnelson0@build02 certs:master±]$
I’m going to submit a PR against puppet-module-skeleton to get that file added for the future (PR95).
One thought on “Exclude files from a puppet module release”