Problem with pulp-puppet-module-builder usage?

I'd like to figure out where I went wrong or if there is an issue…

$ sudo puppet agent -t
Warning: Local environment: "production" doesn't match server specified node environment "KT_megacorp_Baseline_Puppet_Modules_6", switching agent to "KT_megacorp_Baseline_Puppet_Modules_6".
Info: Retrieving pluginfacts
Info: Retrieving plugin
Warning: nmcli (1.0.6) and NetworkManager (1.0.0) versions don't match. Use --nocheck to suppress the warning.
Warning: nmcli (1.0.6) and NetworkManager (1.0.0) versions don't match. Use --nocheck to suppress the warning.
Warning: nmcli (1.0.6) and NetworkManager (1.0.0) versions don't match. Use --nocheck to suppress the warning.
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class motd for katello-katello.example.com on node katello-katello.example.com
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run

First I ran this…

sudo mkdir /var/www/html/pub/puppet-modules
sudo chmod a+rw /var/www/html/pub/puppet-modules
git clone https://github.com/puppetlabs/puppetlabs-motd.git
cd puppetlabs-motd
…bumped version…
sudo pulp-puppet-module-builder --output-dir /var/www/html/pub/puppet-modules .

Then I created a product with a puppet repo sync'ed from that output plus a repo synced from puppetforge…

$ hammer product info --id 17 --organization "Mega Corporation"
ID: 17
Name: Puppet Modules
Label: puppet-motd
Description: Example puppet product
Sync State: Syncing Complete.
Sync Plan ID:
GPG:
GPG Key ID:
GPG Key:
Organization: Mega Corporation
Readonly: false
Deletable:
Content:

  1. Repo Name: Puppet Forge
    URL: /custom/puppet-motd/puppet-forge
    Content Type: puppet
  2. Repo Name: Puppet MOTD
    URL: /custom/puppet-motd/puppet-motd
    Content Type: puppet

Then I created a content view and added the puppet module to it…

$ hammer content-view info --id 6 --organization "Mega Corporation"
Warning: Option --id is deprecated. This option will be removed in Katello 2.5, Use --uuid
ID: 6
Name: Puppet Modules
Label: Puppet_Modules
Composite: false
Description:
Content Host Count: 0
Organization: Mega Corporation
Yum Repositories:

Docker Repositories:

Puppet Modules:

  1. ID: 1
    Name: puppetlabs-motd
    Author: puppetlabs
    Created: 2016/02/01 12:45:19
    Updated: 2016/02/01 12:45:19
    Lifecycle Environments:
  2. ID: 6
    Name: Baseline
  3. ID: 2
    Name: Library
    Versions:
  4. ID: 6
    Version: 1.0
    Published: 2016/02/01 12:45:31
    Components:

Activation Keys:

After publishing and promoting to Baseline lifecycle env here is what ended up on disk…

$ ls -l /etc/puppet/environments/KT_megacorp_Baseline_Puppet_Modules_6/modules
drwxr-xr-x. 6 apache apache 4096 Jan 31 08:50 puppetlabs-motd

After moving my host to that puppet environment and adding the motd class to it, I ran puppet agent -t and got the error at the start of this email…

Error 400 on SERVER: Could not find class motd for katello-katello.example.com on node katello-katello.example.com

If I make a symlink in the modules dir like this…

$ ls -l /etc/puppet/environments/KT_megacorp_Baseline_Puppet_Modules_6/modules
lrwxrwxrwx. 1 apache apache 15 Feb 1 08:32 motd -> puppetlabs-motd
drwxr-xr-x. 6 apache apache 4096 Jan 31 08:50 puppetlabs-motd

Then puppet agent -t runs clean and I can see motd updated.

So… Where did I go wrong? Why was the module created on disk named puppetlabs-motd instead of motd? Or is there some other problem?

··· --

@thomasmckay

Hi,

I just stumbled across the same problem. But only under windows. Linux
puppet agents seem to be able to handle this.

··· Am Montag, 1. Februar 2016 15:32:38 UTC+1 schrieb Tom McKay:

I’d like to figure out where I went wrong or if there is an issue…

