# The failed path results in installation of mcollective
# but with the installed config file moved to '.old'. Just clean
# up to make this more pristine.
% apt-get --purge remove mcollective; rm -Rf /etc/mcollective/
% sh ./enable-proposed
deb http://archive.ubuntu.com/ubuntu xenial-proposed main universe
% sudo apt-get update -q && sudo apt-get install cloud-init
% dpkg-query --show cloud-init
cloud-init 0.7.7~bzr1256-0ubuntu1~16.04.1
# similate first boot on pristine image.
# avoid the 'seed' dir in /var/lib/cloud as it is used by lxd
% sudo rm -Rf /var/log/cloud-init
% rm -Rf /var/lib/cloud/{data,handlers,instance,instances,scripts,sem}
% sudo reboot
### wait and re-attach to instance
$ while ! lxc exec $name -- test -e /run/cloud-init/result.json; do echo .; sleep 1; done
$ lxc exec "$name" /bin/bash
# PS1="% "
% dpkg-query --show mcollective
mcollective 2.6.0+dfsg-2.1
% grep WARN /var/log/cloud-init.log || echo no WARN
no WARN
% systemctl status mcollective
● mcollective.service - The Marionette Collective
Loaded: loaded (/lib/systemd/system/mcollective.service; enabled; vendor pres
Active: active (running) since Tue 2016-07-19 17:03:14 UTC; 3min 8s ago
Main PID: 739 (ruby)
Tasks: 3
Memory: 9.8M
CPU: 248ms
CGroup: /system.slice/mcollective.service
└─739 ruby /usr/sbin/mcollectived --config=/etc/mcollective/server.cf
Jul 19 17:03:14 mcollective0 systemd[1]: Starting The Marionette Collective...
Jul 19 17:03:14 mcollective0 systemd[1]: mcollective.service: Supervising proces
Jul 19 17:03:14 mcollective0 systemd[1]: Started The Marionette Collective.
Jul 19 17:03:16 mcollective0 systemd[1]: Started The Marionette Collective.
I've verified this in an lxc container using the method described here.
# launch instance (lxc) collective: mcollective mcollective/ plugins mcollective. log addressing: 1 vider: psk
$ name="mcollective0"
$ cat > user-data <<EOF
#cloud-config
mcollective:
conf:
main_
collectives: mcollective
libdir: /usr/share/
logfile: /var/log/
loglevel: debug
daemonize: 1
direct_
ttl: 4294957
securitypro
plugin.psk: unset
identity: 2
connector: rabbitmq rabbitmq. vhost: mcollective rabbitmq. pool.size: 1 rabbitmq. pool.1. host: 10.10.0.2 rabbitmq. pool.1. port: 61613 rabbitmq. pool.1. user: mcollective rabbitmq. pool.1. password: ScwpVo8egrZ0OmT 6sRmp9zEA rabbitmq. heartbeat_ interval: 30
plugin.
plugin.
plugin.
plugin.
plugin.
plugin.
plugin.
factsource: yaml e/facts. yaml user.user- data=$( cat user-data)"
plugin.yaml: /etc/mcollectiv
EOF
$ lxc launch ubuntu-daily:xenial $name "--config=
# wait for boot init/result. json; do echo .; sleep 1; done
$ while ! lxc exec $name -- test -e /run/cloud-
# get in the instance (first boot, unpatched) build.info
$ lxc exec "$name" /bin/bash
# PS1="% "
% cat /etc/cloud/
build_name: server
serial: 20160715
% grep FAIL /var/log/ cloud-init. log config/ config- mcollective: FAIL: running config-mcollective with frequency once-per-instance
Jul 19 17:01:10 ubuntu [CLOUDINIT] handlers.py[DEBUG]: finish: modules-
Jul 19 17:01:10 ubuntu [CLOUDINIT] handlers.py[DEBUG]: finish: modules-config: FAIL: running modules for config
% dpkg-query --show cloud-init 0ubuntu1~ 16.04.1
cloud-init 0.7.7~bzr1246-
# The failed path results in installation of mcollective
# but with the installed config file moved to '.old'. Just clean
# up to make this more pristine.
% apt-get --purge remove mcollective; rm -Rf /etc/mcollective/
# enable proposed and update sources. list | sources. list.d/ proposed. list
% cat > enable-proposed <<"EOF"
#!/bin/sh
set -e
rel=$(lsb_release -sc)
awk '$1 == "deb" && $2 ~ /ubuntu.com/ {
printf("%s %s %s-proposed main universe\n", $1, $2, rel); exit(0) };
' "rel=$rel" /etc/apt/
tee /etc/apt/
EOF
% sh ./enable-proposed archive. ubuntu. com/ubuntu xenial-proposed main universe 0ubuntu1~ 16.04.1
deb http://
% sudo apt-get update -q && sudo apt-get install cloud-init
% dpkg-query --show cloud-init
cloud-init 0.7.7~bzr1256-
# similate first boot on pristine image. cloud/{ data,handlers, instance, instances, scripts, sem}
# avoid the 'seed' dir in /var/lib/cloud as it is used by lxd
% sudo rm -Rf /var/log/cloud-init
% rm -Rf /var/lib/
% sudo reboot
### wait and re-attach to instance init/result. json; do echo .; sleep 1; done
$ while ! lxc exec $name -- test -e /run/cloud-
$ lxc exec "$name" /bin/bash
# PS1="% "
% dpkg-query --show mcollective cloud-init. log || echo no WARN
mcollective 2.6.0+dfsg-2.1
% grep WARN /var/log/
no WARN
% systemctl status mcollective system/ mcollective. service; enabled; vendor pres slice/mcollecti ve.service mcollectived --config= /etc/mcollectiv e/server. cf
● mcollective.service - The Marionette Collective
Loaded: loaded (/lib/systemd/
Active: active (running) since Tue 2016-07-19 17:03:14 UTC; 3min 8s ago
Main PID: 739 (ruby)
Tasks: 3
Memory: 9.8M
CPU: 248ms
CGroup: /system.
└─739 ruby /usr/sbin/
Jul 19 17:03:14 mcollective0 systemd[1]: Starting The Marionette Collective... service: Supervising proces
Jul 19 17:03:14 mcollective0 systemd[1]: mcollective.
Jul 19 17:03:14 mcollective0 systemd[1]: Started The Marionette Collective.
Jul 19 17:03:16 mcollective0 systemd[1]: Started The Marionette Collective.
% ls --full-time -l /etc/mcollectiv e/server. cfg e/server. cfg
-rw-r--r-- 1 root root 828 2016-07-19 17:03:16.080913763 +0000 /etc/mcollectiv