Il y a une prémisse que "les paramètres sont toujours légèrement différents". Par exemple, même si vous avez 1000 unités, si vous avez la même configuration, le nombre de packages de mise à jour sera le même et vous devriez pouvoir configurer un serveur de distribution, vous ne devriez donc pas avoir besoin d'un tel outil. Il n'a pas beaucoup de distorsion avec l'infrastructure Docker dont on parle beaucoup, et cela n'a rien à voir avec le lancement temporaire de vagrant.
J'en ai environ 5 moi-même, mais je les utilise quand j'ai un environnement différent pour Debian / Ubuntu / CentOS.
Je ne pouvais tout simplement pas penser à un logiciel qui gère de telles vérifications à travers les systèmes d'exploitation.
https://github.com/dmiyakawa/check_linux_updates
Il s'agit d'une implémentation qui permet de voir les mises à jour pour chaque hôte via Fabric (ssh). Par défaut, il va vérifier en parallèle.
Exemple(La partie snip était en fait équivalente à FQDN):
$ check_updates.py
hansode.(snip) : 0(0) (REBOOT-REQUIRED)
gobusode.(snip) : 40(0)
shichibusode.(snip): 1(0)
mowa-net.jp : 3(2)
centos64.(snip) : 2(?) (REBOOT_REQUIRED)
gobusode est un Sid Debian. Ce sera comme ça dès qu'il sera laissé sans surveillance. Cependant, un peu plus important est mowa-net.jp, qui a deux mises à jour de sécurité (entre parenthèses), donc cela devrait être mis à jour. Bien sûr, Debian a un mécanisme pour appliquer automatiquement les mises à jour de sécurité, c'est donc une punition pour ne pas l'utiliser.
$ check_updates.py --upgrade mowa-net
Sera mis à jour. Dans ce cas, il sera exécuté en série sur un hôte, il est donc normal de demander le mot de passe.
J'ai changé le nom d'hôte de différentes manières, mais cela fonctionne généralement comme ça. Il peut être mélangé avec CentOS (centos64 ci-dessus est un exemple), mais j'ignore l'implémentation et je n'ai vu aucune mise à jour de sécurité sur CentOS. Donc c'est "?". (Je le vois avec les outils décrits plus tard. Cela)
L'implémentation de mon côté autour de Paramiko (connexion ssh) est trop appropriée, et lors de l'exécution en parallèle, si vous n'entrez pas avec l'authentification par clé publique, elle échouera à l'invite du mot de passe. sudo Je meurs toujours à l'invite du mot de passe quand j'en ai besoin.
Vous pouvez définir un groupe tel que "propre groupe de serveurs". L'exemple suivant parcourt les hôtes du groupe de mines et prend des décisions de mise à jour et de redémarrage interactives. (Fabric n'autorise pas le Oui / Non interactif lors de l'exécution en parallèle)
$ check_updates.py --serial --ask-upgrade mine
On suppose que le côté exécution est Python 2.7.
$ check_updates.py -h
usage: check_updates.py [-h] [-s] [-q] [-n] [-v] [--ask-upgrade]
[--auto-upgrade] [--dist-upgrade]
[--auto-upgrade-restart] [--refresh] [--show-packages]
[--sanity-check]
[HOST [HOST ...]]
Checks if remote hosts need update or not.
positional arguments:
HOST Host names or host groups. If not specified, default
hosts configuration will be used. This may allow
special command "all" "list", "groups" (=
"list_groups").
optional arguments:
-h, --help show this help message and exit
-s, --serial Executes check in serial manner
-q, --quiet Suppress unnecessary output.
-n, --nonregistered Allow host names that are not registered
-v, --verbose Show verbose outputs, including Fabric ones.
--ask-upgrade Asks if upgrade should be done when appropriate. Only
effective when --serial (-s) option is set
--auto-upgrade Requests hosts to upgrade itself when necessary.
--dist-upgrade Use "dist-upgrade" instead of "upgrade". Only
effective with debian-like systems. Meaningless on
redhat-like systems.
--auto-upgrade-restart
Requests hosts to upgrade itself and restart when
upgrade is finished. With this option restart will be
executed regardless of necessity (with/without
"Reboot-Required" status). This will execute "dist-
upgrade" on debian(-like) OSes, not "upgrade.
--refresh Run "apt-get update" on debian-like systems.
--show-packages This will show names of packages to be upgraded.
--sanity-check First executes sanity check toward each host serially
(not in parallel). If some hosts show prompt in the
check phase, this command will abort itself
immediately. Might be useful for "debugging" new
hosts. If you are considering --serial option, This
"check" would be meaningless.
Avec le script ci-dessus, vous devez établir une connexion ssh, et le processus d'authentification / autorisation est délicat. Il existe de nombreux inconvénients lors de la surveillance avec Zabbix.
Créons quelque chose qui peut être surveillé à partir de Zabbix Agent même si un script (Python) est placé sur chaque hôte.
$ check_update_local.py -h
usage: check_update_local.py [-h] [--log LOG] [-d] [-s] [-r] [-q]
Check if update is available. Returns num of updates
optional arguments:
-h, --help show this help message and exit
--log LOG Set Python log level. e.g. DEBUG, INFO, WARN
-d, --debug Shortcut for --log DEBUG
-s, --security-updates
Instead of showing num of updates, show num of
security updates.
-r, --reboot_required
Instead of showing num of updates, return 1 if reboot
is required
-q, --quiet Logging will be disabled entirely.
$ check_update_local.py
0
$ check_update_local.py -s
0
$ check_update_local.py -r
1
Debian a besoin du paquet update-notifier-common pour utiliser la commande apt-check
.
Certes, il semble qu'il soit inclus dès le début s'il s'agit d'un système Ubuntu, mais les détails sont inconnus.
C'était relativement facile jusqu'à présent, Si vous ne faites pas attention et essayez de rendre ce script compatible avec CentOS 6 Le Python par défaut pour CentOS 6 a flippé à 2.6 (plutôt que 2.7). J'ai fait beaucoup de hacks étranges, et si je suis entré dans argparse avec pip, je suis arrivé à un niveau où cela fonctionne, mais Je voudrais m'attendre à une méthode plus propre.
Malheureusement, la prise en charge de Python 3 n'est pas incluse. 14.04 Ce n'est peut-être pas de type LTS.
L'utilisation avec Zabbix est décrite dans README.md. Les deux apt-check et yum sont vraiment difficiles à frapper de la part de l'agent, donc c'est mal à l'aise. Lorsqu'il est utilisé avec de nombreux objets surveillés, le processus côté serveur qui atteint l'agent peut devenir plein. Je l'ai fait plus tôt, donc je ne peux pas le vérifier.
Meilleur outil que ça