$ sudo puppet agent -t
Warning: Local environment: “production” doesn’t match server specified
node environment “KT_megacorp_Baseline_Puppet_Modules_6”, switching agent
to “KT_megacorp_Baseline_Puppet_Modules_6”.
Info: Retrieving pluginfacts
Info: Retrieving plugin
Warning: nmcli (1.0.6) and NetworkManager (1.0.0) versions don’t match.
Use --nocheck to suppress the warning.
Warning: nmcli (1.0.6) and NetworkManager (1.0.0) versions don’t match.
Use --nocheck to suppress the warning.
Warning: nmcli (1.0.6) and NetworkManager (1.0.0) versions don’t match.
Use --nocheck to suppress the warning.
Error: Could not retrieve catalog from remote server: Error 400 on SERVER:
Could not find class motd for katello-katello.example.com on node
katello-katello.example.com
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run

First I ran this…

sudo mkdir /var/www/html/pub/puppet-modules
sudo chmod a+rw /var/www/html/pub/puppet-modules
git clone https://github.com/puppetlabs/puppetlabs-motd.git
cd puppetlabs-motd
…bumped version…
sudo pulp-puppet-module-builder --output-dir
/var/www/html/pub/puppet-modules .

Then I created a product with a puppet repo sync’ed from that output plus
a repo synced from puppetforge…

$ hammer product info --id 17 --organization "Mega Corporation"
ID: 17
Name: Puppet Modules
Label: puppet-motd
Description: Example puppet product
Sync State: Syncing Complete.
Sync Plan ID:
GPG:
GPG Key ID:
GPG Key:
Organization: Mega Corporation
Readonly: false
Deletable:
Content:

  1. Repo Name: Puppet Forge
    URL: /custom/puppet-motd/puppet-forge
    Content Type: puppet
  2. Repo Name: Puppet MOTD
    URL: /custom/puppet-motd/puppet-motd
    Content Type: puppet

Then I created a content view and added the puppet module to it…

$ hammer content-view info --id 6 --organization "Mega Corporation"
Warning: Option --id is deprecated. This option will be removed in Katello
2.5, Use --uuid
ID: 6
Name: Puppet Modules
Label: Puppet_Modules
Composite: false
Description:
Content Host Count: 0
Organization: Mega Corporation
Yum Repositories:

Docker Repositories:

Puppet Modules:

  1. ID: 1
    Name: puppetlabs-motd
    Author: puppetlabs
    Created: 2016/02/01 12:45:19
    Updated: 2016/02/01 12:45:19
    Lifecycle Environments:
  2. ID: 6
    Name: Baseline
  3. ID: 2
    Name: Library
    Versions:
  4. ID: 6
    Version: 1.0
    Published: 2016/02/01 12:45:31
    Components:

Activation Keys:

After publishing and promoting to Baseline lifecycle env here is what
ended up on disk…

$ ls -l
/etc/puppet/environments/KT_megacorp_Baseline_Puppet_Modules_6/modules
drwxr-xr-x. 6 apache apache 4096 Jan 31 08:50 puppetlabs-motd

After moving my host to that puppet environment and adding the motd class
to it, I ran puppet agent -t and got the error at the start of this
email…

Error 400 on SERVER: Could not find class motd for
katello-katello.example.com on node katello-katello.example.com

If I make a symlink in the modules dir like this…

$ ls -l
/etc/puppet/environments/KT_megacorp_Baseline_Puppet_Modules_6/modules
lrwxrwxrwx. 1 apache apache 15 Feb 1 08:32 motd -> puppetlabs-motd
drwxr-xr-x. 6 apache apache 4096 Jan 31 08:50 puppetlabs-motd

Then puppet agent -t runs clean and I can see motd updated.

So… Where did I go wrong? Why was the module created on disk named
puppetlabs-motd instead of motd? Or is there some other problem?

@thomasmckay

The issue is known:

https://groups.google.com/forum/#!topic/foreman-users/sGjFQylvuuA

here is the bug report:

https://bugzilla.redhat.com/show_bug.cgi?id=1123446

they say it's fixed in pulp 2.4.1. I'm running 2.8.x and it doesn't work.

As a workaround you can use hammer cli:

e.g.

hammer -u admin repository upload-content --organization-id 1 --path
/modules --product "Puppet modules" --name "Puppet modules"

works perfect :slight_smile:

