{"id":1070,"date":"2021-06-09T17:40:04","date_gmt":"2021-06-09T15:40:04","guid":{"rendered":"https:\/\/loeilduse.fr\/?p=1070"},"modified":"2021-06-11T15:26:23","modified_gmt":"2021-06-11T13:26:23","slug":"personnaliser-une-vm-ubuntu-avec-cloud-init-sur-vsphere","status":"publish","type":"post","link":"https:\/\/loeilduse.fr\/?p=1070&lang=fr","title":{"rendered":"Personnaliser une VM Ubuntu avec Cloud-Init sur vSphere"},"content":{"rendered":"<p><span style=\"font-family: trebuchet ms, geneva, sans-serif;\"><a href=\"https:\/\/cloudinit.readthedocs.io\/en\/latest\/\"> Cloud-Init<\/a> semble \u00eatre l&#8217;outil de personnalisation de pr\u00e9dilection pour les OS majeurs visant \u00e0 \u00eatre installer sur diff\u00e9rents environnement cloud (AWS, Azure, GCP, vSphere, &#8230;), il est tr\u00e8s puissant, h\u00e9t\u00e9rog\u00e8ne mais au d\u00e9but, il est difficile \u00e0 appr\u00e9hender.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">Les informations de personnalisation sont stock\u00e9es dans un fichier appel\u00e9 user-data. Ce fichier est transmis \u00e0 Cloud-Init gr\u00e2ce \u00e0 un m\u00e9canisme propre \u00e0 chaque cloud. Dans notre cas, ce sont les VMtools qui vont transmettre le fichier user-data, une fois re\u00e7u, Cloud-Init l&#8217;ex\u00e9cutera.<br \/>\n<\/span><\/p>\n<p><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">J&#8217;ai perdu \u00e9norm\u00e9ment de temps \u00e0 trouver les \u00e9tapes minimales pour personnaliser l&#8217;OS Ubuntu avec Cloud-Init dans un environnement vSphere. Je recherchais la possibilit\u00e9 de personnaliser l&#8217;OS lors des clones \u00e0 partir de template OVF.<\/span><\/p>\n<p><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">Ci-dessous la proc\u00e9dure que j&#8217;utilise pour un Ubuntu 20.04.2 LTS, fra\u00eechement install\u00e9 et apr\u00e8s son premier reboot. J&#8217;ai gard\u00e9 les valeurs par d\u00e9faut hormis le clavier Fran\u00e7ais et l&#8217;installation de l&#8217;option OpenSSH server.<\/span><\/p>\n<p><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">Il faut dire \u00e0 Cloud-Init de r\u00e9cup\u00e9rer le fichier de personnalisation user-data via les param\u00e8tres OVF de la VM, il y a une \u00e9tape \u00e0 faire cot\u00e9 VM et une cot\u00e9 OS.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-size: 14pt;\"><strong><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">Cot\u00e9 OS :<\/span><\/strong><\/span><\/p>\n<ul>\n<li><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">Supprimer le fichier qui met la Datasource \u00e0 none au lieu d&#8217;OVF<\/span>\n<ul>\n<li><span style=\"font-family: courier new, courier, monospace;\">sudo rm \/etc\/cloud\/cloud.cfg.d\/99-installer.cfg<\/span><\/li>\n<\/ul>\n<\/li>\n<li><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">Si vous souhaitez que la configuration r\u00e9seau se fasse, supprimer le fichier qui la d\u00e9sactive <\/span>\n<ul>\n<li><span style=\"font-family: trebuchet ms, geneva, sans-serif;\"><span style=\"font-family: courier new, courier, monospace;\">sudo rm \/etc\/cloud\/cloud.cfg.d\/subiquity-disable-cloudinit-networking.cfg<\/span><br \/>\n<\/span><\/li>\n<\/ul>\n<\/li>\n<li><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">Si vous \u00eates en DHCP, la VM r\u00e9cup\u00e9rera toujours la m\u00eame IP car elle gardera le m\u00eame machine ID. Pour \u00e9viter cela il faut remettre \u00e0 z\u00e9ro l&#8217;identit\u00e9 de l&#8217;OS :<\/span>\n<ul>\n<li><span style=\"font-family: courier new, courier, monospace;\">sudo truncate -s 0 \/etc\/machine-id<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"font-size: 14pt;\"><strong><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">Cot\u00e9 VM :<\/span><\/strong><\/span><\/p>\n<ul>\n<li style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">R\u00e9cup\u00e9rer le contenu de votre fichier cloud-init user-data et le cod\u00e9 avec base64 :<\/span>\n<ul>\n<li><span style=\"font-family: courier new, courier, monospace;\">Base64 user-data.yaml<\/span><\/li>\n<\/ul>\n<\/li>\n<li><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">A partir du vSphere client, lorsque la VM est arr\u00eat\u00e9e, Activer les propri\u00e9t\u00e9s de l&#8217;OVF :<\/span>\n<ul>\n<li><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">S\u00e9lectionnez la VM =&gt; Configure =&gt; vApp Options =&gt; vApp Options are disabled &#8230; Edit =&gt; Cliquer sur &#8220;Enable vApp options&#8221;<\/span><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1086 aligncenter\" src=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/06\/Enable-vApp.png\" alt=\"\" width=\"624\" height=\"295\" srcset=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/06\/Enable-vApp.png 624w, https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/06\/Enable-vApp-300x142.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/li>\n<li style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">Dans l&#8217;onglet OVF details =&gt; <label id=\"vsc-widget-id-35-ovfEnvironmentTransportLabelId\">OVF environment transport <\/label> =&gt; s\u00e9lectionner la case VMware Tools<\/span><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1087 aligncenter\" src=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/06\/Enable-vApp-VMTools.png\" alt=\"\" width=\"624\" height=\"433\" srcset=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/06\/Enable-vApp-VMTools.png 624w, https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/06\/Enable-vApp-VMTools-300x208.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/li>\n<\/ul>\n<\/li>\n<li><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">A partir du vSphere client, lorsque la VM est arr\u00eat\u00e9e, ajouter le champ user-data dans les propri\u00e9t\u00e9s de l&#8217;OVF : <\/span>\n<ul>\n<li><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">=&gt; S\u00e9lectionnez la VM =&gt; Configure =&gt; vApp Options =&gt; Properties =&gt; ADD mettre le Label et Key id\u00a0 \u00e0 la valeur user-data.<\/span><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1088 aligncenter\" src=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/06\/vApp-Add-key-id.png\" alt=\"\" width=\"624\" height=\"269\" srcset=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/06\/vApp-Add-key-id.png 624w, https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/06\/vApp-Add-key-id-300x129.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/li>\n<\/ul>\n<\/li>\n<li><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">A partir du vSphere client, lorsque la VM est arr\u00eat\u00e9e, ajouter la valeur au champ user-data dans les propri\u00e9t\u00e9s de l&#8217;OVF : <\/span>\n<ul>\n<li><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">S\u00e9lectionnez la VM =&gt; Configure =&gt; vApp Options =&gt; Properties =&gt; SET VALUE, un popup s&#8217;ouvre et mettre la cl\u00e9 base64 du contenu du fichier user-data r\u00e9cup\u00e9r\u00e9e un peu plus haut<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1090 aligncenter\" src=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/06\/vApp-SetValue-user-data.png\" alt=\"\" width=\"624\" height=\"259\" srcset=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/06\/vApp-SetValue-user-data.png 624w, https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/06\/vApp-SetValue-user-data-300x125.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1089 aligncenter\" src=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/06\/vApp-Properties-user-data.png\" alt=\"\" width=\"624\" height=\"323\" srcset=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/06\/vApp-Properties-user-data.png 624w, https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/06\/vApp-Properties-user-data-300x155.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1093 aligncenter\" src=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/06\/vApp-final-user-data.png\" alt=\"\" width=\"624\" height=\"224\" srcset=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/06\/vApp-final-user-data.png 624w, https:\/\/loeilduse.fr\/wp-content\/uploads\/2021\/06\/vApp-final-user-data-300x108.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">Maintenant \u00e0 partir de cette VM, faite directement un clone pour en faire une autre VM ou pour en faire un template. Si vous souhaitez changer le fichier user-data, au moment du d\u00e9ploiement de la VM, changez uniquement la cl\u00e9 base64 par la nouvelle cl\u00e9.<br \/>\n<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cloud-Init semble \u00eatre l&#8217;outil de personnalisation de pr\u00e9dilection pour les OS majeurs visant \u00e0 \u00eatre installer sur diff\u00e9rents environnement cloud (AWS, Azure, GCP, vSphere, &#8230;), il est tr\u00e8s puissant, h\u00e9t\u00e9rog\u00e8ne mais au d\u00e9but, il est difficile \u00e0 appr\u00e9hender. Les informations de personnalisation sont stock\u00e9es dans un fichier appel\u00e9 user-data. Ce fichier est transmis \u00e0 Cloud-Init<\/p><\/div>\n<div class=\"blog-btn\"><a href=\"https:\/\/loeilduse.fr\/?p=1070&#038;lang=fr\" class=\"home-blog-btn\">Lire la suite<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[147],"tags":[503,527,525,513,505,507,511,509,173],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/posts\/1070"}],"collection":[{"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1070"}],"version-history":[{"count":21,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/posts\/1070\/revisions"}],"predecessor-version":[{"id":1105,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/posts\/1070\/revisions\/1105"}],"wp:attachment":[{"href":"https:\/\/loeilduse.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1070"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1070"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1070"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}