Cloud-init ohne package upgrade?

herzkerl

Member
Mar 18, 2021
96
15
13
Hallo liebe Community, ist es möglich, trotz Verwendung von eurer Cloud-init-Implementierung dort die automatischen Paketupdates zu deaktivieren?
Ich habe versucht, in der VM die user-data.txt zu bearbeiten, aber nach einem Neustart stand dort wieder package_upgrade: true
 
Danke für die Rückmeldung – kannst du etwas dazu sagen, welche Priorität der FR für euch aktuell hat? Es sieht nur nach einer Kleinigkeit aus (wobei das ja oft auch fälschlicherweise der Fall ist) und seit fast zwei Jahren gab es keine Neuigkeiten dazu.

Würde ansonsten die Alternative umsetzen (müssen) oder Cloud-init erstmal nicht weiter verwenden...
 
Hi, ich hab mir das Problem gerade nochmal angeschaut. Verstehe ich richtig, dass du hauptsächlich verhindern willst, dass eine bereits konfigurierte VM im laufenden Betrieb automatisch Updates installiert? Wenn ja, bin ich garnicht sicher, ob der Wert von package_upgrade überhaupt relevant ist. Eigentlich setzt nämlich cloud-init die "module frequency" für package_update_upgrade_install auf once-per-instance [1] -- wenn ich richtig verstehe, sollte das Modul daher nur einmalig pro Instanz (und nicht bei jedem Boot) laufen.

Könnte es sein, dass das VM-Image sowas wie unattended-upgrades [2] einsetzt und deswegen Updates installiert werden? Falls das ein Debian oder Ubuntu ist, könntest du mal schauen, was dpkg -l unattended-upgrades und systemctl status apt-daily-upgrade.timer sagen. SIehe auch hier [3].

[1] https://cloudinit.readthedocs.io/en/latest/reference/modules.html#package-update-upgrade-install
[2] https://wiki.debian.org/UnattendedUpgrades
[3] https://unix.stackexchange.com/q/315502
 
Habe nachgesehen, siehe unten. Betreffen die unattended-upgrades nur sicherheitsrelevante Patches? Unser Checkmk zeigt bei den Maschinen auf jeden Fall über mehrere Tage ausstehende ’normal updates’ an.

Bash:
dpkg -l unattended-upgrades

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                Version      Architecture Description
+++-===================-============-============-===========================================
ii  unattended-upgrades 2.3ubuntu0.3 all          automatic installation of security upgrades

Bash:
systemctl status apt-daily-upgrade.timer

● apt-daily-upgrade.timer - Daily apt upgrade and clean activities
     Loaded: loaded (/lib/systemd/system/apt-daily-upgrade.timer; enabled; vendor preset: enabled)
     Active: active (waiting) since Wed 2023-03-08 17:04:33 UTC; 38min ago
    Trigger: Thu 2023-03-09 06:25:40 UTC; 12h left
   Triggers: ● apt-daily-upgrade.service

Mar 08 17:04:33 hostname systemd[1]: Started Daily apt upgrade and clean activities
 
PS: Nachdem ich das Cloud-init-ISO angepasst hatte, damit package_upgrade: false ist, zeigten die Maschinen nach dem nächsten Neustart keine Suche mehr nach Updates an – daher vermute ich, dass es nichts mit den unattended-upgrades zu tun hat.
 
Danke fürs Nachschauen!
Habe nachgesehen, siehe unten. Betreffen die unattended-upgrades nur sicherheitsrelevante Patches?
Das hängt davon ab, wie unattended-upgrades in /etc/apt/apt.conf.d in der VM konfiguriert ist, siehe z.B. [1]. In meiner Ubuntu Jammy-VM installierts tatsächlich nur Updates aus jammy-security, nicht jammy-updates.

Da der apt-daily-upgrade.timer aktiv ist, könnte ich mir vorstellen, dass unattended-upgrade auch regelmäßig Updates installiert -- das könntest du aber in der /var/log/apt/history.log sehen (das sind Einträge mit Commandline: /usr/bin/unattended-upgrade).