··· Am Mittwoch, 7. September 2016 16:19:04 UTC+2 schrieb Oliver Weinmann:

Hi,

I just stumbled across the same problem. But only under windows. Linux
puppet agents seem to be able to handle this.

Am Montag, 1. Februar 2016 15:32:38 UTC+1 schrieb Tom McKay:

I’d like to figure out where I went wrong or if there is an issue…

$ sudo puppet agent -t
Warning: Local environment: “production” doesn’t match server specified
node environment “KT_megacorp_Baseline_Puppet_Modules_6”, switching agent
to “KT_megacorp_Baseline_Puppet_Modules_6”.
Info: Retrieving pluginfacts
Info: Retrieving plugin
Warning: nmcli (1.0.6) and NetworkManager (1.0.0) versions don’t match.
Use --nocheck to suppress the warning.
Warning: nmcli (1.0.6) and NetworkManager (1.0.0) versions don’t match.
Use --nocheck to suppress the warning.
Warning: nmcli (1.0.6) and NetworkManager (1.0.0) versions don’t match.
Use --nocheck to suppress the warning.
Error: Could not retrieve catalog from remote server: Error 400 on
SERVER: Could not find class motd for katello-katello.example.com on
node katello-katello.example.com
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run

First I ran this…

sudo mkdir /var/www/html/pub/puppet-modules
sudo chmod a+rw /var/www/html/pub/puppet-modules
git clone https://github.com/puppetlabs/puppetlabs-motd.git
cd puppetlabs-motd
…bumped version…
sudo pulp-puppet-module-builder --output-dir
/var/www/html/pub/puppet-modules .

Then I created a product with a puppet repo sync’ed from that output plus
a repo synced from puppetforge…

$ hammer product info --id 17 --organization "Mega Corporation"
ID: 17
Name: Puppet Modules
Label: puppet-motd
Description: Example puppet product
Sync State: Syncing Complete.
Sync Plan ID:
GPG:
GPG Key ID:
GPG Key:
Organization: Mega Corporation
Readonly: false
Deletable:
Content:

  1. Repo Name: Puppet Forge
    URL: /custom/puppet-motd/puppet-forge
    Content Type: puppet
  2. Repo Name: Puppet MOTD
    URL: /custom/puppet-motd/puppet-motd
    Content Type: puppet

Then I created a content view and added the puppet module to it…

$ hammer content-view info --id 6 --organization "Mega Corporation"
Warning: Option --id is deprecated. This option will be removed in
Katello 2.5, Use --uuid
ID: 6
Name: Puppet Modules
Label: Puppet_Modules
Composite: false
Description:
Content Host Count: 0
Organization: Mega Corporation
Yum Repositories:

Docker Repositories:

Puppet Modules:

  1. ID: 1
    Name: puppetlabs-motd
    Author: puppetlabs
    Created: 2016/02/01 12:45:19
    Updated: 2016/02/01 12:45:19
    Lifecycle Environments:
  2. ID: 6
    Name: Baseline
  3. ID: 2
    Name: Library
    Versions:
  4. ID: 6
    Version: 1.0
    Published: 2016/02/01 12:45:31
    Components:

Activation Keys:

After publishing and promoting to Baseline lifecycle env here is what
ended up on disk…

$ ls -l
/etc/puppet/environments/KT_megacorp_Baseline_Puppet_Modules_6/modules
drwxr-xr-x. 6 apache apache 4096 Jan 31 08:50 puppetlabs-motd

After moving my host to that puppet environment and adding the motd class
to it, I ran puppet agent -t and got the error at the start of this
email…

Error 400 on SERVER: Could not find class motd for
katello-katello.example.com on node katello-katello.example.com

If I make a symlink in the modules dir like this…

$ ls -l
/etc/puppet/environments/KT_megacorp_Baseline_Puppet_Modules_6/modules
lrwxrwxrwx. 1 apache apache 15 Feb 1 08:32 motd -> puppetlabs-motd
drwxr-xr-x. 6 apache apache 4096 Jan 31 08:50 puppetlabs-motd

Then puppet agent -t runs clean and I can see motd updated.

So… Where did I go wrong? Why was the module created on disk named
puppetlabs-motd instead of motd? Or is there some other problem?

@thomasmckay