← Back to team overview

cloud-init-dev team mailing list archive

[Merge] ~chad.smith/cloud-init:ubuntu/bionic into cloud-init:ubuntu/bionic

 

Chad Smith has proposed merging ~chad.smith/cloud-init:ubuntu/bionic into cloud-init:ubuntu/bionic.

Commit message:
Patch ubuntu debian/cloud-init.postinst to rewrite /run/cloud-init/instance-data*.json on upgrade

LP: #1798189

Requested reviews:
  cloud-init commiters (cloud-init-dev)
Related bugs:
  Bug #1798189 in cloud-init: "cloud-init query: /run/cloud/instance-data-sensitive.json not generated on upgrade"
  https://bugs.launchpad.net/cloud-init/+bug/1798189

For more details, see:
https://code.launchpad.net/~chad.smith/cloud-init/+git/cloud-init/+merge/356897
-- 
Your team cloud-init commiters is requested to review the proposed merge of ~chad.smith/cloud-init:ubuntu/bionic into cloud-init:ubuntu/bionic.
diff --git a/debian/changelog b/debian/changelog
index 2bb9520..d83e08b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+cloud-init (18.4-0ubuntu1~18.04.2) bionic-proposed; urgency=medium
+
+  * debian/cloud-init.postinst: Rewrite /run/cloud-init/instance-data.json
+    on upgrade. (LP: #1798189)
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx>  Wed, 16 Oct 2018 21:30:45 -0600
+
 cloud-init (18.4-0ubuntu1~18.04.1) bionic-proposed; urgency=medium
 
   * drop the following cherry-picks now included:
diff --git a/debian/cloud-init.postinst b/debian/cloud-init.postinst
index f88d1c5..11ae75b 100644
--- a/debian/cloud-init.postinst
+++ b/debian/cloud-init.postinst
@@ -206,6 +206,20 @@ cleanup_lp1552999() {
         "$edir/cloud-init-local.service" "$edir/cloud-init.service"
 }
 
+# Old instance-data.json was root read-only, new is redacted world-readable
+# Also add instance-data-sensitive.json that is root read-only
+regenerate_instance_data_json_on_upgrade() {
+    if [ -f /run/cloud-init/instance-data.json -a
+         ! -f /run/cloud-init/instance-data-sensitive.json ]; then
+        # this is an upgraded system with old instance-data.json file
+        echo "Updating /run/cloud-init/instance-data.json"
+        python3 -c '
+from cloudinit.stages import _pkl_load
+pickled_ds = _pkl_load("/var/lib/cloud/instance/obj.pkl")
+pickled_ds.persist_instance_data()'
+    fi
+}
+
 disable_network_config_on_upgrade() {
     local oldver="$1" last_without_net="0.7.7~bzr1182-0ubuntu1"
     if [ ! -f /var/lib/cloud/instance/obj.pkl ]; then
@@ -323,6 +337,8 @@ EOF
    # make upgrades disable network changes by cloud-init
    disable_network_config_on_upgrade "$2"
 
+   regenerate_instance_data_json_on_upgrade
+
    fix_azure_upgrade_1611074 "$2"
 
    cleanup_ureadahead "$2"

References