Dass cloud-install bei jedem Boot Updates installiert, kann ich mir noch nicht so ganz erklären. Um zu entscheiden, ob once-per-instance-Module schon gelaufen sind, verlässt sich cloud-init auf die "Instance ID". Eventuell ist diese ID bei jedem Boot eine andere, weswegen cloud-init jedes Mal davon ausgeht, dass es noch nicht gelaufen ist. Könntest du den Output von folgendes Kommandos schicken? Das könnte bei der Diagnose helfen.
Code:
grep -e apt-get -e package-update-upgrade /var/log/cloud-init.log
ls -l  /var/lib/cloud/instances/

Eine alternativer Workaround statt cicustom wäre, in der VM einfach das cloud-init-Modul package-update-upgrade-install zu deaktivieren. Das geht, indem du in der /etc/cloud/cloud.cfg die entsprechende Zeile auskommentierst, z.B.:
Code:
cloud_final_modules:
# - package-update-upgrade-install
- fan
 - landscape
 # ...

[1] https://help.ubuntu.com/community/A...s#Using_the_.22unattended-upgrades.22_package
 
  • Like
Reactions: herzkerl
Hi, wir wären auch sehr an einer integrierten Lösung von Proxmox interessiert.
Noch besser wäre natürlich direkt die Möglichkeit custom config in die Cloudinit Config hinzufügen zu können. Damit hätte man jegliche Freiheit.
 
Last edited:
  • Like
Reactions: herzkerl
Dass cloud-install bei jedem Boot Updates installiert, kann ich mir noch nicht so ganz erklären. Um zu entscheiden, ob once-per-instance-Module schon gelaufen sind, verlässt sich cloud-init auf die "Instance ID". Eventuell ist diese ID bei jedem Boot eine andere, weswegen cloud-init jedes Mal davon ausgeht, dass es noch nicht gelaufen ist. Könntest du den Output von folgendes Kommandos schicken? Das könnte bei der Diagnose helfen.

Besser spät als nie:

