J'ai installé Landscape Server 19.10 (quickstart) sur un nouveau conteneur LXC 18.04 fonctionnant sous Proxmox. L'installation n'a posé aucun problème, l'interface graphique Web a fonctionné correctement et j'ai pu connecter mes machines clientes au serveur.
Malheureusement, j'ai remarqué dans le volet des notifications de l'interface graphique web que le script update_security_db.sh échouait de manière répétée à chaque fois qu'il était exécuté (il le fait toutes les heures, d'après /etc/cron.d/landscape-server).
Vérification de update-security-db.log et l'exécution manuelle du script me donne l'erreur suivante :
Dec 19 16:40:36 update-security-db ERR Traceback (most recent call last):
Dec 19 16:40:36 update-security-db ERR File "./process-usns", line 7, in <module>
Dec 19 16:40:36 update-security-db ERR canonical.landscape.scripts.usn.run()
Dec 19 16:40:36 update-security-db ERR File "/opt/canonical/landscape/canonical/landscape/scripts/batch.py", line 77, in __call__
Dec 19 16:40:36 update-security-db ERR code = self.run()
Dec 19 16:40:36 update-security-db ERR File "/opt/canonical/landscape/canonical/landscape/scripts/usn.py", line 40, in run
Dec 19 16:40:36 update-security-db ERR changeset = update_from_usn_tool_db(db)
Dec 19 16:40:36 update-security-db ERR File "/opt/canonical/landscape/canonical/landscape/model/package/usn.py", line 237, in update_from_usn_tool_db
Dec 19 16:40:36 update-security-db ERR "WHERE id = %(temp)s.pkg_id" % {"temp": temp_table})
Dec 19 16:40:37 update-security-db ERR File "/usr/lib/python2.7/dist-packages/storm/store.py", line 109, in execute
Dec 19 16:40:37 update-security-db ERR return self._connection.execute(statement, params, noresult)
Dec 19 16:40:37 update-security-db ERR File "/usr/lib/python2.7/dist-packages/storm/databases/postgres.py", line 306, in execute
Dec 19 16:40:37 update-security-db ERR return Connection.execute(self, statement, params, noresult)
Dec 19 16:40:37 update-security-db ERR File "/usr/lib/python2.7/dist-packages/storm/database.py", line 241, in execute
Dec 19 16:40:37 update-security-db ERR raw_cursor = self.raw_execute(statement, params)
Dec 19 16:40:37 update-security-db ERR File "/usr/lib/python2.7/dist-packages/storm/databases/postgres.py", line 316, in raw_execute
Dec 19 16:40:37 update-security-db ERR return Connection.raw_execute(self, statement, params)
Dec 19 16:40:37 update-security-db ERR File "/usr/lib/python2.7/dist-packages/storm/database.py", line 374, in raw_execute
Dec 19 16:40:37 update-security-db ERR self._run_execution(raw_cursor, args, params, statement)
Dec 19 16:40:37 update-security-db ERR File "/usr/lib/python2.7/dist-packages/storm/database.py", line 392, in _run_execution
Dec 19 16:40:37 update-security-db ERR statement, params or (), error)
Dec 19 16:40:37 update-security-db ERR File "/usr/lib/python2.7/dist-packages/storm/database.py", line 454, in _check_disconnect
Dec 19 16:40:37 update-security-db ERR return function(*args, **kwargs)
Dec 19 16:40:37 update-security-db ERR File "/usr/lib/python2.7/dist-packages/storm/tracer.py", line 248, in trace
Dec 19 16:40:37 update-security-db ERR attr(*args, **kwargs)
Dec 19 16:40:37 update-security-db ERR File "/usr/lib/python2.7/dist-packages/storm/databases/postgres.py", line 463, in connection_raw_execute_error
Dec 19 16:40:37 update-security-db ERR statement, params, "SQL server cancelled statement")
Dec 19 16:40:37 update-security-db ERR storm.exceptions.TimeoutError: 'SQL server cancelled statement', 'UPDATE package SET usn_id = new_package_usn_6KqW4Z.usn_id FROM new_package_usn_6KqW4Z WHERE id = new_package_usn_6KqW4Z.pkg_id', ()
Cette erreur se produit chaque fois que update_security_db.sh est exécuté. En exécutant manuellement le script, j'ai remarqué qu'il réussit à curler le fichier USN depuis les serveurs Ubuntu. Il transmet ensuite le fichier au script process_usns script. Le script s'exécute pendant plusieurs minutes avant de se terminer avec l'erreur SQL indiquée ci-dessus.
J'ai essentiellement installé landscape-server-quickstart directement sur un conteneur frais, et essayer le processus à nouveau sur un nouveau conteneur m'a donné le même problème aussi. Ce qui est étrange, c'est que le journal semble impliquer qu'il y a un problème avec le serveur SQL traitant le fichier USN nouvellement téléchargé. L'utilisation du CPU et de la mémoire était bonne pendant l'exécution du script (mon conteneur a 4 Go de RAM et 2vCPU). C'est une préoccupation pour moi, car la raison principale pour laquelle j'ai mis en place Landscape est d'effectuer la gestion des correctifs pour plusieurs ordinateurs.
UPDATE : J'ai lancé une machine virtuelle KVM aujourd'hui, sur une image fraîche d'Ubuntu Server 18.04. J'ai obtenu exactement la même erreur qu'avant (j'étais curieux de savoir si ce problème ne se produisait que s'il était exécuté dans LXC).