We're in the midst of upgrading from Puppet 3.8 to the latest PC1
release, and I've found what seems to be inconsistent package
behavior with MCollective plugins.
Background: We have historically used 'mco puppet' and 'mco rpc
puppet' to orchestrate multi-node application deployments. We do
basic system configuration using scheduled agent runs, but some
resources are tagged such that they only run during our orchestrated
deploys. We run a mix of Windows and Linux (mostly Ubuntu, but
recently we've had to support CentOS as well).
Getting the 'mco puppet' command is normally done by installing the
mcollective-puppet-(agent|client) package. On CentOS, this works
fine:
[root@pr01cw-sql01ny ~]# rpm -qa | grep
puppetlabs-release
puppetlabs-release-pc1-1.0.0-2.el6.noarch
puppetlabs-release-6-12.noarch
[root@pr01cw-sql01ny ~]# yum install mcollective-puppet-agent
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
* base: mirror.trouble-free.net
* extras: repo1.ash.innoscale.net
* updates: mirror.solarvps.com
Resolving Dependencies
--> Running transaction check
---> Package mcollective-puppet-agent.noarch
0:1.11.0-1.el6 will be installed
--> Finished Dependency Resolution
...(snip)...
Installing :
mcollective-puppet-agent-1.11.0-1.el6.noarch
1/1
Verifying :
mcollective-puppet-agent-1.11.0-1.el6.noarch
1/1
Installed:
mcollective-puppet-agent.noarch
0:1.11.0-1.el6
Complete!
However, on Ubuntu:
root@pr00fc-pup01va:~# dpkg -l | grep puppetlabs-release
ii puppetlabs-release
1.0-12 all "Package to
install Puppet Labs gpg key and apt repo"
ii puppetlabs-release-pc1
1.0.0-2trusty all Release packages
for the Puppet Labs PC1 repository
root@pr00fc-pup01va:~# aptitude install
mcollective-puppet-client
The following NEW packages will be installed:
libruby1.9.1{a} mcollective-common{a}
mcollective-puppet-client mcollective-puppet-common{a} ruby{a}
ruby-json{a} ruby-stomp{a} ruby1.9.1{a}
0 packages upgraded, 8 newly installed, 0 to remove and 0
not upgraded.
Need to get 240 kB/2,926 kB of archives. After unpacking
14.1 MB will be used.
The following packages have unmet dependencies:
puppet-agent : Breaks: mcollective-common (< 3.0.0)
but 2.8.4-1puppetlabs1 is to be installed.
The following actions will resolve these dependencies:
Remove the following packages:
1) puppet-agent
2) puppetserver
Accept this solution? [Y/n/q/?]
So it appears that the dependencies are expressed differently
between the two platforms -- works on CentOS, breaks on Ubuntu.
Somewhat even more confusingly, Ubuntu has another package called
'mcollective-plugins-puppetd' that appears to provide identical
functionality (enable/disable/runonce/etc) that is not present on
CentOS, and it is NOT compatible with the mcollective-puppet-*
commands (i.e. issuing an 'mco puppetd' command from an mco client
is ignored by an mco server that has the 'mco puppet' command
available).
From what I've been able to tell, mcollective plugins were in flux
as part of the change to PC1, which is why you need to install both
the PC1 and legacy repositories to get some plugins. But PC1 has
been 'released' for quite a while and I was kind of expecting these
sorts of issues to be sorted out by now.
Is there a good solution to this? I'm at the point where I'm
thinking of just ripping the Ruby file(s) out of one of the packages
and managing it with a file{} resource and ditching packages
completely, but if there's a better way to do this, I'd like to hear
about it.
And of course, there are no packages for mcollective plugins
available for Windows at all, as far as I can tell. But that's a
whole other issue. ;)
Thanks,
- Peter