grep -e apt-get -e package-update-upgrade /var/log/cloud-init.log (vorher noch einige Einträge aus 2022, da die Maschine aus einem Template geklont wurde)
Bash:
2023-04-21 17:23:59,684 - modules.py[DEBUG]: Running module package-update-upgrade-install (<module 'cloudinit.config.cc_package_update_upgrade_install' from '/usr/lib/python3/dist-packages/cloudinit/config/cc_package_update_upgrade_install.py'>) with frequency once-per-instance
2023-04-21 17:23:59,684 - handlers.py[DEBUG]: start: modules-final/config-package-update-upgrade-install: running config-package-update-upgrade-install with frequency once-per-instance
2023-04-21 17:23:59,686 - helpers.py[DEBUG]: Running config-package-update-upgrade-install using lock (<FileLock using file '/var/lib/cloud/instances/9fed62ea8087ea8229221063bb82211a095e13ed/sem/config_package_update_upgrade_install'>)
2023-04-21 17:23:59,686 - handlers.py[DEBUG]: finish: modules-final/config-package-update-upgrade-install: SUCCESS: config-package-update-upgrade-install ran successfully
2023-04-21 17:32:41,489 - modules.py[DEBUG]: Running module package-update-upgrade-install (<module 'cloudinit.config.cc_package_update_upgrade_install' from '/usr/lib/python3/dist-packages/cloudinit/config/cc_package_update_upgrade_install.py'>) with frequency once-per-instance
2023-04-21 17:32:41,489 - handlers.py[DEBUG]: start: modules-final/config-package-update-upgrade-install: running config-package-update-upgrade-install with frequency once-per-instance
2023-04-21 17:32:41,490 - helpers.py[DEBUG]: config-package-update-upgrade-install already ran (freq=once-per-instance)
2023-04-21 17:32:41,490 - handlers.py[DEBUG]: finish: modules-final/config-package-update-upgrade-install: SUCCESS: config-package-update-upgrade-install previously ran
2023-04-21 17:37:08,991 - modules.py[DEBUG]: Running module package-update-upgrade-install (<module 'cloudinit.config.cc_package_update_upgrade_install' from '/usr/lib/python3/dist-packages/cloudinit/config/cc_package_update_upgrade_install.py'>) with frequency once-per-instance
2023-04-21 17:37:08,992 - handlers.py[DEBUG]: start: modules-final/config-package-update-upgrade-install: running config-package-update-upgrade-install with frequency once-per-instance
2023-04-21 17:37:08,994 - helpers.py[DEBUG]: Running config-package-update-upgrade-install using lock (<FileLock using file '/var/lib/cloud/instances/206f816dc7410e256ebc4ceca187ca883f4a400c/sem/config_package_update_upgrade_install'>)
2023-04-21 17:37:08,994 - handlers.py[DEBUG]: finish: modules-final/config-package-update-upgrade-install: SUCCESS: config-package-update-upgrade-install ran successfully
2023-04-21 20:09:19,601 - modules.py[DEBUG]: Running module package-update-upgrade-install (<module 'cloudinit.config.cc_package_update_upgrade_install' from '/usr/lib/python3/dist-packages/cloudinit/config/cc_package_update_upgrade_install.py'>) with frequency once-per-instance
2023-04-21 20:09:19,602 - handlers.py[DEBUG]: start: modules-final/config-package-update-upgrade-install: running config-package-update-upgrade-install with frequency once-per-instance
2023-04-21 20:09:19,602 - helpers.py[DEBUG]: config-package-update-upgrade-install already ran (freq=once-per-instance)
2023-04-21 20:09:19,602 - handlers.py[DEBUG]: finish: modules-final/config-package-update-upgrade-install: SUCCESS: config-package-update-upgrade-install previously ran
2023-04-22 10:53:37,695 - modules.py[DEBUG]: Running module package-update-upgrade-install (<module 'cloudinit.config.cc_package_update_upgrade_install' from '/usr/lib/python3/dist-packages/cloudinit/config/cc_package_update_upgrade_install.py'>) with frequency once-per-instance
2023-04-22 10:53:37,706 - handlers.py[DEBUG]: start: modules-final/config-package-update-upgrade-install: running config-package-update-upgrade-install with frequency once-per-instance
2023-04-22 10:53:37,706 - helpers.py[DEBUG]: config-package-update-upgrade-install already ran (freq=once-per-instance)
2023-04-22 10:53:37,706 - handlers.py[DEBUG]: finish: modules-final/config-package-update-upgrade-install: SUCCESS: config-package-update-upgrade-install previously ran
2023-04-30 17:11:54,644 - modules.py[DEBUG]: Running module package-update-upgrade-install (<module 'cloudinit.config.cc_package_update_upgrade_install' from '/usr/lib/python3/dist-packages/cloudinit/config/cc_package_update_upgrade_install.py'>) with frequency once-per-instance
2023-04-30 17:11:54,644 - handlers.py[DEBUG]: start: modules-final/config-package-update-upgrade-install: running config-package-update-upgrade-install with frequency once-per-instance
2023-04-30 17:11:54,645 - helpers.py[DEBUG]: config-package-update-upgrade-install already ran (freq=once-per-instance)
2023-04-30 17:11:54,645 - handlers.py[DEBUG]: finish: modules-final/config-package-update-upgrade-install: SUCCESS: config-package-update-upgrade-install previously ran
2023-04-30 17:39:05,040 - modules.py[DEBUG]: Running module package-update-upgrade-install (<module 'cloudinit.config.cc_package_update_upgrade_install' from '/usr/lib/python3/dist-packages/cloudinit/config/cc_package_update_upgrade_install.py'>) with frequency once-per-instance
2023-04-30 17:39:05,041 - handlers.py[DEBUG]: start: modules-final/config-package-update-upgrade-install: running config-package-update-upgrade-install with frequency once-per-instance
2023-04-30 17:39:05,041 - helpers.py[DEBUG]: config-package-update-upgrade-install already ran (freq=once-per-instance)
2023-04-30 17:39:05,041 - handlers.py[DEBUG]: finish: modules-final/config-package-update-upgrade-install: SUCCESS: config-package-update-upgrade-install previously ran
2023-05-06 16:43:34,856 - modules.py[DEBUG]: Running module package-update-upgrade-install (<module 'cloudinit.config.cc_package_update_upgrade_install' from '/usr/lib/python3/dist-packages/cloudinit/config/cc_package_update_upgrade_install.py'>) with frequency once-per-instance
2023-05-06 16:43:34,856 - handlers.py[DEBUG]: start: modules-final/config-package-update-upgrade-install: running config-package-update-upgrade-install with frequency once-per-instance
2023-05-06 16:43:34,857 - helpers.py[DEBUG]: Running config-package-update-upgrade-install using lock (<FileLock using file '/var/lib/cloud/instances/613dcb0e01682c44bc5a862d0947ba01caab9609/sem/config_package_update_upgrade_install'>)
2023-05-06 16:43:34,857 - handlers.py[DEBUG]: finish: modules-final/config-package-update-upgrade-install: SUCCESS: config-package-update-upgrade-install ran successfully

