{"id":675,"date":"2020-04-22T18:23:20","date_gmt":"2020-04-22T17:23:20","guid":{"rendered":"http:\/\/www.netexpertise.eu\/fr\/?p=675"},"modified":"2021-05-13T19:27:20","modified_gmt":"2021-05-13T18:27:20","slug":"enregistrement-auto-dun-esclave-jenkins-avec-une-api-rest","status":"publish","type":"post","link":"http:\/\/www.netexpertise.eu\/fr\/devops\/jenkins\/enregistrement-auto-dun-esclave-jenkins-avec-une-api-rest.html","title":{"rendered":"Enregistrer un Esclave Jenkins par API REST"},"content":{"rendered":"\n<p>Voici comment enregistrer un noeud <a href=\"\/fr\/category\/devops\/jenkins\">Jenkins<\/a> automatiquement avec un appel \u00e0 une API REST sur le ma\u00eetre.<br>Le plus gros du travail est de cr\u00e9er le code json qui d\u00e9crit le nouvel esclave Jenkins. La configuration peut \u00eatre l\u00e9g\u00e8rement diff\u00e9rente selon les param\u00e8tres du noeud que vous souhaitez appliquer.<br>Pour obtenir exactement ce que vous voulez, vous pouvez cr\u00e9er un esclave test manuellement et capturer l&rsquo;objet JSON dans l&rsquo;onglet r\u00e9seau des outils d\u00e9veloppeur de votre navigateur tout en cliquant sur \u00ab\u00a0Sauver\u00a0\u00bb. En attendant, voici un exemple, pr\u00e9sumant que l&rsquo;agent se lance via un script de d\u00e9marrage:<br><br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"json\" class=\"language-json\">{\n   \"name\": \"mon_esclave_jenkins\",\n   \"nodeDescription\": \"mon esclave Jenkins\",\n   \"numExecutors\": \"2\",\n   \"remoteFS\": \"\/home\/jenkins\",\n   \"labelString\": \"slave\",\n   \"mode\": \"EXCLUSIVE\",\n   \"\": [\n      \"hudson.slaves.JNLPLauncher\",\n      \"hudson.slaves.RetentionStrategy$Always\"\n   ],\n   \"launcher\": {\n      \"stapler-class\": \"hudson.slaves.JNLPLauncher\",\n      \"$class\": \"hudson.slaves.JNLPLauncher\",\n      \"workDirSettings\": {\n         \"disabled\": true,\n         \"workDirPath\": \"\",\n         \"internalDir\": \"remoting\",\n         \"failIfWorkDirIsMissing\": false\n      },\n      \"tunnel\": \"\",\n      \"vmargs\": \"\"\n   },\n   \"retentionStrategy\": {\n      \"stapler-class\": \"hudson.slaves.RetentionStrategy$Always\",\n      \"$class\": \"hudson.slaves.RetentionStrategy$Always\"\n   },\n   \"nodeProperties\": {\n      \"stapler-class-bag\": \"true\",\n      \"hudson-slaves-EnvironmentVariablesNodeProperty\": {\n         \"env\": [\n            {\n               \"key\": \"JAVA_HOME\",\n               \"value\": \"\/usr\/lib\/jvm\/java-8-openjdk-amd64\"\n            }\n         ]\n      },\n      \"_comment:\": {\n         \"hudson-tools-ToolLocationNodeProperty\": {\n           \"locations\": [\n               {\n                  \"key\": \"hudson.model.JDK$DescriptorImpl@JAVA-8\",\n                  \"home\": \"\/usr\/bin\/java\"\n               }\n            ]\n         }\n      }\n   }\n}\n<\/code><\/pre>\n\n\n\n<p>\u00a0<br>Il ne reste qu&rsquo;\u00e0 d\u00e9finir les 3 variables d&rsquo;environnement suivantes:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">jenkins_user=mon_esclave_jenkins\njenkins_token=mon_token_jenkins\njenkins_url=https:\/\/jenkins.mondomaine.lan<\/code><\/pre>\n\n\n\n<p>\u00a0<br>Et faire un post du fichier JSON \u00e0 l&rsquo;aide d&rsquo;une simple requ\u00eate curl:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ curl -L -s -o \/dev\/null -w \"%{http_code}\" -u $jenkins_user:$jenkins_token \\\n-H \"Content-Type:application\/x-www-form-urlencoded\" -X POST \\\n-d \"json=$(cat \/tmp\/node.json)\" \\\n\"$jenkins_url\/computer\/doCreateItem?name=mon_esclave_jenkins&amp;type=hudson.slaves.DumbSlave\"; \\\necho\n200<\/code><\/pre>\n\n\n\n<p>&nbsp;<br>Si vous n&rsquo;obtenez pas un code de r\u00e9ponse 200, ex\u00e9cutez la m\u00eame chose en omettant \u00ab\u00a0-o \/dev\/null\u00a0\u00bb pour d\u00e9bugguer.<br>Certains diront que l&rsquo;on peut aussi utiliser d&rsquo;autres outils comme Jenkins CLI ou des plugins mais l&rsquo;API REST de Jenkins fonctionne \u00e0 travers les firewalls et reste assez simple \u00e0 mettre en oeuvre.<br>Dans le prochain article, j&rsquo;utiliserai cette m\u00e9thode pour <a href=\"\/fr\/devops\/ansible\/ajout-dun-slave-jenkins-avec-ansible.html\">enregistrer un agent Jenkins avec Ansible<\/a> automatiquement.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voici comment enregistrer un noeud Jenkins automatiquement avec un appel \u00e0 une API REST sur le ma\u00eetre.Le plus gros du travail est de cr\u00e9er le code json qui d\u00e9crit le nouvel esclave Jenkins. La configuration peut \u00eatre l\u00e9g\u00e8rement diff\u00e9rente selon les param\u00e8tres du noeud que vous souhaitez appliquer.Pour obtenir exactement ce que vous voulez, vous [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false},"categories":[442],"tags":[443],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Netexpertise - Enregistrer un Esclave Jenkins par API REST<\/title>\n<meta name=\"description\" content=\"Enregistrez un esclave Jenkins gr\u00e2ce \u00e0 un fichier de configuration JSON et curl appelant le ma\u00eetre Jenkins via une API REST.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.netexpertise.eu\/fr\/devops\/jenkins\/enregistrement-auto-dun-esclave-jenkins-avec-une-api-rest.html\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Netexpertise - Enregistrer un Esclave Jenkins par API REST\" \/>\n<meta property=\"og:description\" content=\"Enregistrez un esclave Jenkins gr\u00e2ce \u00e0 un fichier de configuration JSON et curl appelant le ma\u00eetre Jenkins via une API REST.\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.netexpertise.eu\/fr\/devops\/jenkins\/enregistrement-auto-dun-esclave-jenkins-avec-une-api-rest.html\" \/>\n<meta property=\"og:site_name\" content=\"Netexpertise\" \/>\n<meta property=\"article:published_time\" content=\"2020-04-22T17:23:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-05-13T18:27:20+00:00\" \/>\n<meta name=\"author\" content=\"dave\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@netexpertise\" \/>\n<meta name=\"twitter:site\" content=\"@netexpertise\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.netexpertise.eu\/fr\/devops\/jenkins\/enregistrement-auto-dun-esclave-jenkins-avec-une-api-rest.html\",\"url\":\"http:\/\/www.netexpertise.eu\/fr\/devops\/jenkins\/enregistrement-auto-dun-esclave-jenkins-avec-une-api-rest.html\",\"name\":\"Netexpertise - Enregistrer un Esclave Jenkins par API REST\",\"isPartOf\":{\"@id\":\"https:\/\/www.netexpertise.eu\/fr\/#website\"},\"datePublished\":\"2020-04-22T17:23:20+00:00\",\"dateModified\":\"2021-05-13T18:27:20+00:00\",\"author\":{\"@id\":\"https:\/\/www.netexpertise.eu\/fr\/#\/schema\/person\/e398f0307e2b167f6b884c4953be2632\"},\"description\":\"Enregistrez un esclave Jenkins gr\u00e2ce \u00e0 un fichier de configuration JSON et curl appelant le ma\u00eetre Jenkins via une API REST.\",\"breadcrumb\":{\"@id\":\"http:\/\/www.netexpertise.eu\/fr\/devops\/jenkins\/enregistrement-auto-dun-esclave-jenkins-avec-une-api-rest.html#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.netexpertise.eu\/fr\/devops\/jenkins\/enregistrement-auto-dun-esclave-jenkins-avec-une-api-rest.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.netexpertise.eu\/fr\/devops\/jenkins\/enregistrement-auto-dun-esclave-jenkins-avec-une-api-rest.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.netexpertise.eu\/fr\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Enregistrer un Esclave Jenkins par API REST\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.netexpertise.eu\/fr\/#website\",\"url\":\"https:\/\/www.netexpertise.eu\/fr\/\",\"name\":\"Netexpertise\",\"description\":\"Syst\u00e8mes \/ R\u00e9seaux \/ DevOps\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.netexpertise.eu\/fr\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.netexpertise.eu\/fr\/#\/schema\/person\/e398f0307e2b167f6b884c4953be2632\",\"name\":\"dave\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.netexpertise.eu\/fr\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g\",\"caption\":\"dave\"},\"sameAs\":[\"http:\/\/www.netexpertise.eu\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Netexpertise - Enregistrer un Esclave Jenkins par API REST","description":"Enregistrez un esclave Jenkins gr\u00e2ce \u00e0 un fichier de configuration JSON et curl appelant le ma\u00eetre Jenkins via une API REST.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/www.netexpertise.eu\/fr\/devops\/jenkins\/enregistrement-auto-dun-esclave-jenkins-avec-une-api-rest.html","og_locale":"fr_FR","og_type":"article","og_title":"Netexpertise - Enregistrer un Esclave Jenkins par API REST","og_description":"Enregistrez un esclave Jenkins gr\u00e2ce \u00e0 un fichier de configuration JSON et curl appelant le ma\u00eetre Jenkins via une API REST.","og_url":"http:\/\/www.netexpertise.eu\/fr\/devops\/jenkins\/enregistrement-auto-dun-esclave-jenkins-avec-une-api-rest.html","og_site_name":"Netexpertise","article_published_time":"2020-04-22T17:23:20+00:00","article_modified_time":"2021-05-13T18:27:20+00:00","author":"dave","twitter_card":"summary_large_image","twitter_creator":"@netexpertise","twitter_site":"@netexpertise","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"http:\/\/www.netexpertise.eu\/fr\/devops\/jenkins\/enregistrement-auto-dun-esclave-jenkins-avec-une-api-rest.html","url":"http:\/\/www.netexpertise.eu\/fr\/devops\/jenkins\/enregistrement-auto-dun-esclave-jenkins-avec-une-api-rest.html","name":"Netexpertise - Enregistrer un Esclave Jenkins par API REST","isPartOf":{"@id":"https:\/\/www.netexpertise.eu\/fr\/#website"},"datePublished":"2020-04-22T17:23:20+00:00","dateModified":"2021-05-13T18:27:20+00:00","author":{"@id":"https:\/\/www.netexpertise.eu\/fr\/#\/schema\/person\/e398f0307e2b167f6b884c4953be2632"},"description":"Enregistrez un esclave Jenkins gr\u00e2ce \u00e0 un fichier de configuration JSON et curl appelant le ma\u00eetre Jenkins via une API REST.","breadcrumb":{"@id":"http:\/\/www.netexpertise.eu\/fr\/devops\/jenkins\/enregistrement-auto-dun-esclave-jenkins-avec-une-api-rest.html#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["http:\/\/www.netexpertise.eu\/fr\/devops\/jenkins\/enregistrement-auto-dun-esclave-jenkins-avec-une-api-rest.html"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/www.netexpertise.eu\/fr\/devops\/jenkins\/enregistrement-auto-dun-esclave-jenkins-avec-une-api-rest.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.netexpertise.eu\/fr"},{"@type":"ListItem","position":2,"name":"Enregistrer un Esclave Jenkins par API REST"}]},{"@type":"WebSite","@id":"https:\/\/www.netexpertise.eu\/fr\/#website","url":"https:\/\/www.netexpertise.eu\/fr\/","name":"Netexpertise","description":"Syst\u00e8mes \/ R\u00e9seaux \/ DevOps","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.netexpertise.eu\/fr\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/www.netexpertise.eu\/fr\/#\/schema\/person\/e398f0307e2b167f6b884c4953be2632","name":"dave","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.netexpertise.eu\/fr\/#\/schema\/person\/image\/","url":"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g","contentUrl":"http:\/\/1.gravatar.com\/avatar\/1129916e1f4955bd632f27f836f64e55?s=96&d=mm&r=g","caption":"dave"},"sameAs":["http:\/\/www.netexpertise.eu"]}]}},"_links":{"self":[{"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/posts\/675"}],"collection":[{"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/comments?post=675"}],"version-history":[{"count":0,"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/posts\/675\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/media?parent=675"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/categories?post=675"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.netexpertise.eu\/fr\/wp-json\/wp\/v2\/tags?post=675"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}