Avr 22 2020

Enregistrement Auto d’un Esclave Jenkins avec une API REST

Publié par sous Jenkins




Créez un noeud Jenkins automatiquement avec un appel à une API REST. Le plus gros du travail est de créer le code json qui décrit le nouvel esclave Jenkins. La configuration peut être légèrement différente selon les paramètres du noeud que vous souhaitez appliquer.
Pour obtenir exactement ce que vous voulez, vous pouvez créer un esclave test manuellement et capturer l’objet JSON dans l’onglet réseau des outils développeur de votre navigateur tout en cliquant sur « Sauver ». En attendant, voici un exemple, présumant que l’agent se lance via un script de démarrage:

{
   "name": "mon_esclave_jenkins",
   "nodeDescription": "mon esclave Jenkins",
   "numExecutors": "2",
   "remoteFS": "/home/jenkins",
   "labelString": "slave",
   "mode": "EXCLUSIVE",
   "": [
      "hudson.slaves.JNLPLauncher",
      "hudson.slaves.RetentionStrategy$Always"
   ],
   "launcher": {
      "stapler-class": "hudson.slaves.JNLPLauncher",
      "$class": "hudson.slaves.JNLPLauncher",
      "workDirSettings": {
         "disabled": true,
         "workDirPath": "",
         "internalDir": "remoting",
         "failIfWorkDirIsMissing": false
      },
      "tunnel": "",
      "vmargs": ""
   },
   "retentionStrategy": {
      "stapler-class": "hudson.slaves.RetentionStrategy$Always",
      "$class": "hudson.slaves.RetentionStrategy$Always"
   },
   "nodeProperties": {
      "stapler-class-bag": "true",
      "hudson-slaves-EnvironmentVariablesNodeProperty": {
         "env": [
            {
               "key": "JAVA_HOME",
               "value": "/usr/lib/jvm/java-8-openjdk-amd64"
            }
         ]
      },
      "_comment:": {
         "hudson-tools-ToolLocationNodeProperty": {
           "locations": [
               {
                  "key": "hudson.model.JDK$DescriptorImpl@JAVA-8",
                  "home": "/usr/bin/java"
               }
            ]
         }
      }
   }
}

 
Il ne reste qu’à définir les variables suivantes:

jenkins_user=mon_esclave_jenkins
jenkins_token=mon_token_jenkins
jenkins_url=https://jenkins.mondomaine.lan

 
Et faire un post du fichier JSON à l’aide d’un simple curl:

$ curl -L -s -o /dev/null -w "%{http_code}" -u $jenkins_user:$jenkins_token \
-H "Content-Type:application/x-www-form-urlencoded" -X POST \
-d "json=$(cat /tmp/node.json)" \
"$jenkins_url/computer/doCreateItem?name=mon_esclave_jenkins&type=hudson.slaves.DumbSlave"; \
echo
200

 
Si vous n’obtenez pas un code de réponse 200, exécutez la même chose en omettant « -o /dev/null » pour débugguer.
Certains diront qu’on peut aussi utiliser d’autres outils comme Jenkins CLI ou des plugins l’API REST de Jenkins fonctionne à travers les firewalls et reste assez simple à mettre en oeuvre.
Dans le prochain article, j’utiliserai cette méthode pour automatiser l’enregistrement d’un agent Jenkins agent avec Ansible

 

Aucune Réponse

Mai 17 2018

Le pilote de l’explorateur a reçu trop de datagrammes non autorisés

Publié par sous AS400




Je n’arrêtais pas de recevoir des events ID 8016 avec « bowser » en libellé dans le journal d’évènements système de Windows. Ceux-ci sont générés par des serveurs IBM i (AS400):
 
« Le pilote de l’explorateur a reçu trop de datagrammes non autorisés de l’ordinateur distant AS400 vers le nom DOMAINE sur le transport NetBT_Tcpip_{0D11505D-12FC-4A5E-CC8E-8377D23692FD}. La donnée est le datagramme. Aucun nouvel événement ne sera généré jusqu’à ce que la fréquence de réinitialisation soit expirée. »
 
Voici comment s’en débarrasser:
Ouvrir Navigator for i
Naviguer dans Réseau, Serveurs, Serveurs TCP/IP
Sélectionner IBM i NetServer, cliquer sur l’onglet Actions et sélectionner Propriétés
 

 
Dans la nouvelle fenêtre, aller dans l’onglet Avancé, cliquer sur « Prochain démarrage » et décocher « Envoyer annonces de présence »
 

 

Aucune Réponse

Juil 20 2017

Mise à Jour Automatique du Matériel dans GLPI

Publié par sous GLPI




Ayant de nombreux sites, il est très difficile de suivre la localisation du matériel, et même en faisant de son mieux, on n’est pas toujours au courant lorsque des personnes déplacent des ordinateurs ou des imprimantes sur un autre site sans le dire; Il peut aussi être utile de savoir la dernière fois qu’un matériel a été connecté.
 
Pré-requis:
– Ajouter les switches réseau dans GLPI en s’assurant que les champs nom (DNS), marque, lieu et type soient bien remplis
– Générer une paire de clés SSH et l’installer sur le serveur depuis lequel s’exécutera le script, installer la clé publique sur les switches pour pouvoir s’y connecter automatiquement sans mot de passe
La liste des switches supportés comprend les Cisco Catalyst, les HP Procurve* et les 3com mais pourrait être étendue facilement à d’autres constructeurs.
Consultez la documentation officielle de Cisco, HP et 3com pour installer la clé publique sur chaque switch.
– Configurer les variables GLPI (dans le script) et lancer le script
 

 
Fonctionnalités:
– Récupère la liste des switches sur GLPI (enregistrés sous le nom « switch » dans matériel réseau)
– Se connecte aux switches et récupère la liste des adresses mac
– Si la mac est trouvée dans GLPI (dans ordinateurs, imprimantes ou matériel réseau), la date de dernière modification et le lieu sont mis à jour
– Dans le cas contraire, le fabricant associé à la mac est récupéré sur Internet. Un cache accélère la récupération si les 6 chiffres ont déjà été rencontrés
– Retourne le percentage d’adresses mac connues
– Informe si des doublons sont trouvés dans la base GLPI (une mac trouvée sur le réseau est enregistrée pour plusieurs matériels dans GLPI)
– Fonctionne sur les switches Cisco, HP* et 3com et pourrait être adapté à d’autres marques. Du matériel comme Cisco Small Business ne supporte pas l’authentification par clé SSH.
Le % s’améliore en renseignant le plus de macs possible dans GLPI
Vous n’avez pas idée du nombre de matériels qui se connectent à votre réseau!

* avec rancid

Téléchargement gratuit

 

Aucune Réponse

Suivant »