ls -l /var/lib/cloud/instances/

Bash:
drwxr-xr-x 5 root root 4096 May  6 16:43 206f816dc7410e256ebc4ceca187ca883f4a400c
drwxr-xr-x 5 root root 4096 May  6 16:43 613dcb0e01682c44bc5a862d0947ba01caab9609
drwxr-xr-x 5 root root 4096 Apr 21 17:36 9fed62ea8087ea8229221063bb82211a095e13ed
drwxr-xr-x 5 root root 4096 Aug 21  2022 c2e6aa8530d21dcf869757c937d679cf513ac334
drwxr-xr-x 5 root root 4096 Apr 21 17:23 e450233f7a33841e1d6038a9476367a2051c56fc
drwxr-xr-x 5 root root 4096 Aug 21  2022 iid-datasource-none
 
Hi, wir wären auch sehr an einer integrierten Lösung von Proxmox interessiert.
Es gibt nun einen Patch [1] dafür, er muss aber noch reviewed und gemerged werden.
Noch besser wäre natürlich direkt die Möglichkeit custom config in die Cloudinit Config hinzufügen zu können.
Die Möglichkeit gibt es bereits, über den cicustom Parameter können eigene Skripts (aus einem snippets directory) hinzugefügt werden. Siehe auch hier [2]. Die bereits existierende Konfiguration lässt sich erweitern, man kann sie mittels qm cloudinit dump {vmid} {user|vendor|…} ausgeben und als Basis für eine eigene Konfiguration (via cicustom) nutzen.


[1] https://lists.proxmox.com/pipermail/pve-devel/2023-May/056720.html
[2] https://pve.proxmox.com/wiki/Cloud-Init_Support#_custom_cloud_init_configuration
 
  • Like
Reactions: herzkerl and fweber
Hallo,

noch als Nachtrag: In meinem Post #7 war mir noch nicht klar, dass PVE die Instance-ID als Hash aus der aktuellen User- und Network-Data berechnet -- siehe dazu auch diesen Bugreport [1]. Sie ändert sich also jedes Mal wenn sich die User-/Network-Data ändert. Der Eintrag package_upgrade: true und die Frequency once-per-instance des Moduls config-package-update-upgrade-install führen dann dazu, dass beim nächsten Boot Package-Upgrades durchgeführt werden.

Bash:
...
2023-04-21 17:23:59,686 - helpers.py[DEBUG]: Running config-package-update-upgrade-install using lock (<FileLock using file '/var/lib/cloud/instances/9fed62ea8087ea8229221063bb82211a095e13ed/sem/config_package_update_upgrade_install'>)
2023-04-21 17:23:59,686 - handlers.py[DEBUG]: finish: modules-final/config-package-update-upgrade-install: SUCCESS: config-package-update-upgrade-install ran successfully
...
2023-04-21 17:37:08,994 - helpers.py[DEBUG]: Running config-package-update-upgrade-install using lock (<FileLock using file '/var/lib/cloud/instances/206f816dc7410e256ebc4ceca187ca883f4a400c/sem/config_package_update_upgrade_install'>)
2023-04-21 17:37:08,994 - handlers.py[DEBUG]: finish: modules-final/config-package-update-upgrade-install: SUCCESS: config-package-update-upgrade-install ran successfully
...
2023-05-06 16:43:34,857 - helpers.py[DEBUG]: Running config-package-update-upgrade-install using lock (<FileLock using file '/var/lib/cloud/instances/613dcb0e01682c44bc5a862d0947ba01caab9609/sem/config_package_update_upgrade_install'>)
2023-05-06 16:43:34,857 - handlers.py[DEBUG]: finish: modules-final/config-package-update-upgrade-install: SUCCESS: config-package-update-upgrade-install ran successfully
Aus diesen Logzeilen würde ich ablesen, dass sich die Instance-ID am 21.4. zweimal, und noch einmal am 6.5. geändert hat, und deswegen das Modul config-package-update-upgrade-install zu diesen Zeitpunkten Package-Upgrades durchgeführt hat.

[1]: https://bugzilla.proxmox.com/show_bug.cgi?id=1739
 
  • Like
Reactions: herzkerl

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!