name: Upgrade to debian bullseye systems: node: foonode always: - has_zfs=python: NODES.node.has_bundle('zfs') - is_buster=python: NODES.node.os_version[0] <= 10 - buster_with_zfs=python: "{has_zfs} and {is_buster}" pipeline: - manual: "set icinga2 downtime: https://icinga.kunsmann.eu/monitoring/host/schedule-downtime?host={SYSTEMS.node}" # apply first so we only see the upgrade changes later - local: bw apply {SYSTEMS.node} - manual: update debian version in node groups - is_buster?local: "bw apply -o bundle:apt -s symlink:/usr/bin/python pkg_apt: -- {SYSTEMS.node}" # double time! - remote@node: DEBIAN_FRONTEND=noninteractive apt-get -y -q -o Dpkg::Options::=--force-confold dist-upgrade - remote@node: DEBIAN_FRONTEND=noninteractive apt-get -y -q -o Dpkg::Options::=--force-confold dist-upgrade # reboot into bullseye - remote@node: systemctl reboot - local: | exit=1 while [[ $exit -ne 0 ]]; do sleep 1 ssh {SYSTEMS.node} true exit=$? done # fix zfs and reboot again - buster_with_zfs?remote@node: zpool import tank -f - has_zfs?remote@node: zpool upgrade -a - has_zfs?remote@node: systemctl reboot - has_zfs?local: | exit=1 while [[ $exit -ne 0 ]]; do sleep 1 ssh {SYSTEMS.node} true exit=$? done # final apply - local: bw apply {SYSTEMS.node}