diff options
author | Scott Moser <smoser@ubuntu.com> | 2016-03-04 00:41:52 -0500 |
---|---|---|
committer | Scott Moser <smoser@ubuntu.com> | 2016-03-04 00:41:52 -0500 |
commit | 3400f839651d308e495d1d8a1d7c1c2b463ad98b (patch) | |
tree | 91bb7977e00c18d955c1b5a10a366bdb94422295 /packages | |
parent | 2231c45ac3712c5cb7c1b810c838d3f91f424bf2 (diff) | |
parent | 9b0cbf54a90d2434e2a93e34664646ee8638fc97 (diff) | |
download | vyos-cloud-init-3400f839651d308e495d1d8a1d7c1c2b463ad98b.tar.gz vyos-cloud-init-3400f839651d308e495d1d8a1d7c1c2b463ad98b.zip |
systemd: support disabling cloud-init via file or kernel cmdline
This adds a systemd generator for a 'cloud-init.target'. That target will
be WantedBy multi-user.target in the default case. If there is a file
/etc/cloud/cloud-init.disabled or the kernel command line contains
'cloud-init=disabled' then cloud-init will not affect boot at all.
There are some packages/debian changes to affect this:
* postinst, preinst: these are necessary to remove some
old target files for multi-user.target (LP: #1552999)
* changes to include these files in the debian source package.
* rules.in: supports DEB_BUILD_OPTIONS=nocheck to not run check
setup.py: mostly changes to support installing the generator
but also pep8 fixes along the way
systemd/*: make each of the services 'WantedBy=cloud-init.target'
rather than being wanted by multi-user.target
Diffstat (limited to 'packages')
-rwxr-xr-x | packages/bddeb | 11 | ||||
-rw-r--r-- | packages/debian/cloud-init.postinst | 16 | ||||
-rw-r--r-- | packages/debian/cloud-init.preinst | 20 | ||||
-rwxr-xr-x | packages/debian/rules.in | 4 |
4 files changed, 46 insertions, 5 deletions
diff --git a/packages/bddeb b/packages/bddeb index c4efe264..c141b1ab 100755 --- a/packages/bddeb +++ b/packages/bddeb @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +import glob import os import shutil import sys @@ -105,11 +106,11 @@ def write_debian_folder(root, version, revno, pkgmap, util.abs_join(deb_dir, 'rules'), params={'python': python, 'pyver': pyver}) - # Just copy the following directly - for base_fn in ['dirs', 'copyright', 'compat']: - shutil.copy(util.abs_join(find_root(), - 'packages', 'debian', base_fn), - util.abs_join(deb_dir, base_fn)) + # Just copy any other files directly (including .in) + pdeb_d = util.abs_join(find_root(), 'packages', 'debian') + for f in [os.path.join(pdeb_d, f) for f in os.listdir(pdeb_d)]: + if os.path.isfile(f): + shutil.copy(f, util.abs_join(deb_dir, os.path.basename(f))) def main(): diff --git a/packages/debian/cloud-init.postinst b/packages/debian/cloud-init.postinst new file mode 100644 index 00000000..cdd0466d --- /dev/null +++ b/packages/debian/cloud-init.postinst @@ -0,0 +1,16 @@ +#!/bin/sh +cleanup_lp1552999() { + local oldver="$1" last_bad_ver="0.7.7~bzr1178" + dpkg --compare-versions "$oldver" le "$last_bad_ver" || return 0 + local edir="/etc/systemd/system/multi-user.target.wants" + rm -f "$edir/cloud-config.service" "$edir/cloud-final.service" \ + "$edir/cloud-init-local.service" "$edir/cloud-init.service" +} + + +#DEBHELPER# + +if [ "$1" = "configure" ]; then + oldver="$2" + cleanup_lp1552999 "$oldver" +fi diff --git a/packages/debian/cloud-init.preinst b/packages/debian/cloud-init.preinst new file mode 100644 index 00000000..3c2af06d --- /dev/null +++ b/packages/debian/cloud-init.preinst @@ -0,0 +1,20 @@ +#!/bin/sh +# vi: ts=4 expandtab + +cleanup_lp1552999() { + local oldver="$1" last_bad_ver="0.7.7~bzr1178" + dpkg --compare-versions "$oldver" le "$last_bad_ver" || return 0 + local hdir="/var/lib/systemd/deb-systemd-helper-enabled" + hdir="$hdir/multi-user.target.wants" + local edir="/etc/systemd/system/multi-user.target.wants" + rm -f "$hdir/cloud-config.service" "$hdir/cloud-final.service" \ + "$hdir/cloud-init-local.service" "$hdir/cloud-init.service" +} + + +if [ "$1" = "upgrade" ]; then + oldver="$2" + cleanup_lp1552999 "$oldver" +fi + +#DEBHELPER# diff --git a/packages/debian/rules.in b/packages/debian/rules.in index 66e80946..5420949c 100755 --- a/packages/debian/rules.in +++ b/packages/debian/rules.in @@ -13,7 +13,11 @@ override_dh_install: cp tools/21-cloudinit.conf debian/cloud-init/etc/rsyslog.d/21-cloudinit.conf override_dh_auto_test: +ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS))) http_proxy= make check +else + @echo check disabled by DEB_BUILD_OPTIONS=$(DEB_BUILD_OPTIONS) +endif override_dh_systemd_start: dh_systemd_start --no-restart-on-upgrade --no-start |