<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8409134974669171624</id><updated>2019-01-07T05:06:23.606-08:00</updated><category term="Automation"/><category term="Oracle Linux"/><category term="AWS"/><category term="Provisioning"/><category term="Terraform"/><category term="Cloud"/><category term="Consul"/><category term="Docker"/><category term="Hashicorp"/><category term="Kickstart"/><category term="LXC"/><category term="Lambda"/><category term="OraclePublicCloud"/><category term="Packer"/><category term="Puppet"/><category term="VPC"/><title type='text'>Vite, c&#39;est mieux !</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default?alt=atom&amp;redirect=false'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8409134974669171624.post-3188461569269352390</id><published>2018-04-22T15:09:00.001-07:00</published><updated>2018-04-22T15:09:33.844-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Automation"/><category scheme="http://www.blogger.com/atom/ns#" term="Cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="Hashicorp"/><category scheme="http://www.blogger.com/atom/ns#" term="Terraform"/><title type='text'>Terraform depuis votre messagerie instantanée...</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/y8Uug5-08Bw/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;360&quot; src=&quot;https://www.youtube.com/embed/y8Uug5-08Bw?feature=player_embedded&quot; width=&quot;480&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;graf graf--p graf-after--figure&quot; id=&quot;dbce&quot; name=&quot;dbce&quot;&gt;Vous trouverez ci-dessus une démonstration de comment utiliser Terraform depuis n&#39;importe quelle messagerie instantanée et notamment Slack. Si vous voulez en savoir plus sur le sujet, regardez:&lt;/div&gt;&lt;ul class=&quot;postList&quot;&gt;&lt;li class=&quot;graf graf--li graf-after--p&quot; id=&quot;f061&quot; name=&quot;f061&quot;&gt;&lt;a class=&quot;markup--anchor markup--li-anchor&quot; data-href=&quot;https://github.com/gregoryguillou/terraform-api&quot; href=&quot;https://github.com/gregoryguillou/terraform-api&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;Terraform-Api&lt;/a&gt; fournit une API à Terraform et Git de sorte que vous pouvez créer, supprimer et modifier vos projets Terraform&lt;/li&gt;&lt;li class=&quot;graf graf--li graf-after--li&quot; id=&quot;d393&quot; name=&quot;d393&quot;&gt;&lt;a class=&quot;markup--anchor markup--li-anchor&quot; data-href=&quot;https://github.com/gregoryguillou/hubot-terraform&quot; href=&quot;https://github.com/gregoryguillou/hubot-terraform&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot;&gt;Hubot-Terraform&lt;/a&gt; est un ensemble de scripts pour interagir avec l&#39;APO Terraform depuis Hubot et les fournisseurs de messageries qui le supporte&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;graf graf--p graf-after--li graf--trailing&quot; id=&quot;1289&quot; name=&quot;1289&quot;&gt;Have fun!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/3188461569269352390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.resetlogs.fr/2018/04/terraform-from-slack.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/3188461569269352390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/3188461569269352390'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/2018/04/terraform-from-slack.html' title='Terraform depuis votre messagerie instantanée...'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/y8Uug5-08Bw/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8409134974669171624.post-3699553814005143680</id><published>2018-02-25T16:42:00.002-08:00</published><updated>2018-02-25T16:43:39.421-08:00</updated><title type='text'>Reférentiel monolithique et CI/CD</title><content type='html'>Après avoir travaillé avec des dizaines de projets indépendants et géré les difficultés associées au partage de composants, aux combats contre la dette technique, à la duplication des paramètres des projets vers le code de l&#39;infrastructure ou simplement après avoir aidé des personnes à rejoindre des équipes et des projets, nous avons décidé de nous orienter vers un référentiel de code monolithique... Et de cette manière, d&#39;adresser certaines difficultés auxquelles nous avons fait face, en tant que start up, pour développer et faire croitre une architecture basée sur des micro-services.&lt;br /&gt;&lt;br /&gt;Comme vous devez vous en douter, stocker différents services dans un même référentiel de code, le &quot;monorepo&quot; n&#39;est pas non plus sans challenge. Vous voudrez assurer que les bonnes pratiques sont suivies. Vous voudrez optimiser vos pipelines d&#39;intégration et de déploiement continus, les CI/CD. Vous avez besoin de continuer à accélérer, d&#39;ajouter de nouvelles personnes, de nouvelles équipes.&lt;br /&gt;&lt;br /&gt;Un refétentiel monolithique vient avec son propre jeu de questions&amp;nbsp;: Comment l&#39;organiser au niveau le plus haut&amp;nbsp;? Comment conserver des services indépendants lorsque les commits, les tags, les branches, les pull et merge requests et les issues sont consolidées&amp;nbsp;? Comment différencier effectivement une &quot;architecture micro-service&quot; stockées dans un référentiel monolithique d&#39;un projet ou d&#39;une application monolithique&amp;nbsp;? Comment gérer les versions, les labels, les interfaces ou les artefacts&amp;nbsp;? Comment mixer des services basées sur des technologies aussi diverses que Java/Maven, Go, Javascript/React, Elm, Docker/Kunernetes&amp;nbsp;? Comment sécuriser un environnement et séparer les rôles et responsabilités&amp;nbsp;? Nous avons parcouru un long chemin et tout a commencé par un premier pas. &lt;br /&gt;&lt;h2&gt;Quels fichiers ont changés&amp;nbsp;?&lt;/h2&gt;La première façon dont nous l&#39;avons considéré, le monorepo est une collection de référéntiels plus réduits. De sorte que lorsque vous avez tout rassemblé, la première question, qui vient à l&#39;esprit lorsqu&#39;on merge un changement est&amp;nbsp; &quot;Quels fichiers ont changés ?&quot;. One fois que vous êtes en mesure de dire quelle partie exacte du référentiel monolithique a été modifié par l&#39;historique des commits qui amènent à une branche ou un tag, vous pouvez :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Assurer que vos équipes conservent l&#39;approche de l&#39;architecture micro-service, qu&#39;elles ne modifient qu&#39;un service à la fois et que chaque service est auto-porté&lt;/li&gt;&lt;li&gt;Déclencher le bon build, les bons tests et les bons déploiements&lt;/li&gt;&lt;li&gt;Orienter vers le bon pipeline, superviser le service associé durant la phase de mise à jour et de créer un rollback indépendant si certaines préoccupations touchaient la production&lt;/li&gt;&lt;/ul&gt;Evidemment, notre contexte est très différent d&#39;autres contextes. Notre process de développement s&#39;appuie sur un Github flow. Notre branche de référence est &lt;code&gt;master&lt;/code&gt;. Nous partons toujours de celle-ci et essayons de merger nos changements dès que possible pour réaliser de petits changements et conserver notre code et l&#39;environnement de production en synchro ou, au moins, la plupart de ce dernier. Nous encourageons les personnes à faire des rebases de leur changements plutôt qu&#39;à refusionner les changements depuis master. Notre niveau de compréhension de git est probablement supérieur à la moyenne. Les développeurs sont responsables de leurs branches ainsi que de les pousser en production ; cela inclut le fait de gérer les conflits si besoin ; Cela suppose d&#39;avoir un ensemble fiable de tests. Nous avons un unique environnement de production consolidé, même si, merci aux mises à jour blue/green, sont état est souvent transitoire. La manière dont nous développons est probablement très différente de la vôtre.&lt;br /&gt;&lt;br /&gt;Comme vous vous en rendrez compte à l&#39;aide de la commande &lt;code&gt;git merge-base --help&lt;/code&gt;, &lt;code&gt;git&lt;/code&gt; offre une commande simple pour trouver le commit de base qui a conduit à une branche. En supposant donc que HEAD est sur la branche, vous pourrez facilement remonter l&#39;historique des commits depuis la branche et trouver une intersaction avec master à l&#39;aide de la commande :  &lt;br /&gt;&lt;pre&gt;git merge-base origin/master HEAD&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Conséquence de la commande précédente, la commande ci-dessous liste les fichiers qui ont été changés entre la branche et le commit intersaction avec la branche master : &lt;br /&gt;&lt;pre&gt;git diff --name-only &quot;$(git merge-base origin/master HEAD)&quot; HEAD&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Notre processus de développement oblige également des revues systématiques. Les développeurs sont responsables des mises en production. Le test de la commande précédente n&#39;est donc qu&#39;un outil et, en aucun cas un contrôle unique.&lt;br /&gt;&lt;h2&gt;Clone Travis-CI&lt;/h2&gt;La méthode précédente suppose que l&#39;historique des commits, la branche de travail et la branche master fassent partie du référentiel sur lequel vous travaillez. Malheureusement lorsqu&#39;un job Travis-CI est déclenché par un commit sur une branche autre que master, la commande clone utilisée ressemble à celle qui suit :  &lt;br /&gt;&lt;pre&gt;git clone --branch [branch] --single-branch [yourproject]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Cette méthode ne fait que copier la branche courante. Elle prévient également l&#39;utilisation classique des commandes&amp;nbsp; &lt;code&gt;git fetch/pull&lt;/code&gt;. Si vous voulez plus de détails sur ces points, reportez-vous à la description de &lt;code&gt;--single-branch&lt;/code&gt; que vous trouverez en exécutant la commande &lt;code&gt;git clone --help&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Résultat, la commande &lt;code&gt;git merge-base origin/master HEAD&lt;/code&gt; ne fonctionne pas. Cela est simplement du au fait que la branche &lt;code&gt;master&lt;/code&gt; et le commit associé ne sont pas disponibles. Pour dépasser cette limite, une solution consiste à changer la configuration de votre référentiel de sorte que vous puissiez à nouveau référencer l&#39;ensemble des branches du projet. La propriété &lt;code&gt;remote.origin.fetch&lt;/code&gt; porte cette configuration. Si vous la visualiser suite à une commande clone réalisée par Travis CI, vous verrez quelque chose comme ci-dessous :  &lt;br /&gt;&lt;pre&gt;git config remote.origin.fetch&lt;br /&gt;+refs/heads/[yourbranch]:refs/remotes/origin/[yourbranch]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Pour modifier cette propriété en une configuration standard qui permet de référencer n&#39;importe quelle branche, lancez la commande ci-dessous : &lt;br /&gt;&lt;pre&gt;git config remote.origin.fetch &quot;+refs/heads/*:refs/remotes/origin/*&quot;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Une fois lancée, vous serez en mesure de faire un fetch de la branche master et, par là, retrouver les fichiers qui ont été modifiés :  &lt;br /&gt;&lt;pre&gt;git fetch origin master&lt;br /&gt;git diff --name-only &quot;$(git merge-base origin/master HEAD)&quot; HEAD&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Et voilà, vous pourrez facilement écrire un script qui fonctionne avec Travis-CI pour détecter quels fichiers ont fait l&#39;objet de modifications entre une branche de travail et la branche de référence.  &lt;br /&gt;&lt;h2&gt;Le chemin continue...&lt;/h2&gt;Le plus grand challenge que nous ayons rencontré dans cette transformation associée à la mise en place d&#39;un référentiel de code monolithique sont les changements associées au CI/CD. Cela nous a pris du temps pour tout mettre en place et cet article ne couvre que les aspects associés à la première étape à savoir détecter quels fichiers ont été touchés par un changement. J&#39;explorerai d&#39;autres difficultés et solutions prochainement. Jusque là, l&#39;impact sur les personnes impliquées est très positif ou, il se peut aussi que j&#39;ai trop souffert d&#39;un ensemble très important de référentiels distribués et que ma réalité est désormais complètement biaisée. Quoiqu&#39;il en soit, je pense que les bénéfices de notre approche dépasseront rapidement les difficultés que nous avons rencontrées lors de notre mise en oeuvre. J&#39;espère que cet article sera l&#39;occasion de soulever des questions. Si c&#39;est le cas pour vous, n&#39;hésitez pas à le commenter ci-dessous.</content><link rel='replies' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/3699553814005143680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.resetlogs.fr/2018/02/monorepo-cicd.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/3699553814005143680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/3699553814005143680'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/2018/02/monorepo-cicd.html' title='Reférentiel monolithique et CI/CD'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8409134974669171624.post-8284833399397577097</id><published>2018-01-21T17:00:00.000-08:00</published><updated>2018-01-26T20:13:35.498-08:00</updated><title type='text'>Scrum me tue...</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;a href=&quot;https://a16z.com/2016/08/20/why-software-is-eating-the-world/&quot; target=&quot;_blank&quot;&gt;Le logiciel dévore le monde&lt;/a&gt; et c&#39;est très fun. C&#39;est très fun de travailler sur des produits qui façonnent le futur ou, au moins, d&#39;espérer et de se battre pour ça. C&#39;est très fun de travailler avec des personnes intelligentes, enthousiastes, engagées. C&#39;est beaucoup de travail aussi. &lt;a href=&quot;https://youtu.be/9QMGAtxUlAc&quot; target=&quot;_blank&quot;&gt;Nous ne voulons pas nous compromettre&lt;/a&gt;. Nous vivons beaucoup d&#39;échecs. Nous devons respecter le bon timing : ni trop tôt, ni trop tard. Nous avons besoin de personnes douées, de personnes talentueuses. Nous avons besoin de diversité. Nous avons besoins de faire partie d&#39;équipes. Nous avons besoin de nous impliquer dans une équipe ; de rester positifs, d&#39;accepter les idées des autres, d&#39;être passionnés et tolérants. C&#39;est très fun et c&#39;est dur ! C&#39;est d&#39;autant plus dur que Scrum me tue... encore !&lt;br /&gt;&lt;br /&gt;Commençons par quelques vérités. Je me demande parfois si tout le monde l&#39;a bien noté&amp;nbsp;: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Scrum a été spécifié et est maintenu par Ken Schwaber et Jeff Sutherland qui sont 2 personnes distinguées.&lt;/li&gt;&lt;li&gt;Scrum est entièrement documenté dans &quot;&lt;a href=&quot;https://www.scrumguides.org/docs/scrumguide/v2017/2017-Scrum-Guide-US.pdf&quot; shape=&quot;rect&quot; target=&quot;_blank&quot;&gt;The Definitive Guide to Scrum: The Rules of the Game&lt;/a&gt;&quot; soumis à une licence Open Source dite CC BY-SA. Il n&#39;y a pas d&#39;autres documents de référence.&lt;/li&gt;&lt;li&gt;Scrum est une &quot;approche empirique de la gestion de projet&quot;. Elle s&#39;appuie sur des idées telles que la &quot;transparence des livrables&quot;. Elle s&#39;appuie également sur des valeurs comme &quot;l&#39;engagement, le courage, la concentration, l&#39;ouverture et le respect&quot;.&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Les livres et les formations Scrum adressent &quot;Comment implémenter Scrum&quot;. Ils ne sont pas censés contredire ni créer des variations de scrum.&lt;/li&gt;&lt;li&gt;Ken Schwaber et Jeff Sutherland ont tous les 2 participés à l&#39;écriture du &lt;a href=&quot;http://agilemanifesto.org/&quot; target=&quot;_blank&quot;&gt;Agile Manifesto&lt;/a&gt; Cependant, Scrum ne définit pas le &quot;Agile Manifesto&quot;.&lt;/li&gt;&lt;li&gt; D&#39;après &quot;The Definitive Guide to Scrum&quot;, &quot;Si implémenter seulement certaines parties de Scrum est tout à fait possible, le résultat n&#39;est pas Scrum&quot;. Je voudrais suggérer qu&#39;on n&#39;expérimente pas ça sur nos projets. Même s&#39;il ne s&#39;agit pas du sujet de ce blog, sand doute &quot;&lt;code&gt;Fake-Scrum&lt;/code&gt;&quot; ou &quot;&lt;code&gt;S***-Scrum&lt;/code&gt;&quot; sont pire que Scrum&lt;/li&gt;&lt;li&gt;Le fait qu&#39;une méthode s&#39;appuie sur de bonnes idées ou de bonnes intentions n&#39;enlève absolument pas les problèmes qui peuvent être rencontrés. Ce n&#39;est pas parce que Scrum veut adresser les points négatifs des approches projets en cascade ou en V que c&#39;est forcément bien comme le montre le &lt;a href=&quot;https://en.wikipedia.org/wiki/Cobra_effect&quot; target=&quot;_blank&quot;&gt;cobra effect&lt;/a&gt;...&lt;/li&gt;&lt;/ul&gt;Dans ce qui suit, je garde les points volontairement courts et je sépare les &quot;problèmes issus de Scrum&quot; des &quot;problèmes liés à Scrum&quot;. Si vous n&#39;êtes pas convaincus, vérifiez par vous-même en lisant &quot;&lt;a href=&quot;https://www.scrumguides.org/docs/scrumguide/v2017/2017-Scrum-Guide-US.pdf&quot; target=&quot;_blank&quot;&gt;The Definitive Guide to Scrum: The Rules of the Game&lt;/a&gt;&quot;. Il est simple et bien écrit. Je référence également certaines présentations très intéressantes de personnes qui proposent des modèles alternatifs. Ces vidéos incluent des présentations de Robert C. Martin, de Dave Thomas et de Brian Marick qui ont également participé à l&#39;écriture de &quot;Agile Manifesto&quot;.&lt;br /&gt;&lt;h2&gt;Les problèmes dus à Scrum&lt;/h2&gt;Parmi les problèmes rencontrés chez des clients qui s&#39;appuient sur Scrum, les plus fréquents sont&amp;nbsp;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Des sprints qui échouent et qui frustrent toute l&#39;équipe. Les personnes doivent écrire le logiciel, pas &quot;réussir un sprint&quot; . Vous serez tenté de pointer le fait que les règles sont mal appliquées. En général, les 2 raisons principales de ces échecs sont la nature même des sprints limités dans le temps et s&#39;appuyant sur un backlog figé en début de sprint. Les problèmes de personne viennent ensuite&amp;nbsp;: &lt;ul&gt;&lt;li&gt;Il n&#39;est pas possible de prédire ce qu&#39;il faut faire sur un logiciel, surtout sur une période courte de 2 à 4 semaines. Si vous avez 5 développeurs et qu&#39;un bug compliqué et urgent fait surface, vous aurez peut-être beaucoup de mal à l&#39;ignorer ! Vous serez ainsi facilement amputé de 20% de votre capacité sur un sprint et vos objectifs ne seront ainsi pas tenus.&lt;/li&gt;&lt;li&gt;Les problèmes de développement sont toujours mal estimés. En dépit de l&#39;&quot;objectif unique de votre sprint&quot; vous vous retrouverez toujours avec des tâches non réalisées. Cela signifie encore que vous ne délivrez pas le contenu de votre Sprint ou, pire, comme je l&#39;ai vu qu&#39;une personne de talent délivre en 2 jours le contenu complet d&#39;une équipe de 5.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;La contrainte temporelle et les descriptions détaillées des tâches rendues nécessaire par la volonté d&#39;estimer ont 2 inconvénients supplémentaires&amp;nbsp;:&lt;ul&gt;&lt;li&gt;Les gens se sentent rapidement &quot;micro-managé&quot; par le système de suivi et par le groupe. Il en résulte, et malgré l&#39;intention, que les personnes qui travaillent dans un environnement Scrum se sentent souvent dans un environnement de &quot;&lt;a href=&quot;https://www.abuseandrelationships.org/Content/Behaviors/subtle_control.html&quot; target=&quot;_blank&quot;&gt;Subtle Control&lt;/a&gt;&quot; et n&#39;arrivent pas à prendre le recul nécessaire pour régler leurs problèmes&lt;/li&gt;&lt;li&gt;Les fonctionnalités sont &quot;Done&quot; ; elles ne sont pas &quot;Well Done&quot;. Cela génère beaucoup de déchets dans le logiciel. Cela fait aussi beaucoup de mal aux équipes qui se retrouvent travailler comme dans une machine à essorer sans aucune efficacité. Si vous devez vous rendre compte rapidement des échecs de votre logiciel, il est très important au contraire que vos équipes réussissent dans leur travail. De manière simple, Scrum, trop souvent, fait échouer les gens qui sont alors démotivées ou perdent l&#39;envie de réussir.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Enfin Scrum est trop lourd pour de nombreuses équipes qui perdent de fait leur &quot;bon sens&quot;. Cela est du :&lt;ul&gt;&lt;li&gt;Au nombre important des intervenants : product owner, développeurs, scrum master...&lt;/li&gt;&lt;li&gt;Au nombre important des cérémonies: daily, planning, review et retro. Leur fréquence élevée et le nombre de personnes impliquées détruit les dynamiques&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Les problèmes liés à Scrum&lt;/h2&gt;La section précédente pointe les problèmes issue de Scrum, per se . Sa nature implique généralement d&#39;autres problèmes. Si vous avez pratiqué une équipe qui utilise Scrum, vous rencontrerez très certainement certains des problèmes suivants&amp;nbsp;: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Le manque de qualités intrinsèques de votre produit comme la performance, les coûts opérationnels, les capacités de management ou simplement la facilité de développer la solution&lt;/li&gt;&lt;li&gt;Un focus sur les fonctionnalités au lieu de la valeur ou de l&#39;expérience utilisateur&lt;/li&gt;&lt;li&gt;Un Certified Scrum Master qui contrôle l&#39;équipe au lieu de la rendre plus efficace &lt;/li&gt;&lt;li&gt;UN focus sur les fonctionnalités plutôt que sur la valeur ou sur l&#39;expérience utilisateur&lt;/li&gt;&lt;li&gt;Des équipes mal organisées du fait des contraintes comme de mauvais outils, des personnes partagées entre plusieurs équipes, le manque de compétences ou le travail à distance&lt;/li&gt;&lt;li&gt;...&lt;/li&gt;&lt;/ul&gt;Et pour ceux qui croient que c&#39;est le sort de tous les projets informatiques, peut-être faut-il préciser que la plupart des personnes de ce milieu sont brillants, doués avec un ordinateur, et le plus souvent ont envie de réussir ce qu&#39;ils font. Alors si vous &quot;faites toujours du Scrum&quot; et que vous n&#39;êtes pas convaincu que vous devez arrêter, regardez les videos qui suivent...&lt;br /&gt;&lt;h2&gt;Présentations qui vous inspireront&lt;/h2&gt;Vous trouverez ci-dessous un certains nombre de video qui déconstruisent l&#39;&quot;Agile&quot; et &quot;proposent des modèles alternatifs&quot;, certaines vous inspireront certainement&amp;nbsp;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://vimeo.com/110554082&quot; target=&quot;_blank&quot;&gt;Agile is Dead&lt;/a&gt;, Dave Thomas&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://youtu.be/Zop0wTPrbk8&quot; target=&quot;_blank&quot;&gt;Managing Manager‐less Processes&lt;/a&gt;, Fred George&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://youtu.be/9QMGAtxUlAc&quot; target=&quot;_blank&quot;&gt;Principles of Technology Leadership&lt;/a&gt;, Bryan Cantrill&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://youtu.be/bGkVM1B5NuI&quot; target=&quot;_blank&quot;&gt;Leadership Without Management: Scaling Organizations by Scaling Engineers&lt;/a&gt;, Bryan Cantrill&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://youtu.be/T5yv-WcQ4wY&quot; target=&quot;_blank&quot;&gt;Artisanal Retro-Futurism Team-Scale Anarcho-Syndicalism&lt;/a&gt;, Brian Marick (see &lt;a href=&quot;http://arxta.net/&quot; target=&quot;_blank&quot;&gt;arxta&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://vimeo.com/110554082&quot; target=&quot;_blank&quot;&gt;One Hacker Way&lt;/a&gt;, Erik Meijer&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://youtu.be/tIxHmsWCd7g&quot; target=&quot;_blank&quot;&gt;Implementing Programmer Anarchy&lt;/a&gt;, Fred George&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://youtu.be/ecIWPzGEbFc&quot; target=&quot;_blank&quot;&gt;The Future of Programming&lt;/a&gt;, Robert Martin&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://youtu.be/Zop0wTPrbk8&quot; target=&quot;_blank&quot;&gt;Frankenbuilds; if Agile is so good, why are our Products so bad?&lt;/a&gt; Gabrielle Benefield&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/8284833399397577097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.resetlogs.fr/2018/01/donot-scrum.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/8284833399397577097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/8284833399397577097'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/2018/01/donot-scrum.html' title='Scrum me tue...'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8409134974669171624.post-3520331730051769600</id><published>2016-12-29T00:48:00.001-08:00</published><updated>2017-01-13T20:37:40.860-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Docker"/><title type='text'>Utiliser Docker avec votre propre autorité de certification</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://3.bp.blogspot.com/-oGYIeLT1ErU/WGRCadsOq7I/AAAAAAAAOq0/7ui9Oi9M-dUr64T5zT4534AmzQNDViHEQCLcB/s1600/openssl-logo.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;86&quot; src=&quot;https://3.bp.blogspot.com/-oGYIeLT1ErU/WGRCadsOq7I/AAAAAAAAOq0/7ui9Oi9M-dUr64T5zT4534AmzQNDViHEQCLcB/s320/openssl-logo.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Vous devriez trouver plusieurs autorités de certifications gratuites. Les plus populaires sont probablement&amp;nbsp;&lt;a href=&quot;https://letsencrypt.org/&quot;&gt;Let&#39;s Encrypt&lt;/a&gt;&amp;nbsp;et&amp;nbsp;&lt;a href=&quot;http://www.cacert.org/&quot;&gt;CACert&lt;/a&gt;. Pourtant, pour plusieurs raisons (restrictions, utilisation de localhost, capacité d&#39;automatisation...), vous pouvez être amené à gérer votre propre autorité de certification. Et si c&#39;est le cas, vous considérerez probablement d&#39;utiliser OpenSSL. Ce blog présente quelques commandes utiles. Elles ne visent en aucune façon à remplacer&amp;nbsp;&lt;a href=&quot;https://www.openssl.org/docs/manpages.html&quot;&gt;la documentation officielle&lt;/a&gt;&amp;nbsp;mais peuvent aider à accélérer la mise en place initiale ou différents scénarios.&lt;br /&gt;&lt;br /&gt;Si vous disposez de votre propre CA, vous pourrez l&#39;utiliser beaucoup avec Docker... ou pas. Autrement dit, ça peut aider. Par exemple, vous pourrez l&#39;utiliser pour sécuriser une solution de Vault qui stockera et partagera des secrets. Vous pourrez l&#39;utiliser également pour sécuriser des accès HTTP comme celui d&#39;accès à une registry privée. Ce blog explore ce dernier scénario et montre comment profiter de votre autorité de certification nouvellement créée.&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;Note importante:&lt;/i&gt;&lt;br /&gt;&lt;i&gt;L&#39;exemple suivant est basé sur Fedora/Enterprise Linux ; Si vous utilisez Debian, une autre distribution Linux, Windows ou OSX, vous devrez adapter la procédure pour le faire fonctionner.&lt;/i&gt;&lt;/blockquote&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;blockquote&gt;&lt;i&gt;Seconde note importante:&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Si vous gérez des clés et des certificats, il est important de ne pas partager les clés et mots de passe. Ce qui suit est uniquement un exemple et vous voudrez remplacer les mots de passe, ici xxxxxx, avec des mots de passe plus fiables.&lt;/i&gt;&lt;/blockquote&gt;&lt;h2&gt;Créer une autorité de certification&lt;/h2&gt;&lt;div&gt;OpenSSL fournit un script perl nommé CA.pl qui facilite la gestion d&#39;une autorité de certification. Evidemment, vous pouvez également gérer l&#39;ensemble des tâches avec les commandes &quot;openssl&quot; mais c&#39;est beaucoup plus simple avec ce script. Pour installer ce script, lancez la commande ci-dessous (Utilisez YUM au lieu de DNF si vous utilisez une distribution Enterprise Linux):&lt;/div&gt;&lt;pre&gt;sudo dnf -y install openssl-perl&lt;/pre&gt;Une fois installée, créez simplement une autorité de certification à l&#39;aide de : &lt;br /&gt;&lt;pre&gt;sudo /etc/pki/tls/misc/CA.pl -newca&lt;br /&gt;&lt;i&gt;&lt;span style=&quot;color: blue;&quot;&gt;CA certificate filename (or enter to create)&lt;br /&gt;&lt;br /&gt;Making CA certificate ...&lt;br /&gt;Generating a 2048 bit RSA private key&lt;br /&gt;................+++&lt;br /&gt;....+++&lt;br /&gt;writing new private key to &#39;/etc/pki/CA/private/cakey.pem&#39;&lt;br /&gt;Enter PEM pass phrase:&lt;br /&gt;Verifying - Enter PEM pass phrase:&lt;br /&gt;-----&lt;br /&gt;You are about to be asked to enter information that will be incorporated&lt;br /&gt;into your certificate request.&lt;br /&gt;What you are about to enter is what is called a Distinguished Name or a DN.&lt;br /&gt;There are quite a few fields but you can leave some blank&lt;br /&gt;For some fields there will be a default value,&lt;br /&gt;If you enter &#39;.&#39;, the field will be left blank.&lt;br /&gt;-----&lt;br /&gt;Country Name (2 letter code) [XX]:FR&lt;br /&gt;State or Province Name (full name) []:Ile-de-France&lt;br /&gt;Locality Name (eg, city) [Default City]:Paris&lt;br /&gt;Organization Name (eg, company) [Default Company Ltd]:Resetlogs&lt;br /&gt;Organizational Unit Name (eg, section) []:Security&lt;br /&gt;Common Name (eg, your name or your server&#39;s hostname) []:www.resetlogs.com&lt;br /&gt;Email Address []:admin@resetlogs.com&lt;br /&gt;&lt;br /&gt;Please enter the following &#39;extra&#39; attributes&lt;br /&gt;to be sent with your certificate request&lt;br /&gt;A challenge password []:xxxx&lt;br /&gt;An optional company name []:Resetlogs&lt;br /&gt;Using configuration from /etc/pki/tls/openssl.cnf&lt;br /&gt;Enter pass phrase for /etc/pki/CA/private/cakey.pem:&lt;br /&gt;Check that the request matches the signature&lt;br /&gt;Signature ok&lt;br /&gt;Certificate Details:&lt;br /&gt;        Serial Number:&lt;br /&gt;            9b:d3:58:97:a6:0b:f5:88&lt;br /&gt;        Validity&lt;br /&gt;            Not Before: Dec 27 21:28:03 2016 GMT&lt;br /&gt;            Not After : Dec 27 21:28:03 2019 GMT&lt;br /&gt;        Subject:&lt;br /&gt;            countryName               = FR&lt;br /&gt;            stateOrProvinceName       = Ile-de-France&lt;br /&gt;            organizationName          = Resetlogs&lt;br /&gt;            organizationalUnitName    = Security&lt;br /&gt;            commonName                = www.resetlogs.com&lt;br /&gt;            emailAddress              = admin@resetlogs.com&lt;br /&gt;        X509v3 extensions:&lt;br /&gt;            X509v3 Subject Key Identifier:&lt;br /&gt;                BB:3E:C6:50:F9:CC:73:F9:E0:9C:65:96:FF:39:D2:D5:DA:BF:29:82&lt;br /&gt;            X509v3 Authority Key Identifier:&lt;br /&gt;                keyid:BB:3E:C6:50:F9:CC:73:F9:E0:9C:65:96:FF:39:D2:D5:DA:BF:29:82&lt;br /&gt;&lt;br /&gt;            X509v3 Basic Constraints:&lt;br /&gt;                CA:TRUE&lt;br /&gt;Certificate is to be certified until Dec 27 21:28:03 2019 GMT (1095 days)&lt;br /&gt;&lt;br /&gt;Write out database with 1 new entries&lt;br /&gt;Data Base Updated&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Parmi de nombreux aspect, le script réalise 2 choses importantes :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Il crée la clé racine de la CA et la stocke dans&amp;nbsp;&lt;code&gt;/etc/pki/CA/private&lt;/code&gt;. Vous pouvez (1) vérifier qu&#39;elle est utilisable à l&#39;aide de la commande ci-dessous, (2) la sauvegarder car elle est essentielle à l&#39;émission de nouveaux certificats et (3) la sécuriser puisque n&#39;importe qui qui a accès à la clé peut signer une demande de certificat pour vous :&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;sudo openssl pkey -in /etc/pki/CA/private/cakey.pem&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;It crée un certificat racine &quot;self-signed&quot; dans&amp;nbsp;&lt;code&gt;/etc/pki/CA&lt;/code&gt;&amp;nbsp;que vous pourrez distribuer à vos clients lesquels pourront utiliser ce certificat afin de valider l&#39;authenticité des certificats émis par l&#39;autorité nouvellement créée. Vous pouvez vérifier le certificat avec la commande ci-après :&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;openssl x509 -noout -text -in /etc/pki/CA/cacert.pem&lt;/pre&gt;&lt;h2&gt;Effectuer une demande de certificat&lt;/h2&gt;&lt;div&gt;Une demande de certificat est généralement effectuée sur le serveur sur lequel il sera utilisé ou au moins, proche de celui-ci. Cela permet d&#39;éviter que la clé privée du certificat soit accédée par l&#39;autorité de certification. Pour réaliser une demande, créez le fichier de configuration comme celui ci-dessous en l&#39;adaptant à vos besoins :&lt;/div&gt;&lt;pre&gt;cat req.conf&lt;br /&gt;[req]&lt;br /&gt;default_bits           = 2048&lt;br /&gt;distinguished_name     = req_distinguished_name&lt;br /&gt;prompt                 = no&lt;br /&gt;output_password        = xxxxxx&lt;br /&gt;req_extensions         = req_ext&lt;br /&gt;&lt;br /&gt;[req_distinguished_name]&lt;br /&gt;C                      = FR&lt;br /&gt;ST                     = Ile-de-France&lt;br /&gt;L                      = Paris&lt;br /&gt;O                      = Resetlogs&lt;br /&gt;OU                     = Security Team&lt;br /&gt;CN                     = blue.resetlogs.com&lt;br /&gt;emailAddress           = admin@resetlogs.com&lt;br /&gt;&lt;br /&gt;[req_ext]&lt;br /&gt;subjectAltName         = DNS:localhost,IP:127.0.0.1&lt;/pre&gt;One fois que vous êtes prêt pour faire votre demande, lancez la commande opnessl comme ci-dessous : &lt;br /&gt;&lt;pre&gt;openssl req -newkey rsa:2048 -days 365 -config req.conf -out newreq.pem -keyout newkey.pem&lt;/pre&gt;Vous devriez être en mesure d&#39;afficher le contenu de votre demande à l&#39;aide de la commande ci-dessous &amp;nbsp;: &lt;br /&gt;&lt;pre&gt;openssl req -in newreq.pem -noout -text&lt;br /&gt;&lt;/pre&gt;Vous pourrez également avoir besoin d&#39;une version non-protégée de votre clé privée. Si c&#39;est le cas, vous pouvez avoir utilisé l&#39;option -nodes lorsque vous faite la demande. Vous pouvez également générer cette version non-protégée de la clé à l&#39;aide de la commande ci-dessous :&lt;br /&gt;&lt;pre&gt;openssl rsa -in newkey.pem -out newkey-unprotected.pem&lt;/pre&gt;&lt;h2&gt;Signer la demande&lt;/h2&gt;Dans la demande précédente, subjectAltName est utilisé pour désigner le nom du serveur ou du loadbalancer pour lequel il est utilisé. C&#39;est &quot;désormais&quot; la manière standard de réaliser cette tâche. Et donc en plus de signer la demande de certificat, vous devez également référencer le même subjectAltName.&lt;br /&gt;&lt;br /&gt;Par défault, CA.pl ne gère pas cette extension. Vous pouvez évidemment utiliser la commande &quot;openssl ca&quot; pour gérer cette limite. Néanmoins, si vous préférez continuer à utiliser CA.pl, vous pouvez également &lt;a href=&quot;http://blog.loftninjas.org/2008/11/11/configuring-ssl-requests-with-subjectaltname-with-openssl/&quot;&gt;modifier /etc/pki/tls/openssl.cnf comme expliqué dans ce blog&lt;/a&gt;&amp;nbsp;; J&#39;ai légèrement modifié cette procédure pour la faire fonctionner avec la version OpenSSL de mon Fedora :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;En haut du fichier, juste après la ligne &quot;HOME =&quot; ajoutez :&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;SAN = &quot;email:admin@resetlogs.com&quot;&lt;/pre&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;En bas de la section [ usr_cert ] ajoutez :&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;pre&gt;subjectAltName = $ENV::SAN&lt;/pre&gt;Une fois la configuration définie, la valeur de subjectAltName utilisée est héritée de la variable d&#39;environnement SAN. Pour signer la requête, vous devez pousser le fichier newreq.pem sur le serveur de l&#39;autorité de certification et générer le certificat, en tant que root, à l&#39;aide de la commande ci-dessous : &lt;br /&gt;&lt;pre&gt;SAN=&quot;DNS:localhost,IP:127.0.0.1&quot; /etc/pki/tls/misc/CA.pl -sign&lt;br /&gt;&lt;i&gt;&lt;span style=&quot;color: blue;&quot;&gt;Using configuration from /etc/pki/tls/openssl.cnf&lt;br /&gt;Enter pass phrase for /etc/pki/CA/private/cakey.pem:&lt;br /&gt;Check that the request matches the signature&lt;br /&gt;Signature ok&lt;br /&gt;Certificate Details:&lt;br /&gt;        Serial Number:&lt;br /&gt;            88:aa:5a:00:30:56:3e:0d&lt;br /&gt;        Validity&lt;br /&gt;            Not Before: Dec 28 21:57:44 2016 GMT&lt;br /&gt;            Not After : Dec 28 21:57:44 2017 GMT&lt;br /&gt;        Subject:&lt;br /&gt;            countryName               = FR&lt;br /&gt;            stateOrProvinceName       = Ile-de-France&lt;br /&gt;            localityName              = Paris&lt;br /&gt;            organizationName          = Resetlogs&lt;br /&gt;            organizationalUnitName    = Security Team&lt;br /&gt;            commonName                = blue.resetlogs.com&lt;br /&gt;            emailAddress              = admin@resetlogs.com&lt;br /&gt;        X509v3 extensions:&lt;br /&gt;            X509v3 Basic Constraints: &lt;br /&gt;                CA:FALSE&lt;br /&gt;            Netscape Comment: &lt;br /&gt;                OpenSSL Generated Certificate&lt;br /&gt;            X509v3 Subject Key Identifier: &lt;br /&gt;                75:6C:E7:65:30:0B:EB:27:19:09:35:71:05:A6:60:41:CF:A9:88:74&lt;br /&gt;            X509v3 Authority Key Identifier: &lt;br /&gt;                keyid:B3:81:18:0B:81:B8:A1:81:7F:37:F7:EF:90:AC:10:40:9C:AB:4C:C6&lt;br /&gt;&lt;br /&gt;            X509v3 Subject Alternative Name: &lt;br /&gt;                DNS:localhost, IP Address:127.0.0.1&lt;br /&gt;Certificate is to be certified until Dec 28 21:57:44 2017 GMT (365 days)&lt;br /&gt;Sign the certificate? [y/n]:y&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1 out of 1 certificate requests certified, commit? [y/n]y&lt;br /&gt;Write out database with 1 new entries&lt;br /&gt;Data Base Updated&lt;br /&gt;Signed certificate is in newcert.pem&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/pre&gt;Vous pouvez vérifier le contenu du certificat et la chaine de signature comme ceci : &lt;br /&gt;&lt;pre&gt;openssl x509 -noout -text -in newcert.pem&lt;/pre&gt;&lt;h2&gt;Une registry HTTPS pour Docker&lt;/h2&gt;Supposons que vous ayez mis le fichier incluant le certificat (newcert.pem) ainsi que la version non protégée de la clé (newkey-unprotected.pem) dans un répertoire `pwd`/certs. Pour démarrer une nouvelle registry accessible via HTTPS, vous pouvez simplement exécuter la commande ci-dessous :&lt;br /&gt;&lt;pre&gt;docker run -d -p 5000:5000 --restart=always --name registry \&lt;br /&gt;  --security-opt label=disable -v `pwd`/certs:/certs \&lt;br /&gt;  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/newcert.pem \&lt;br /&gt;  -e REGISTRY_HTTP_TLS_KEY=/certs/newkey-unprotected.pem \&lt;br /&gt;  registry:2&lt;/pre&gt;&lt;br /&gt;Enregistrez le certificat de l&#39;autorité de certification dans les &quot;Trusted Authority&quot; de votre navigateur :&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://4.bp.blogspot.com/-4gPeDIT-PUQ/WGRAj1E9x1I/AAAAAAAAOqg/yuw5VLZaJOMuPT6sRcDWg6UIr_sroYmEACLcB/s1600/Screenshot%2Bfrom%2B2016-12-28%2B23-32-37.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;464&quot; src=&quot;https://4.bp.blogspot.com/-4gPeDIT-PUQ/WGRAj1E9x1I/AAAAAAAAOqg/yuw5VLZaJOMuPT6sRcDWg6UIr_sroYmEACLcB/s640/Screenshot%2Bfrom%2B2016-12-28%2B23-32-37.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Vous serez alors autorisé à accéder l&#39;API REST de la registry à l&#39;aide de HTTPS sans alerte si le nom du site correspond à subjectAltName. Ainsi, par exemple dans le cas de localhost ci-dessous, vous ne recenvez pas d&#39;erreur même si le commonName du certificat est blue.resetlogs.com :&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-A-Srcnc8drg/WGRA-x8H4NI/AAAAAAAAOqk/tynJzGb0hoA4RVdZa0RFGKKOBJJlJosrgCLcB/s1600/Screenshot%2Bfrom%2B2016-12-28%2B23-38-52.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;428&quot; src=&quot;https://1.bp.blogspot.com/-A-Srcnc8drg/WGRA-x8H4NI/AAAAAAAAOqk/tynJzGb0hoA4RVdZa0RFGKKOBJJlJosrgCLcB/s640/Screenshot%2Bfrom%2B2016-12-28%2B23-38-52.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;Etapes suivantes...&lt;/h2&gt;Il y a nombreux bénéfices à utiliser votre propre CA avec Docker, même si les préambules ne semblent pas toujours triviaux. Comme vous avez pu le découvrir ci-dessus, ce n&#39;est pas vraiment compliqué non plus. Par ailleurs, il existe d&#39;autres solutions pour gérer une CA, y compris&amp;nbsp;&lt;a href=&quot;https://openvpn.net/easyrsa.html&quot;&gt;Easy-RSA&lt;/a&gt; ou simplement utiliser directement la commande&amp;nbsp;&lt;a href=&quot;https://www.openssl.org/docs/manmaster/man1/ca.html&quot;&gt;openssl ca&lt;/a&gt; qui permet d&#39;utiliser des options complémentaires comme &quot;-passin&quot;. Pour l&#39;instant vous avez configuré et sécurisé un environnement simple. Nous pouvons deviner que sera bientôt très utile...&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/3520331730051769600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.resetlogs.fr/2016/12/docker-certificate-authority.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/3520331730051769600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/3520331730051769600'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/2016/12/docker-certificate-authority.html' title='Utiliser Docker avec votre propre autorité de certification'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://3.bp.blogspot.com/-oGYIeLT1ErU/WGRCadsOq7I/AAAAAAAAOq0/7ui9Oi9M-dUr64T5zT4534AmzQNDViHEQCLcB/s72-c/openssl-logo.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8409134974669171624.post-1580270966817208458</id><published>2016-12-22T14:35:00.001-08:00</published><updated>2016-12-22T14:35:51.895-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="OraclePublicCloud"/><category scheme="http://www.blogger.com/atom/ns#" term="Terraform"/><title type='text'>Provisionner du Compute dans le Cloud Public Oracle avec Terraform</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://3.bp.blogspot.com/-twltx24X8q0/V92yUzWhvdI/AAAAAAAAOjI/dfdfcKU553gMwAZRp9fDcDwTLfl2a0I-gCPcB/s1600/shutterstock_83855317.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; src=&quot;https://3.bp.blogspot.com/-twltx24X8q0/V92yUzWhvdI/AAAAAAAAOjI/dfdfcKU553gMwAZRp9fDcDwTLfl2a0I-gCPcB/s200/shutterstock_83855317.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Terraform est probablement l&#39;orchestrateur Cloud le plus populaire aujourd&#39;hui. Ou au moins, c&#39;est celui que je préfère ! Il est facile à utiliser, rapide, il offre la possibilité de simuler l&#39;ajout et la suppression de ressources et il peut facilement être étenduI. C&#39;est un outil parfait pour créer une infrastructure chez la plupart des fournisseurs de Cloud comme &lt;a href=&quot;http://www.resetlogs.fr/2016/09/terraform-good-practices.html&quot;&gt;je l&#39;ai déjà présenté&lt;/a&gt;.I&lt;br /&gt;&lt;br /&gt;Depuis quelques jours maintenant, j&#39;ai recommencé à nouveau à utiliser l&#39;offre Cloud d&#39;Oracle. J&#39;ai ainsi pu prendre un vrai plaisir avec l&#39;offre de Containers. Au delà de la base de données, Oracle a fait des progrès incroyables avec son offre IaaS. Elle commence à être vraiment intéressante. Aussi lorsque j&#39;ai découvert qu&#39;il était possible d&#39;utiliser Terraform avec le Service de Compute, je n&#39;ai pas pu resister... Ca m&#39;a pris moins de 15 minutes pour installer et utiliser le &lt;a href=&quot;https://github.com/oracle/terraform-provider-compute&quot;&gt;Provider Terraform pour Oracle Compute Cloud&lt;/a&gt;. Et ça fonctionne parfaitement avec la version 0.8... Vous trouverez quelques notes à propos de cette mise en oeuvre ci-dessous :&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;blockquote&gt;&lt;i&gt;Note:&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Mon laptop fonctionne sous Linux. En fait, j&#39;utilise Fedora ! Vous devrez sans doute adapter la procédure qui suit si vous utilisez Windows ou OSX.&lt;/i&gt;&lt;/blockquote&gt;&lt;h2&gt;Construire le Provider Terraform&lt;/h2&gt;Pour construire le provider, vous devez installer Go. Je préfère utiliser la dernière version aussi je la télécharge &lt;a href=&quot;https://golang.org/dl/&quot;&gt;de golang.org&lt;/a&gt;&amp;nbsp;, je la décompresse dans &lt;code&gt;/opt&lt;/code&gt; et je positionne la variable&amp;nbsp;&lt;code&gt;GOROOT&lt;/code&gt; comme ci-dessous:&lt;br /&gt;&lt;pre&gt;cd /opt&lt;br /&gt;sudo tar -zxvf ~/distribs/go*.linux-amd64.tar.gz&lt;br /&gt;sudo chown -R $(id -un):$(id -gn) /opt/go&lt;br /&gt;export GOROOT=/opt/go&lt;br /&gt;export PATH=/opt/go/bin:$PATH&lt;br /&gt;go version&lt;br /&gt;&lt;/pre&gt;Une fois que Go est installé, vous pouvez simplement télécharger et construire le provider comme ci-dessous : &lt;br /&gt;&lt;pre&gt;cd ~&lt;br /&gt;export GOPATH=/home/$(id -un)/terraform-provider&lt;br /&gt;mkdir $GOPATH&lt;br /&gt;go get -d github.com/oracle/terraform-provider-compute/provider&lt;br /&gt;go build -o terraform-provider-opc github.com/oracle/terraform-provider-compute/provider&lt;/pre&gt;Le provider s&#39;appelle &lt;code&gt;terraform-provider-opc&lt;/code&gt;&amp;nbsp;et vous voilà prêt à continuer. Pour plus de détails à propos de comment le construire, reportez-vous à la page du&amp;nbsp;&lt;a href=&quot;https://github.com/oracle/terraform-provider-compute&quot;&gt;projet&lt;/a&gt;. &lt;br /&gt;&lt;h2&gt;Utiliser Terraform avec Oracle Compute Cloud&lt;/h2&gt;Téléchargez et&amp;nbsp;&lt;a href=&quot;https://www.terraform.io/downloads.html&quot;&gt;Installez Terraform pour votre système&lt;/a&gt;. Une fois que c&#39;est fait, vous voudrez déclarer le provider dans un fichier de ressources comme ci-après : &lt;br /&gt;&lt;pre&gt;cat &amp;gt;~/.terraformrc &amp;lt;&amp;lt;EOF&lt;br /&gt;providers {&lt;br /&gt;    opc = &quot;/home/gregory/terraform-provider-opc&quot;&lt;br /&gt;}&lt;br /&gt;EOF&lt;/pre&gt;Pour utiliser le provider, vous devez positioner les variables&amp;nbsp;&lt;code&gt;OPC_ENDPOINT&lt;/code&gt;, &lt;code&gt;OPC_USERNAME&lt;/code&gt;, &lt;code&gt;OPC_PASSWORD&lt;/code&gt; et&amp;nbsp;&lt;code&gt;OPC_IDENTITY_DOMAIN&lt;/code&gt;. Le &quot;endpoint&quot; peut être trouvé sur la page Overview du service :&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-VWrgJlgTDIE/WFxOmvBiryI/AAAAAAAAOpE/hVATqvJp6_oupUXK3-Y0HPkyAGDWL7IXACLcB/s1600/overview.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;224&quot; src=&quot;https://1.bp.blogspot.com/-VWrgJlgTDIE/WFxOmvBiryI/AAAAAAAAOpE/hVATqvJp6_oupUXK3-Y0HPkyAGDWL7IXACLcB/s640/overview.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;L&#39;identifiant de l&#39;Identity Domain se trouve sur la page &quot;Identity Domain Administration&quot; :&amp;nbsp;  &lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://4.bp.blogspot.com/-OMItNewxQLw/WFxOscH5ELI/AAAAAAAAOpI/H8VHcqrSoEICd2jTcBh6Lp8YKg9UF4ZEgCLcB/s1600/identitydomain.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;310&quot; src=&quot;https://4.bp.blogspot.com/-OMItNewxQLw/WFxOscH5ELI/AAAAAAAAOpI/H8VHcqrSoEICd2jTcBh6Lp8YKg9UF4ZEgCLcB/s640/identitydomain.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Le nom d&#39;utilisateur et mot de passe sont ceux associé à votre identity domain. On supposera que le role &quot;Compute Cloud Operations&quot; est positionné pour le-dit utilisateur. Ci-dessous un exemple de configuration : &lt;br /&gt;&lt;pre&gt;export OPC_ENDPOINT=https://api-z31.compute.em3.oraclecloud.com/&lt;br /&gt;export OPC_USERNAME=gregory&lt;br /&gt;export OPC_PASSWORD=password&lt;br /&gt;export OPC_IDENTITY_DOMAIN=a429864&lt;br /&gt;&lt;/pre&gt;&lt;h2&gt;Créer des ressources Terraform&lt;/h2&gt;Le projet contient un fichier&amp;nbsp;&lt;code&gt;test.tf&lt;/code&gt; dans&amp;nbsp;&lt;code&gt;src/github.com/oracle/terraform-provider-compute/test&lt;/code&gt;. Vous pouvez l&#39;utiliser pour créer une nouvelle configuration. Si vous voulez qu&#39;il soit utile, réalisez quelques modifications :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Créez une paire de clé SSH et téléchargez-là sur Oracle Public Cloud en tant que&amp;nbsp;&lt;code&gt;opc-key&lt;/code&gt;. On supposera que vous avez installé Oracle Compute CLI au préalable:&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;ssh-keygen -q -b 2048 -t rsa -N &quot;&quot; -f ~/.ssh/opc-key&lt;br /&gt;oracle-compute -a $OPC_ENDPOINT -u /Compute-$OPC_IDENTITY_DOMAIN/$OPC_USERNAME add sshkey \&lt;br /&gt;  /Compute-$OPC_IDENTITY_DOMAIN/$OPC_USERNAME/opc-key ~/.ssh/opc-key.pub&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Choisissez l&#39;imagelist que vous voulez utiliser comme, par exemple Oracle Linux 7.2:&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;oracle-compute -a $OPC_ENDPOINT -u /Compute-$OPC_IDENTITY_DOMAIN/$OPC_USERNAME list imagelist /oracle/public&lt;br /&gt;oracle-compute -a $OPC_ENDPOINT -u /Compute-$OPC_IDENTITY_DOMAIN/$OPC_USERNAME -f json list imagelist /oracle/public/OL_7.2_UEKR3_x86_64&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Créer un nouveau répertoire avec un fichier&amp;nbsp;&lt;code&gt;oraclelinux.tf&lt;/code&gt; dont le contenu ressemble à celui ci-dessous. Notez l&#39;ajout de&amp;nbsp;&lt;code&gt;sshKeys&lt;/code&gt; ainsi que du mot clé&amp;nbsp;&lt;code&gt;output&lt;/code&gt;:&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;resource &quot;opc_compute_instance&quot; &quot;oraclelinux72&quot; {&lt;br /&gt; name = &quot;ol72&quot;&lt;br /&gt; label = &quot;ol72&quot;&lt;br /&gt; shape = &quot;oc3&quot;&lt;br /&gt;        sshKeys = [&quot;opc-key&quot;]&lt;br /&gt; imageList = &quot;/oracle/public/OL_7.2_UEKR3_x86_64&quot;&lt;br /&gt; storage = [{&lt;br /&gt;  index = 1&lt;br /&gt;  volume = &quot;${opc_compute_storage_volume.system_volume.name}&quot;&lt;br /&gt; }]&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;resource &quot;opc_compute_storage_volume&quot; &quot;system_volume&quot; {&lt;br /&gt; size = &quot;10g&quot;&lt;br /&gt; description = &quot;System Volume&quot;&lt;br /&gt; name = &quot;sysvol1&quot;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;resource &quot;opc_compute_ip_reservation&quot; &quot;reservation1&quot; {&lt;br /&gt;        parentpool = &quot;/oracle/public/ippool&quot;&lt;br /&gt;        permanent = true&lt;br /&gt; tags = []&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;resource &quot;opc_compute_ip_association&quot; &quot;instance1_reservation1&quot; {&lt;br /&gt; vcable = &quot;${opc_compute_instance.oraclelinux72.vcable}&quot;&lt;br /&gt; parentpool = &quot;ipreservation:${opc_compute_ip_reservation.reservation1.name}&quot;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;resource &quot;opc_compute_security_list&quot; &quot;sec_list1&quot; {&lt;br /&gt; name = &quot;sec-list-1&quot;&lt;br /&gt;        policy = &quot;PERMIT&quot;&lt;br /&gt;        outbound_cidr_policy = &quot;PERMIT&quot;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;resource &quot;opc_compute_security_association&quot; &quot;test_instance__sec_list_1&quot; {&lt;br /&gt; vcable = &quot;${opc_compute_instance.oraclelinux72.vcable}&quot;&lt;br /&gt; seclist = &quot;${opc_compute_security_list.sec_list1.name}&quot;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;output &quot;public_ip&quot; {&lt;br /&gt;   value = &quot;${opc_compute_ip_reservation.reservation1.ip}&quot;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Vous voilà prêt à créer votre configuration&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;terraform apply&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Une fois créée, vous pourrez facilement vous connecter à la machine puis à vous connecter sous l&#39;utilisateur root:&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;ssh -i ~/.ssh/opc-key opc@$(terraform output | awk &#39;{print $3}&#39;)&lt;br /&gt;sudo su -&lt;br /&gt;exit&lt;br /&gt;exit&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Et enfin, vous pourrez aussi simplement supprimer votre configuration :&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;terraform destroy -force&lt;/pre&gt;&lt;h2&gt;Pour continuer...&lt;/h2&gt;Comme vous pouvez le constater, utiliser Terraform avec Oracle Compute Cloud est très simple. Si vous le combinez avec&amp;nbsp;&lt;code&gt;opc-init&lt;/code&gt;&amp;nbsp;et créez vos propres images, vous pourrez bientôt créer des environnements avancés aussi simplement. Voilà, j&#39;espère que vous vous amuserez vous aussi bientôt avec Oracle Cloud...</content><link rel='replies' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/1580270966817208458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.resetlogs.fr/2016/12/terraform-oracle-public-cloud.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/1580270966817208458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/1580270966817208458'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/2016/12/terraform-oracle-public-cloud.html' title='Provisionner du Compute dans le Cloud Public Oracle avec Terraform'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://3.bp.blogspot.com/-twltx24X8q0/V92yUzWhvdI/AAAAAAAAOjI/dfdfcKU553gMwAZRp9fDcDwTLfl2a0I-gCPcB/s72-c/shutterstock_83855317.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8409134974669171624.post-6963224807080168623</id><published>2016-12-17T23:10:00.001-08:00</published><updated>2016-12-17T23:10:32.020-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Consul"/><category scheme="http://www.blogger.com/atom/ns#" term="Docker"/><title type='text'>Découverte de services et Blue/Green Update avec Docker</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-dyYmV86NfGM/WFYpiNdxVJI/AAAAAAAAOoY/0xuMZhl-YBISkreBhS188MDVF4FV8Z8RgCLcB/s1600/docker.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;178&quot; src=&quot;https://1.bp.blogspot.com/-dyYmV86NfGM/WFYpiNdxVJI/AAAAAAAAOoY/0xuMZhl-YBISkreBhS188MDVF4FV8Z8RgCLcB/s200/docker.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Si vous êtes développeur, product owner ou responsable de projet, vous allez adorer Docker. Cela accélère et facilite tout:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;C&#39;est le support idéal pour les&amp;nbsp;&lt;a href=&quot;https://12factor.net/fr/&quot; target=&quot;_blank&quot;&gt;12-Factor Apps&lt;/a&gt;&amp;nbsp;et pour le projets basés sur les microservices. Vous voulez faire du développement Agile ? Vous voulez construire des applications d&#39;envergure ? Vous voulez séparer les différents aspects de vos applications ? Vous voulez être en mesure de vous développer en découpant l&#39;ensemble de vos tâches ?&lt;/li&gt;&lt;li&gt;Merci à&amp;nbsp;&lt;a href=&quot;https://hub.docker.com/&quot; target=&quot;_blank&quot;&gt;Docker Hub&lt;/a&gt;, &lt;a href=&quot;https://store.docker.com/&quot; target=&quot;_blank&quot;&gt;Docker Store&lt;/a&gt; et&amp;nbsp;&lt;a href=&quot;https://github.com/search?q=docker&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt;, Docker fournit un nombre incommensurable d&#39;images qui peuvent facilement être utilisées, combinées et améliorées pour répondre au mieux aux besoins des utilisateurs.&lt;/li&gt;&lt;li&gt;Docker est également relativement agnostique de l&#39;infrastructure ou du fournisseur Cloud que vous utilisez. Cela permet de facilement grandir et supporter la charge.&lt;/li&gt;&lt;/ul&gt;Si vous êtes un &quot;Ops&quot;, vous pouvez vous réjouir encore plus! Il est très probable que vous aurez bientôt plus de travail et de challenges que vous n&#39;en avez jamais eu. Vous allez bientôt &quot;Apprendre en marchant&quot;... &amp;nbsp;Non seulement vous devrez choisir et déployer parmi l&#39;une des infrastructures Docker de Kubernetes à Nomad en passant par Mesos/Marathon, Swarm ou AWS ECS mais vous aurez vite besoin de bien plus pour gérer le réseau, les services, la supervision, les référentiels, les services monolitiques ou singletons, les secrets, les incidents et échecs et bien plus encore pour vous intégrer à d&#39;autres éco-systèmes.&lt;br /&gt;&lt;br /&gt;J&#39;ai commencé un projet que j&#39;ai appellé &lt;a href=&quot;https://github.com/gregoryguillou/docker-mate&quot; target=&quot;_blank&quot;&gt;docker-mate&lt;/a&gt;&amp;nbsp;qui a pour but de présenter certains challenges auxquels vous serez confrontés avec Docker ainsi que des outils pour y répondre. Pour garder le tout simple et indépendant, il s&#39;appuit sur docker-compose. J&#39;espère que vous trouverez certaines démonstrations utiles, que vous clonerez le projet, ouvrirez des &quot;Issues&quot; ou proposerez des nouvelles idées pour l&#39;enrichir. J&#39;espère que vous aimerez Docker encore plus lorsque vous aurez pu observer, en actions, certains outils que les gens construisent pour l&#39;enrichir.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;Découverte de services et Blue/Green Update&lt;/h2&gt;Les réseaux Docker connectent les containers ensemble de sorte que appeler un container &lt;code&gt;A&lt;/code&gt; depuis un container &lt;code&gt;B&lt;/code&gt;&amp;nbsp;est généralement aussi simple que d&#39;adresser un alias réseau qui sera, par exemple, &lt;code&gt;container-a&lt;/code&gt;. Pourtant, si vous déployez des containers en production, vous aurez besoin de faire grossir vos services et donc de vous appuyer sur plusieurs containers qui servent la même application en même temps. Ainsi, vous ne voudrez plus simplement appeler le container &lt;code&gt;A&lt;/code&gt; depuis le container &lt;code&gt;B&lt;/code&gt; mais plutôt les containers&amp;nbsp;&lt;code&gt;A1&lt;/code&gt;, &lt;code&gt;A2&lt;/code&gt; ou&amp;nbsp;&lt;code&gt;A3&lt;/code&gt; depuis le container &lt;code&gt;B&lt;/code&gt;. Vous voudrez également fournir de la haute disponibilité de sorte que si le container &lt;code&gt;A1&lt;/code&gt; échoue, il soit immédiatement retiré de la liste des services utilisables. Si ces fonctionnalités sont développées, vous pourrez vous appuyer dessus pour réaliser des mises à jour &quot;Blue/Green&quot; en ajoutant la nouvelle version de votre application puis en supprimant l&#39;ancienne. Enfin, vous voudrez réaliser tout cela sans ajouter une seule ligne de code.&lt;br /&gt;&lt;br /&gt;Il existe plusieurs façons d&#39;enregistrer des service, de les découvrir et de les adresser avec Docker. L&#39;une d&#39;entre-elles consiste à s&#39;appuyer sur &lt;a href=&quot;https://www.consul.io/&quot; target=&quot;_blank&quot;&gt;Hashicorp Consul&lt;/a&gt; pour stocker et présenter les services, &lt;a href=&quot;https://github.com/gliderlabs/registrator&quot; target=&quot;_blank&quot;&gt;Gliderlabs/registrator&lt;/a&gt;&amp;nbsp;pour publier et dé-publier automatiquement ces services et sur&amp;nbsp;&lt;a href=&quot;https://github.com/eBay/fabio&quot; target=&quot;_blank&quot;&gt;eBay/fabio&lt;/a&gt;&amp;nbsp;pour loadbalancer les appels aux services lorsque ceux-ci s&#39;appuient sur des appels HTTP. Le répertoire &lt;code&gt;discovery&lt;/code&gt;&amp;nbsp;contient un exemple d&#39;une telle configuration réalisée avec docker-compose.&lt;br /&gt;&lt;br /&gt;Pour démontrer comment cela fonctionne, nous allons nous appuyer sur une application appelée &lt;code&gt;simple-api&lt;/code&gt;. Nous aurons besoin de déployer 2 versions : la version 1.0 et la version 2.0. Ci-dessous, voici comment construire les images Docker associées une fois que vous aurez cloné/forké docker-mate sur un serveur Linux ayant docker installé :&lt;br /&gt;&lt;pre&gt;cd discovery/simple-api&lt;br /&gt;make&lt;br /&gt;docker images simple-api&lt;br /&gt;cd ..&lt;br /&gt;&lt;/pre&gt;Pour démarrer la démonstration, il suffira alors de lancer la commande ci-dessous:&lt;br /&gt;&lt;pre&gt;docker-compose up -d&lt;br /&gt;&lt;/pre&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt; contient la version 1.0 de&amp;nbsp;&lt;code&gt;simple-api&lt;/code&gt;. Grace à la configuration des variables d&#39;environnement, Fabio peut rediriger les flux depuis l&#39;URL&amp;nbsp;&lt;code&gt;http://127.0.0.1:9999/simple-api&lt;/code&gt; vers l&#39;application. Pour tester ce fonctionnement, exécutez la commande ci-dessous dans un nouveau terminal :&lt;br /&gt;&lt;pre&gt;while true; do&lt;br /&gt;&amp;nbsp; echo -e &quot;$(curl localhost:9999/simple-api/version 2&amp;gt;/dev/null)&quot;&lt;br /&gt;&amp;nbsp; sleep 1&lt;br /&gt;done&lt;br /&gt;&lt;/pre&gt;Pour réaliser une mise à jour Blue/Green, démarrer la version &quot;green&quot; de&amp;nbsp;&lt;code&gt;simple-api&lt;/code&gt;&amp;nbsp;et arrêtez la version &quot;blue&quot; comme ci-dessous :&lt;br /&gt;&lt;pre&gt;docker-compose -f simple-api.yml scale green=2&lt;br /&gt;docker-compose scale blue=0&lt;br /&gt;&lt;/pre&gt;Le script de suivi démarré précédemment doit voir la nouvelle version prendre la place de l&#39;ancienne version avant que celle-ci soit complètement supprimée. Pour terminer, vous pouvez supprimer l&#39;application comme ci-dessous :&lt;br /&gt;&lt;pre&gt;docker-compose -f simple-api.yml stop&lt;br /&gt;docker-compose -f simple-api.yml rm -f&lt;br /&gt;&lt;/pre&gt;&lt;h2&gt;Continuer...&lt;/h2&gt;Je souhaite que&amp;nbsp;&lt;a href=&quot;https://github.com/gregoryguillou/docker-mate&quot; target=&quot;_blank&quot;&gt;docker-mate&lt;/a&gt;&amp;nbsp;puisse fournir de plus en plus de démonstrations d&#39;intégration entre Docker et d&#39;autres outils. Le projet démontre déjà comment configurer et utiliser &lt;a href=&quot;https://www.vaultproject.io/&quot;&gt;Hashicorp Vault&lt;/a&gt;. Alors prenez, vous aussi, beaucoup de plaisir en utilisant Docker!</content><link rel='replies' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/6963224807080168623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.resetlogs.fr/2016/12/docker-bluegreen.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/6963224807080168623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/6963224807080168623'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/2016/12/docker-bluegreen.html' title='Découverte de services et Blue/Green Update avec Docker'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-dyYmV86NfGM/WFYpiNdxVJI/AAAAAAAAOoY/0xuMZhl-YBISkreBhS188MDVF4FV8Z8RgCLcB/s72-c/docker.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8409134974669171624.post-8057879300119541014</id><published>2016-11-06T03:27:00.000-08:00</published><updated>2016-11-06T03:27:40.321-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AWS"/><category scheme="http://www.blogger.com/atom/ns#" term="Consul"/><category scheme="http://www.blogger.com/atom/ns#" term="Hashicorp"/><title type='text'>Deployer Consul sur AWS ECS avec Terraform</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://3.bp.blogspot.com/-3cdDfZc1IMA/WB8O0JlVQiI/AAAAAAAAOko/4QGeDQMM69I5xMEi_qtceCrBEDnRSU_9ACLcB/s1600/consul.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://3.bp.blogspot.com/-3cdDfZc1IMA/WB8O0JlVQiI/AAAAAAAAOko/4QGeDQMM69I5xMEi_qtceCrBEDnRSU_9ACLcB/s1600/consul.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Consul apporte beaucoup à la gestion des containers Docker. Travaillant avec les EC2 Container Services (ECS) d&#39;AWS, ça a littéralement changé le jeu quand j&#39;ai réussi à tirer partie de sa magie. Malheureusement il y a finalement assez peu d&#39;article sur le sujet et &lt;a href=&quot;https://aws.amazon.com/blogs/compute/service-discovery-via-consul-with-amazon-ecs/&quot; target=&quot;_blank&quot;&gt;la seule implémentation que j&#39;ai trouvée est basée sur CloudFormation&lt;/a&gt; ce qui ne fonctionnait pas vraiment dans mon cas utilisant déjà Terraform massivement.&lt;br /&gt;&lt;br /&gt;Après 3 itérations et la mise en place en production, je me suis dit que ça serait pas mal de conserver une démonstration qui embarque Consul sur AWS et ECS développée avec Terraform. C&#39;est également l&#39;opportunité de présenter certaines des bonnes pratiques Terraform que je décrivais dans mon article précédent. Je viens juste de publier &lt;a href=&quot;https://github.com/gregoryguillou/ecs-unleashed&quot; target=&quot;_blank&quot;&gt;le projet sur Github.com. Je l&#39;ai appelé ECS unleashed&lt;/a&gt; pour plusieurs raisons que je ne souhaite pas vraiment développer pour l&#39;instant. Une fois déployé, vous pourrez également mettre en oeuvre un exemple de mise à jour &quot;blue/green&quot; d&#39;une application.&lt;br /&gt;&lt;br /&gt;J&#39;espère que ce projet aidera certain à adopter Consul, à construire des démonstration plus évoluées ou à déployer en production. Amusez-vous à l&#39;aide de &quot;Fork&quot; du projet et n&#39;hésitez pas à interagir en envoyant vos questions ou vos idées ! Have fun.</content><link rel='replies' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/8057879300119541014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.resetlogs.fr/2016/11/ecs-consul.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/8057879300119541014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/8057879300119541014'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/2016/11/ecs-consul.html' title='Deployer Consul sur AWS ECS avec Terraform'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://3.bp.blogspot.com/-3cdDfZc1IMA/WB8O0JlVQiI/AAAAAAAAOko/4QGeDQMM69I5xMEi_qtceCrBEDnRSU_9ACLcB/s72-c/consul.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8409134974669171624.post-5163494047701968944</id><published>2016-09-18T00:04:00.000-07:00</published><updated>2016-09-18T12:55:16.327-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Automation"/><category scheme="http://www.blogger.com/atom/ns#" term="Terraform"/><title type='text'>5 bonnes pratiques pour démarrer un projet Terraform</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://3.bp.blogspot.com/-twltx24X8q0/V92yUzWhvdI/AAAAAAAAOjE/vaLLpn8qZXsio-x_pRguy59S-T9Z3kb1QCLcB/s1600/shutterstock_83855317.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; src=&quot;https://3.bp.blogspot.com/-twltx24X8q0/V92yUzWhvdI/AAAAAAAAOjE/vaLLpn8qZXsio-x_pRguy59S-T9Z3kb1QCLcB/s200/shutterstock_83855317.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Démarrer un nouveau projet avec des ressources Terraform n&#39;est pas si évident. Je veux dire, il est évidemment facile de démarrer un projet avec Terraform mais, pour le faire grandir facilement, pour ne pas être bloqué après quelques évolutions et pour permettre aux équipes de collaborer efficacement, il y a plusieurs choses à considérer dès le départ.&lt;br /&gt;&lt;br /&gt;Vous trouverez ci-dessous une liste de 5 bonnes pratiques que vous voudrez adopter pour commencer du bon pied ! Non pas que je n&#39;ai rencontré que 5 problèmes en faisant des erreurs mais plutôt que d&#39;un naturel fainéant, je veux garder les choses simples et rapides. Si vous avez vous-même rencontré des problèmes que vous avez adressés en implémentant des bonnes pratiques, n&#39;hésitez pas à les partager. Laissez un commentaire et expliquez comment il est possible d&#39;anticiper certaines erreurs...&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;Utilisez un répertoire par déploiement&lt;/h2&gt;&lt;i&gt;En d&#39;autres termes, utilisez des modules et les paramètres des modules plutôt que des variables et des fichiers &lt;code&gt;.tfvars&lt;/code&gt; stockés en dehors du répertoire de déploiement.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Ce que je préfère à propos de Terraform, c&#39;est que ca devient très facile de créer et supprimer des ressources. Disons que vous voulez faire un test et que vous avez déjà décrit l&#39;ensemble des ressources dont vous avez besoin, tout ce qu&#39;il faut, c&#39;est déployer une nouvelle instance de votre configuration en exécutant Terraform ailleurs...&lt;br /&gt;&lt;br /&gt;You avez déjà compris que certains éléments de configuration dépendent de la nature du déploiement. Par exemple, vous n&#39;allez &lt;b&gt;&lt;i&gt;*PAS*&lt;/i&gt;&lt;/b&gt; déployer les cname DNS sur un environnement de test. De fait, vous introduirez rapidement des paramètres à votre configuration et, dès que vous savez paramètrer, vous commencerez à les utiliser beaucoup. En passant, c&#39;est bien et même rigolo ! &lt;br /&gt;&lt;br /&gt;Terraform permet de créer des variables et de les stocker dans des fichiers. Vous serez peut-être amené à considérer une organisation projet basée sur (1) un répertoire contenant le configuration à construire et (2) un fichiers ou un jeu de fichiers par jeu de valeurs des variables qui représente l&#39;instance de la configuration que vous voulez déployer. &lt;b&gt;&lt;i&gt;C&#39;est une mauvaise idée !&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Une meilleure façon de procéder consiste à garder un répertoire par configuration déployée de sorte que votre organisation projet ressemble à celle ci-dessous et s&#39;appuie sur des modules et des paramètres dans des modules plutôt que des variables stockées à l&#39;extérieur de la configuration :&lt;br /&gt;&lt;pre&gt;[project]&lt;br /&gt;  - [deployments]&lt;br /&gt;    - [production]&lt;br /&gt;      - [part1] (relies on module X, Y)&lt;br /&gt;      - [part2] (relies on module Z and current state of production/part1)&lt;br /&gt;    - [test]&lt;br /&gt;      - [part1] (relies on module X, Y)&lt;br /&gt;      - [part2] (relies on module Z and current state of test/part1)&lt;br /&gt;    - ...&lt;br /&gt;  - [modules]&lt;br /&gt;    - [module A]&lt;br /&gt;    - [module X] (relies on module A...)&lt;br /&gt;    - [module Y]&lt;br /&gt;    - [module Z]&lt;/pre&gt;L&#39;intérêt principal de ce type d&#39;approche est que vous n&#39;avez plus aucun besoin de référencer des fichiers externes au répertoire de déploiement et, de ce fait, il n&#39;y a aucune chance que vous abimiez par erreur la configuration que vous aurez déployée.&lt;br /&gt;&lt;br /&gt;Vous utiliserez juste&amp;nbsp;&lt;code&gt;terraform get&lt;/code&gt;, &lt;code&gt;terraform remote pull&lt;/code&gt;, &lt;code&gt;terraform plan&lt;/code&gt;, &lt;code&gt;terraform apply&lt;/code&gt;&amp;nbsp;sans aucun autre paramètre. Outre une configuration plus simple à gérer et moins sujette aux erreurs, vous vous apercevrez avec le temps que travailler avec des modules améliore votre capacité à réutiliser et faire évoluer votre code. &lt;br /&gt;&lt;h2&gt;Utilisez le provider Random&lt;/h2&gt;S&#39;appuyer sur des clés générées aléatoirement pour nommer les ressources en dehors de Terraform est également une bonne pratique à systématiser... Non seulement, ça permet de repérer facilement quelle ressource fait partie de quel déploiement, mais ça permet également de résoudre les problèmes de collision des noms.&lt;br /&gt;&lt;br /&gt;Considérez AWS par exemple, un nom de bucket doit être unique quelque soit la région. De la même manière, un rôle, un groupe de journaux Cloudwatch ou un groupe de Sécurité doivent être unique pour un compte donné. Ajouter des clés dans les noms de ressources facilite le déploiement multiple d&#39;une même configuration et, par exemple, le script ci-dessous peut ainsi être exécuté autant de fois que nécessaire :  &lt;br /&gt;&lt;pre&gt;resource &quot;random_id&quot; &quot;idkey&quot; {&lt;br /&gt;   byte_length = 8&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;resource &quot;aws_s3_bucket&quot; &quot;terraform_bucket&quot; {&lt;br /&gt;   bucket = &quot;terraform.${random_id.idkey.hex}&quot;&lt;br /&gt;   acl = &quot;private&quot;&lt;br /&gt;   versioning {&lt;br /&gt;        enabled = true&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;output &quot;idkey&quot; {&lt;br /&gt;   value = &quot;${random_id.idkey.hex}&quot;&lt;br /&gt;}&lt;/pre&gt;&lt;h2&gt;Utilisez le client de votre Provider&lt;/h2&gt;Utiliser le client du Provider peut s&#39;avérer d&#39;une grande aide de plusieurs manières : d&#39;abord ça facilite l&#39;externalisation des identifiants de connexion en évitant d&#39;avoir à les stocker dans la configuration de déploiement ou dans des variables d&#39;environnement. Par exemple, dans le cas de la commande ci-dessous, il suffit de créer un profile dans &lt;code&gt;~/.aws/credentials&lt;/code&gt;&amp;nbsp;lequel contiendra les clés access/secret pour se connecter à AWS. Nul besoin d&#39;aucun fichier de variable :   &lt;br /&gt;&lt;pre&gt;variable &quot;aws_region&quot; {}&lt;br /&gt;variable &quot;aws_profile&quot; {}&lt;br /&gt;&lt;br /&gt;provider &quot;aws&quot; {&lt;br /&gt;    profile = &quot;${var.aws_profile}&quot;&lt;br /&gt;    region = &quot;${var.aws_region}&quot;&lt;br /&gt;}&lt;/pre&gt;Le provisioner &lt;code&gt;local-exec&lt;/code&gt; permettra également de lancer des commandes qui ne sont&amp;nbsp;&lt;b&gt;&lt;i&gt;*PAS*&lt;/i&gt;&lt;/b&gt;&amp;nbsp;encore supportées par Terraform. Par exemple, vous pourrez facilement exécuter des commandes spécifiques pour configurer la réplication &quot;cross region&quot; de S3 ou quoique vous vouliez et qui ne soit pas encore supporté par votre version.&lt;br /&gt;&lt;br /&gt;Vous trouverez ci-dessous un exemple d&#39;utilisation d&#39;une commande &lt;code&gt;aws ssm&lt;/code&gt;&amp;nbsp;:  &lt;br /&gt;&lt;pre&gt;resource &quot;null_resource&quot; &quot;myresource&quot; {&lt;br /&gt;  provisioner &quot;local-exec&quot; {&lt;br /&gt;        command = &amp;lt;&amp;lt;EOF &lt;br /&gt;export AWS_DEFAULT_REGION=&quot;${var.region}&quot;&lt;br /&gt;aws ssm send-command --profile ${var.myprofile} --instance-ids \&lt;br /&gt;    ${aws_instance.server1.id} --document-name ${aws_ssm_document.mydoc.name}&lt;br /&gt;EOF&lt;br /&gt;  }&lt;br /&gt;  depends_on = [ &quot;aws_ssm_document.mydoc&quot;, &quot;aws_instance.server1&quot;]&lt;br /&gt;}&lt;/pre&gt;&lt;h2&gt;Stockez l&#39;état de Terraform à l&#39;extérieur du projet&lt;/h2&gt;Le fichier &quot;state&quot; est une partie importante du déploiement de Terraform. Son objectif principal est de tracer le lien entre les ressources déployées à travers Terraform et le modèle que vous avez écrit. Il est très important que ce fichier soit partagé entre les différents acteurs. Pourtant, ça fait assez peu de sens de le stocker dans le référentiel de gestion du code, notamment parce qu&#39;il peut contenir des informations sensibles pour un déploiement. Préférez un référentiel externe et si vous utilisez AWS et n&#39;avez pas d&#39;accès à Atlas, S3 est probablement la solution.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Utilisez une commande comme celle ci-dessous pour configurer la connectivité à votre fichier d&#39;état stocké sur un référentiel exterieur :&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;terraform remote config -backend=S3 \&lt;br /&gt;   -backend-config=&quot;bucket=terraform-myprod-xxxxxxxxxxxxx&quot; \&lt;br /&gt;   -backend-config=&quot;key=tf-state/xxx.state &quot; \&lt;br /&gt;   -backend-config=&quot;region=eu-west-1&quot; \&lt;br /&gt;   -backend-config=&quot;profile=myprofile&quot;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;La commande ci-dessus crée un fichier nommé&amp;nbsp;&lt;code&gt;.terraform/terraform.tfstate&lt;/code&gt; qui ressemble à celui ci-dessous et trace le lien extérieur :&lt;/li&gt;&lt;/ul&gt;{&lt;br /&gt;&lt;pre&gt;...&lt;br /&gt;    &quot;remote&quot;: {&lt;br /&gt;        &quot;type&quot;: &quot;s3&quot;,&lt;br /&gt;        &quot;config&quot;: {&lt;br /&gt;            &quot;bucket&quot;: &quot;terraform-myprod-xxxxxxxxxxxxx&quot;,&lt;br /&gt;            &quot;key&quot;: &quot;tf-state/xxx.state &quot;,&lt;br /&gt;            &quot;profile&quot;: &quot;myprofile&quot;,&lt;br /&gt;            &quot;region&quot;: &quot;eu-west-1&quot;&lt;br /&gt;        }&lt;br /&gt;    },&lt;br /&gt; ...&lt;/pre&gt;Vous devrez alors soit activer/désactiver le lien vers le fichier &quot;state&quot;. Vous pouvez également conserver uniquement le fichier initial et utiliser la commande &lt;code&gt;terraform remote pull&lt;/code&gt; pour resynchroniser l&#39;état avec les modifications qui ont eu lieu.&lt;br /&gt;&lt;h2&gt;Organisez le projet par couches ; utilisez des sources de données&lt;/h2&gt;Enfin, vous finirez par considérer que votre configuration doit être découpée en morceaux. Par exemple :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;vous ne voudrez peut être pas déployer autant de registry docker que vous avez de déploiement ou simplement, vous ne pourrez pas ;&lt;/li&gt;&lt;li&gt;vous ne voudrez pas déployer l&#39;ensemble des Cloudfront, DNS ou certificats pour vos environnements de test et ne les changerez sans doute que très peu sur vos environnement de production ;&lt;/li&gt;&lt;li&gt;vous voudrez peut-être que des personnes différentes gèrent des parties différentes de vos déploiements.&lt;/li&gt;&lt;/ul&gt;Au lieu de &lt;a href=&quot;https://github.com/hashicorp/terraform/issues/1604&quot;&gt;construire des logiques conditionnelles dans vos modules à l&#39;aide du paramètre&amp;nbsp;&lt;code&gt;count&lt;/code&gt;&lt;/a&gt;, une façon simple de gérer ce cas est de créer des configurations et des déploiements séparés lesquels ont des dépendances. Pour réaliser ce type d&#39;opération :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Créez un output pour votre configuration comme dans l&#39;exemple ci-dessous :&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;resource &quot;random_id&quot; &quot;idkey&quot; {&lt;br /&gt;   byte_length = 8&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;output &quot;idkey&quot; {&lt;br /&gt;   value = &quot;${random_id.idkey.hex}&quot;&lt;br /&gt;}&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Liez les couches en les référençant à l&#39;aide du fournisseur de données&amp;nbsp;&lt;code&gt;terraform_remote_state&lt;/code&gt;&amp;nbsp;:&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;data &quot;terraform_remote_state&quot; &quot;key&quot; {&lt;br /&gt;    backend = &quot;s3&quot;&lt;br /&gt;    config {&lt;br /&gt;        bucket  = &quot;terraform-prod-xxxxxxxxxxxxx&quot;&lt;br /&gt;        key     = &quot;tf-state/xxxx.state&quot;&lt;br /&gt;        region  = &quot;eu-west-1&quot;&lt;br /&gt;        profile = &quot;myprofile&quot;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;Une fois que c&#39;est réalisé, vous pourrez référencer les valeurs d&#39;un autre déploiement avec une syntaxe comme celle-ci&amp;nbsp;&lt;code&gt;${data.terraform_remote_state.key.idkey}&lt;/code&gt;. Parce que vous ne voulez pas avoir des références en cycle, considérez mettre en place des déploiements par couches.&lt;br /&gt;&lt;br /&gt;Créer des couches de configuration vous aidera également à accélérer les déploiements et limiter les indisponibilités. En effet, il est très probable, par exemple si vous voulez réaliser du déploiement continu avec des micro-services, que les cycles de vie des différentes parties de votre infrastructure soit très différents. Ainsi des applications docker pourront être déployées quotidiennement alors que l&#39;infrastructure sous-jascente pourra rester identique pendant plusieurs semaines.&lt;br /&gt;&lt;h2&gt;Considerez d&#39;autres bonnes pratiques&lt;/h2&gt;Avec un peu de pratique, vous trouverez plein de manière d&#39;améliorer le code associé à vos infrastructures. Pour en lister quelques-unes, vous voudrez utiliser &lt;code&gt;null_resource&lt;/code&gt;, des variables de type map ou Consul... Vous voudrez également utiliser Atlas, Docker, Chef ou Ansible, les lambdas ou les tags...&lt;br /&gt;&lt;br /&gt;Et vous, qu&#39;est-ce que vous considérez comme &quot;bonnes pratiques&quot; lorsque vous écrivez un projet avec Terraform ?</content><link rel='replies' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/5163494047701968944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.resetlogs.fr/2016/09/terraform-good-practices.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/5163494047701968944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/5163494047701968944'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/2016/09/terraform-good-practices.html' title='5 bonnes pratiques pour démarrer un projet Terraform'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://3.bp.blogspot.com/-twltx24X8q0/V92yUzWhvdI/AAAAAAAAOjE/vaLLpn8qZXsio-x_pRguy59S-T9Z3kb1QCLcB/s72-c/shutterstock_83855317.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8409134974669171624.post-5960322119028104240</id><published>2016-07-03T02:44:00.002-07:00</published><updated>2016-07-03T02:44:35.596-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AWS"/><category scheme="http://www.blogger.com/atom/ns#" term="Lambda"/><category scheme="http://www.blogger.com/atom/ns#" term="VPC"/><title type='text'>Accéder des adresses IP extérieures à partir de Lambda dans un VPC</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://2.bp.blogspot.com/-9R9GGvCkqb4/V3jANhcgLPI/AAAAAAAAOdk/5PwjelkEGE0soDuK43WxX-m4kJjRJyGXQCLcB/s1600/Compute_AWSLambda.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://2.bp.blogspot.com/-9R9GGvCkqb4/V3jANhcgLPI/AAAAAAAAOdk/5PwjelkEGE0soDuK43WxX-m4kJjRJyGXQCLcB/s1600/Compute_AWSLambda.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Lambda est au &quot;compute&quot; ce que S3 est au stockage. Il s&#39;agit d&#39;un modèle simplifié dans lequel les programmes deviennent des travaux en Java, Python ou Nodejs et sont nommés &quot;fonctions Lambda&quot;. Ces fonctions ne peuvent pas conserver leur état et sont déclenchées par différents évènements : une requête HTTP sur l&#39;&quot;API Gateway&quot;, un ordonnanceur basé sur Cloudwatch ou d&#39;autres services AWS. Il ne s&#39;agit que de cela : des fonctions sans état qui peuvent embarquer les bibliothèques de votre choix. En retour, vous n&#39;avez plus besoin de vous préoccuper de l&#39;infrastructure d&#39;exécution. Vous bénéficiez d&#39;un modèle de calcul capable de monter en charge et de gérer la panne d&#39;un datacenter. Mieux que tout, vous payez pour les ressources que vous utilisez vraiment et pas pour les ressources que vous provisionnez. Couplé à l&#39;API Gateway ou à Cognito, Lambda est aussi incroyablement utile que S3 !&lt;br /&gt;&lt;br /&gt;Pourtant, le diable est dans les détails et il y en a quelques-uns quand il s&#39;agit de Lambda : le modèle de securité ; les connexions aux réseaux ; la montée en charge ; la gestion du code ou comment gérer la programmation et le debugging. Vous conviendrez que ça demande quelques compromis que d&#39;être capable de lancer des opérations en quelques millisecondes sur des systèmes distribués. Ca ne vient pas non plus sans conséquence. Celà, même si vos programmes, sont &quot;juste&quot; des fonctions sans états. Cet article plonge dans la configuration de Lambda dans les VPC et, plus spécifiquement, comment autoriser Lambda à accéder à Internet ou les endpoints des services AWS extérieurs depuis un VPC.&lt;br /&gt;&lt;br /&gt;Mais commencçons par quelques bonnes nouvelles :&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;Si Lambda n&#39;accède qu&#39;à des adresses sur Internet, vous n&#39;avez pas à l&#39;attacher à vos VPC et cela fonctionnera comme attendu&lt;/li&gt;&lt;li&gt;Si, à l&#39;inverse, Lambda n&#39;accède qu&#39;à des adresses IP au sein du VPC, y compris à un endpoint S3 interne, ajoutez-le au VPC en question et, nonobstant le fait que les groupes de sécurité soient correctement configurés, il n&#39;est pas non plus nécessaire de mettre en oeuvre aucune autre configuration spécifique.&lt;/li&gt;&lt;/ul&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;Note:&lt;br /&gt;Il n&#39;est pas possible de fixer les adresses IP utilisées par Lambda, même si vous pouvez créer un sous-réseau avec peu d&#39;adresses et, par ce biais maitriser les adresses utilisées. Cela est dû au fait que pour monter en charge et pour assurer la disponibilité dans plusieurs datacenters, Lambda ne doit pas avoir d&#39;adhérence à une adresse et doit pouvoir en changer.&amp;nbsp;&lt;/blockquote&gt;Pourtant, il est pas rare qu&#39;une fonction Lambda ait besoin d&#39;accéder à des ressources dans un VPC et à des ressources extérieures. Il y a plusieurs moyens d&#39;adresser cette situation :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Vous pouvez développer des programmes sur les ressources internes au VPC qui feront le relai vers l&#39;extérieur. Par exemple, si une fonction est déclenchée qui nécessite d&#39;aller chercher des données sur une instance EC2 et les pousser sur DynamoDB, vous pouvez aussi bien créer un programme sur votre instance EC2 qui aille, lui-même, pousser les données sur DynamoDB et utiliser une fonction Lambda pour déclencher ce programme. L&#39;intérêt d&#39;une telle approche est que, si vous utilisez EC2, vous payez de toute façon probablement déjà trop de puissance ;-)&lt;/li&gt;&lt;li&gt;Vous pouvez configurer le VPC de sorte que Lambda puisse accéder, à la fois, aux ressources internes et aux ressources extérieures comme sur le schéma ci-dessous :&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-j7vhZ0hhLb8/V3hwMkS00YI/AAAAAAAAOc8/N-zxTLVKP1c1HVGIFxOQnWN8-tVkDRRuwCLcB/s1600/Selection_696.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;262&quot; src=&quot;https://1.bp.blogspot.com/-j7vhZ0hhLb8/V3hwMkS00YI/AAAAAAAAOc8/N-zxTLVKP1c1HVGIFxOQnWN8-tVkDRRuwCLcB/s640/Selection_696.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Lambda ne peut pas accéder directement à la passerelle Internet ou Internet Gateway (igw) et de fait à l&#39;extérieur du VPC. Au lieu de cela, vous devez configurer une passerelle NAT ou &quot;NAT Gateway&quot;. Vous ne pouvez pas non-plus fixer les adresses IP utilisées par Lambda, vous devrez donc procéder comme ci-dessous :&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Créer au moins 2 sous-réseaux, en jaune ci-dessus, chacun dans une AZ différente de sorte que quand vous lancez une fonction Lambda, elle puisse s&#39;exécuter même si une AZ est inaccessible. Ces sous-réseaux ne doivent pas être capables d&#39;accéder à l&#39;extérieur&amp;nbsp;et vous changerez les tables de routage pour cette raison dans la 3ème étape de la configuration.&lt;/li&gt;&lt;li&gt;Créer une passerelle NAT ou &quot;NAT gateway&quot; par AZ dans laquelle vous avez créé un sous-réseau pour Lambda. Cette passerelle NAT doit être capable d&#39;accéder aux réseaux extérieurs. Vous noterez que la création d&#39;une passerelle NAT alloue une adresse IP élastique ou EIP, même si cela n&#39;est pas utile ; Cela&amp;nbsp;&lt;a href=&quot;https://aws.amazon.com/vpc/pricing/&quot; target=&quot;_blank&quot;&gt;coûte également pour chacune des &quot;NAT Gateways&quot;&lt;/a&gt;. Pour éviter d&#39;utiliser une EIP et réduire les coûts, vous pouvez avoir envie de créer une Instance EC2 qui gère la translation d&#39;adresse ou &quot;NAT Instance&quot; ; reportez-vous à la documentation ci-contre pour comparer les 2 solutions &quot;&lt;a href=&quot;http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-comparison.html&quot; target=&quot;_blank&quot;&gt;NAT instance instead of a NAT Gateway&lt;/a&gt;&quot;. Si vous décidez d&#39;utiliser une instance NAT, vous devez gérer l&#39;instance EC2, son paramétrage et sa disponibilité par vous-même.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://4.bp.blogspot.com/-amBFd7ZBWtg/V3jBtQIKYNI/AAAAAAAAOd0/QhYS9Z16Z6YE_er9h6XEFMT09p_-0P20ACLcB/s1600/Networking_AmazonVPC_VPCNATgateway.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://4.bp.blogspot.com/-amBFd7ZBWtg/V3jBtQIKYNI/AAAAAAAAOd0/QhYS9Z16Z6YE_er9h6XEFMT09p_-0P20ACLcB/s1600/Networking_AmazonVPC_VPCNATgateway.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Créer une table de routage par sous-réseau accueillant les fonctions Lambda de sorte que les demandes de connexion vers l&#39;extérieur soient dirigées vers l&#39;instance/la gateway NAT de la AZ locale. Attacher ces tables de routage aux sous-réseaux concernés.&lt;/li&gt;&lt;li&gt;Tester les connexions depuis les sous-réseaux vers des adresses internes et externes. Si vous n&#39;arrivez pas à faire fonctionner la configuration, testez le sous-réseau avec une instance EC2 que vous créerez dans le-dit sous-réseau. Cette approche permet de diagnostiquer facilement si le problème vient du code ou paramétrage des fonctions lambda ou s&#39;il s&#39;agit d&#39;un problème de route.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;C&#39;est tout ! Vous pouvez continuer à jouer avec AWS Lambda...&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/5960322119028104240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.resetlogs.fr/2016/07/lamdba-vpc.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/5960322119028104240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/5960322119028104240'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/2016/07/lamdba-vpc.html' title='Accéder des adresses IP extérieures à partir de Lambda dans un VPC'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-9R9GGvCkqb4/V3jANhcgLPI/AAAAAAAAOdk/5PwjelkEGE0soDuK43WxX-m4kJjRJyGXQCLcB/s72-c/Compute_AWSLambda.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Paris, France</georss:featurename><georss:point>45.828799251921339 2.109375</georss:point><georss:box>24.349021251921339 -39.199219 67.308577251921335 43.417969</georss:box></entry><entry><id>tag:blogger.com,1999:blog-8409134974669171624.post-2380133131458346866</id><published>2016-01-10T22:40:00.003-08:00</published><updated>2016-01-17T23:23:50.518-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="LXC"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle Linux"/><title type='text'>Oracle database 12c, Oracle Linux 7.x et LXC</title><content type='html'>Les containers Linux LXC sont désormais certifiés avec les bases de données 12c, y compris avec RAC et ASM. Vous pouvez vérifier par vous-même dans la&amp;nbsp;&lt;a href=&quot;http://www.oracle.com/technetwork/database/virtualizationmatrix-172995.html&quot; target=&quot;_blank&quot;&gt;matrice de support des solutions de virtualisation&lt;/a&gt;&amp;nbsp;ainsi que dans le document de&amp;nbsp;&lt;a href=&quot;https://docs.oracle.com/database/121/LADBN/toc.htm#CJAGBEIJ&quot; target=&quot;_blank&quot;&gt;release Notes d&#39;Oracle database 12.1&lt;/a&gt;. si vous voulez faire un essai et découvrir ce qu&#39;il est possible de faire, il n&#39;y a rien de compliqué. Vous trouverez ci-dessous une introduction rapide. Elle illustre comment utiliser la base de données 12.1.0.2 avec Oracle Linux 7 et les containers LXC.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;Note:&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Si vous lisez les comparaisons des containers sur Linux et ceux &quot;du reste du monde&quot;, il vous apparaitra vite que LXC comme l&#39;implémentation libcontainer de Docker se concentrent sur l&#39;aspect management et orchestration plutôt que, par exemple, une réelle isolation des ressources. La faute à Linux ? En, fait, avant même de démarrer, vous constaterez dans la release notes d&#39;Oracle 12.1 que vous êtes invité à appliquer le patch suivant à votre Infrastructure Grid si vous prévoyez d&#39;utiliser RAC ou ASM : 20920711: CSSD FAILURE IN A LXC WOULD CAUSE PHYSICAL NODE REBOOT.&lt;/i&gt;&lt;/blockquote&gt;&lt;h2&gt;Installer LXC sur Oracle Linux 7&lt;/h2&gt;Merci YUM, installer et démarrer LXC sur Oracle Linux 7 ne nécessite pas plus de quelques lignes de commandes . Je l&#39;ai testé sur un noyau UEK4 comme vous pouvez le constater ci-dessous : &lt;br /&gt;&lt;pre&gt;uname -a&lt;br /&gt;Linux purple.resetlogs.com 4.1.12-32.el7uek.x86_64 #2 SMP ...&lt;/pre&gt;&lt;blockquote&gt;&lt;i&gt;Note:&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Pour certaines raisons non documentées, les containers LXC n&#39;arrivent pas à positionner &amp;nbsp;correctement les mots de passe lorsque l&#39;hôte s&#39;exécute avec SELinux en mode &quot;Enforcing&quot;. Pour faire fonctionner correctement la configuration, vous voudrez sans doute passer SELinux en mode Disabled ou, au minimum, Permissive.&lt;/i&gt;&lt;/blockquote&gt;Installer LXC et BRTFS nécessite d&#39;utiliser les dernières versions des noyaux UEK3 ou UEK4 sur Oracle Linux. Vous pouvez simplement installer les logiciels depuis l&#39;utilisateur root à l&#39;aide des commandes ci-dessous : &lt;br /&gt;&lt;pre&gt;yum -y install btrfs-progs lxc wget&lt;/pre&gt;One fois l&#39;opération réalisée, il vous reste 2 étapes de configuration : la première consuste à démarrer le service libvirtd à l&#39;aide de systemd comme ci-dessous : &lt;br /&gt;&lt;pre&gt;systemctl start libvirtd&lt;br /&gt;systemctl enable libvirtd&lt;/pre&gt;La seconde consiste à créer un système de fichiers BTRFS sur un disque, une LUN, une partition ou un volume logique créé précédemment comme ci-dessous. Changez le nom /dev/sdb pour le faire correspondre à vos besoins :&lt;br /&gt;&lt;pre&gt;mkfs.btrfs /dev/sdb&lt;br /&gt;echo &quot;/dev/sdb      /container    btrfs    defaults   0 0&quot; &amp;gt;&amp;gt;/etc/fstab&lt;br /&gt;mount /container&lt;/pre&gt;&lt;h2&gt;Jouer avec les containers&amp;nbsp;&lt;/h2&gt;Les modèles de configuration des containers sont stockés dans /usr/share/lxc/templates. Pour créer un container sur Oracle Linux 7, il vous suffit de lancer la commande qui suit. N&#39;oubliez pas de lancer “--privileged=rt” car c&#39;est un pre-requis pour exécuter l&#39;infrastructure Grid et être supporté par Oracle : &lt;br /&gt;&lt;pre&gt;lxc-create -n ol7 -B btrfs -t oracle \&lt;br /&gt;   -- --release=7.latest --privileged=rt&lt;/pre&gt;Vous pouvez alors le démarrer en temps que service à l&#39;aide du paramètre &quot;-d&quot; : &lt;br /&gt;&lt;pre&gt;lxc-start -n ol7 -d -o /container/ol7_info.log -l INFO&lt;/pre&gt;Si vous êtes connecté à l&#39;hôte, vous pouvez accéder les processus à l&#39;intérieur du container ; Si vous voulez observer de quoi celui-ci est constitué, installez la commande pstree et utilisez là avec le PID de lxc-start comme ci-dessous : &lt;br /&gt;&lt;pre&gt;yum -y install psmisc&lt;br /&gt;pstree -g `lxc-info -n ol7|grep &quot;PID:&quot; |awk &#39;{print $2}&#39;`&lt;/pre&gt;L&#39;affichage montre que le container exécute le process init, quelques terminaux, le syslog, un serveur SSH et in client DHCP :  &lt;br /&gt;&lt;pre&gt;lxc-start(3544)───init(3553)─┬─dhclient(3791)&lt;br /&gt;                             ├─mingetty(3882)&lt;br /&gt;                             ├─mingetty(3886)&lt;br /&gt;                             ├─mingetty(3888)&lt;br /&gt;                             ├─mingetty(3890)&lt;br /&gt;                             ├─mingetty(3892)&lt;br /&gt;                             ├─rsyslogd(3824)─┬─{rsyslogd}(3824)&lt;br /&gt;                             │                ├─{rsyslogd}(3824)&lt;br /&gt;                             │                └─{rsyslogd}(3824)&lt;br /&gt;                             └─sshd(3875)&lt;/pre&gt;Vous pouvez vous connecter à la console du container depuis l&#39;hôte à l&#39;aide de la commande ci-dessous ; Celle-ci vous demandera un login/password et vous pourrez utiliser les touches &quot;&amp;lt;Ctrl+a&amp;gt; q&quot; pour vous déconnecter : &lt;br /&gt;&lt;pre&gt;lxc-console -n ol7&lt;/pre&gt;Vous pouvez directement lancer un shell bash dans le container à l&#39;aide de la commande lxc-attach. Celle-ci ne nécessite pas de s&#39;identifier : &lt;br /&gt;&lt;pre&gt;lxc-attach -n ol7&lt;/pre&gt;Evidemment, le container étant, par défaut, connecté à un bridge linux, vous pouvez également vous connecter via SSH. Pour cela, il suffit de déterminer l&#39;adresse IP fournie par le service dnsmasq comme ci-dessous : &lt;br /&gt;&lt;pre&gt;lxc-info -n ol7 &lt;br /&gt;Name:           ol7&lt;br /&gt;State:          RUNNING&lt;br /&gt;PID:            13343&lt;br /&gt;IP:             192.168.122.154&lt;br /&gt;CPU use:        17.51 seconds&lt;br /&gt;BlkIO use:      49.71 MiB&lt;br /&gt;Memory use:     1.06 GiB&lt;br /&gt;KMem use:       0 bytes&lt;br /&gt;Link:           vethDACVKP&lt;br /&gt; TX bytes:      1.42 KiB&lt;br /&gt; RX bytes:      6.04 KiB&lt;br /&gt; Total bytes:   7.46 KiB&lt;/pre&gt;You then should be able to connect from a simple SSH client : &lt;br /&gt;&lt;pre&gt;ssh root@192.168.122.154&lt;/pre&gt;&lt;h2&gt;Jouer avec Oracle Database 12.1&lt;/h2&gt;Désormais que vous avez créé, démarré et joué avec LXC, vous pouvez facilement créer une base de données Oracle 12.1.0.2. Mais d&#39;abord, vous devrez compléter les pré-requis d&#39;Oracle en installant le RPM &lt;code&gt;oracle-rdbms-server-12cR1-preinstall&lt;/code&gt;. En tant qu&#39;utilisateur root, positionnez la valeur de &lt;code&gt;enable&lt;/code&gt; pour &lt;code&gt;ol7_UEKR3&lt;/code&gt; dans &lt;code&gt;/etc/yum.repos.d/public-yum-ol7.repo&lt;/code&gt; à &lt;code&gt;enabled=1&lt;/code&gt;. Vous pouvez alors procéder à l&#39;ensemble des installations à l&#39;aide de la simple commande ci-dessous :&lt;br /&gt;&lt;pre&gt;yum -y install oracle-rdbms-server-12cR1-preinstall unzip&lt;/pre&gt;L&#39;utilisateur Oracle étant présent avant l&#39;installation du RPM, les groupes ne sont pas ajoutés correctement; lancez la commande ci-dessous pour corriger le problème :&lt;br /&gt;&lt;pre&gt;usermod -G dba -g oinstall oracle&lt;/pre&gt;En tant qu&#39;utilisateur root, créez le fichier qui référence l&#39;inventory et les répertoires associés :&lt;br /&gt;&lt;pre&gt;if [ ! -d /u01 ]; then&lt;br /&gt;   mkdir -p /u01/app/oracle/distribs&lt;br /&gt;   mkdir -p /u01/app/oraInventory&lt;br /&gt;   chown -R oracle:dba /u01&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ ! -f /etc/oraInst.loc ]; then&lt;br /&gt;   cat &amp;gt;/etc/oraInst.loc &amp;lt;&amp;lt;EOF&lt;br /&gt;inventory_loc=/u01/app/oraInventory&lt;br /&gt;inst_group=oinstall&lt;br /&gt;EOF&lt;br /&gt;  chown root:oinstall /etc/oraInst.loc&lt;br /&gt;  chown 640 /etc/oraInst.loc&lt;br /&gt;fi&lt;/pre&gt;En tant qu&#39;oracle, téléchargez et décompressez la distribution Oracle ; Nous supposerons qu&#39;elle est disponible dans le répertoire ci-après&amp;nbsp;&lt;code&gt;/u01/app/oracle/distribs/database&lt;/code&gt;. En tant que root, ajoutez l&#39;IP du container dans le fichier &lt;code&gt;/etc/hosts&lt;/code&gt;&amp;nbsp;:&lt;br /&gt;&lt;pre&gt;MYIPADDR=`ip addr|grep inet|grep -v inet6|grep global|awk &#39;{print $2}&#39;|cut -d &#39;/&#39; -f 1`&lt;br /&gt;sed -i /localhost/d /etc/hosts&lt;br /&gt;sed “127.0.0.1 localhost localhost.localdomain” &amp;gt;&amp;gt; /etc/hosts&lt;br /&gt;echo &quot;$MYIPADDR `hostname`&quot; &amp;gt;&amp;gt; /etc/hosts&lt;/pre&gt;En tant qu&#39;utilisateur oracle, installez le logiciel de base de données :&lt;br /&gt;&lt;pre&gt;export DISTRIB=`pwd`&lt;br /&gt;./runInstaller -silent -showProgress -ignorePrereq \&lt;br /&gt; -ignoreSysPrereqs -waitforcompletion \&lt;br /&gt; -responseFile $DISTRIB/response/db_install.rsp \&lt;br /&gt;  oracle.install.option=INSTALL_DB_SWONLY \&lt;br /&gt;  ORACLE_HOME=/u01/app/oracle/product/12.1.0/db_1 \&lt;br /&gt;  ORACLE_BASE=/u01/app/oracle \&lt;br /&gt;  oracle.install.db.InstallEdition=EE \&lt;br /&gt;  SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \&lt;br /&gt;  DECLINE_SECURITY_UPDATES=true \&lt;br /&gt;  oracle.install.db.DBA_GROUP=dba \&lt;br /&gt;  oracle.install.db.OPER_GROUP=dba \&lt;br /&gt;  oracle.install.db.BACKUPDBA_GROUP=dba \&lt;br /&gt;  oracle.install.db.DGDBA_GROUP=dba \&lt;br /&gt;  oracle.install.db.KMDBA_GROUP=dba&lt;/pre&gt;&lt;br /&gt;En tant qu&#39;utilisateur root, exécutez le script root.sh :&lt;br /&gt;&lt;pre&gt;/u01/app/oracle/product/12.1.0/db_1/root.sh&lt;/pre&gt;En tant qu&#39;utilisateur oracle, créez le listener en mode silencieux à l&#39;aide de la commande ci-dessous :&lt;br /&gt;&lt;pre&gt;. oraenv&lt;br /&gt;ORACLE_SID = [oracle] ? x&lt;br /&gt;ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/product/12.1.0/db_1&lt;br /&gt;&lt;br /&gt;netca -silent  \&lt;br /&gt;   -responsefile $ORACLE_HOME/network/install/netca_typ.rsp&lt;/pre&gt;En tant qu&#39;utilisateur oracle, créez une base de données en mode silencieux à l&#39;aide de la commande ci-dessous :&lt;br /&gt;&lt;pre&gt;dbca -silent -createDatabase \&lt;br /&gt;  -templateName New_Database.dbt  \&lt;br /&gt;  -gdbName WHITE \&lt;br /&gt;  -createAsContainerDatabase true \&lt;br /&gt;  -numberOfPDBs 1 \&lt;br /&gt;  -pdbName PURPLE \&lt;br /&gt;  -pdbAdminPassword Welcome1 \&lt;br /&gt;  -sysPassword Welcome1 \&lt;br /&gt;  -systemPassword Welcome1 \&lt;br /&gt;  -emConfiguration NONE \&lt;br /&gt;  -datafileDestination /u01/app/oracle/oradata \&lt;br /&gt;  -redoLogFileSize 100 \&lt;br /&gt;  -storageType FS \&lt;br /&gt;  -characterSet AL32UTF8 \&lt;br /&gt;  -sampleSchema true \&lt;br /&gt;  -automaticMemoryManagement false \&lt;br /&gt;  -totalMemory 1536  \&lt;br /&gt;  -databaseType OLTP&lt;/pre&gt;En tant qu&#39;utilisateur root, créez un service systemd à l&#39;aide de la commande ci-dessous pour démarrer l&#39;instance automatiquement :&lt;br /&gt;&lt;pre&gt;cd /etc/systemd/system&lt;br /&gt;cat &amp;gt;/lib/systemd/system/oradb.service &amp;lt;&amp;lt;EOF&lt;br /&gt;[Unit]&lt;br /&gt;Description=Oracle Database&lt;br /&gt;After=syslog.target network.target&lt;br /&gt;&lt;br /&gt;[Service]&lt;br /&gt;Type=simple&lt;br /&gt;RemainAfterExit=yes&lt;br /&gt;User=oracle&lt;br /&gt;Group=dba&lt;br /&gt;ExecStart=/u01/app/oracle/product/12.1.0/db_1/bin/dbstart /u01/app/oracle/product/12.1.0/db_1&lt;br /&gt;ExecStop=/u01/app/oracle/product/12.1.0/db_1/bin/dbshut /u01/app/oracle/product/12.1.0/db_1&lt;br /&gt;&lt;br /&gt;[Install]&lt;br /&gt;WantedBy=multi-user.target&lt;br /&gt;EOF&lt;br /&gt;&lt;br /&gt;sed -i s/\:N$/:Y/ /etc/oratab&lt;br /&gt;&lt;br /&gt;ln -s /lib/systemd/system/oradb.service /etc/systemd/system/oradb.service&lt;br /&gt;&lt;br /&gt;systemctl daemon-reload&lt;br /&gt;systemctl start oradb.service&lt;br /&gt;systemctl status oradb.service&lt;br /&gt;systemctl enable oradb.service&lt;/pre&gt;&lt;h2&gt;Jouer avec les containers à nouveau&lt;/h2&gt;Maintenant que vous avez une configuration complète, vous pouvez l&#39;arrêter et la cloner à l&#39;aide de la commande &amp;nbsp;lxc-clone. Depuis votre hôte, lancez les commandes ci-dessous : &lt;br /&gt;&lt;pre&gt;lxc-attach -n ol7 -- systemctl disable oradb.service&lt;br /&gt;lxc-stop -n ol7&lt;br /&gt;lxc-clone -s -B btrfs ol7 pink-panther&lt;br /&gt;lxc-start -n ol7 -d -o /container/ol7_info.log -l INFO&lt;br /&gt;sleep 2&lt;br /&gt;lxc-attach -n ol7 -- systemctl enable oradb.service&lt;br /&gt;lxc-attach -n ol7 -- systemctl start oradb.service&lt;br /&gt;lxc-attach -n ol7 -- ps -fu oracle&lt;br /&gt;&lt;br /&gt;lxc-start -n pink-panther -d -o /container/pink-panther.log -l INFO&lt;br /&gt;MYIPADDR=`lxc-info -n pink-panther |grep &quot;IP:&quot; |awk &#39;{print $2}&#39;`&lt;br /&gt;lxc-attach -n pink-panther -- sed -i /pink-panther/d /etc/hosts&lt;br /&gt;lxc-attach -n pink-panther -- bash -c &quot;echo \&quot;$MYIPADDR pink-panther\&quot;  &amp;gt;&amp;gt;/etc/hosts&quot;&lt;br /&gt;lxc-attach -n pink-panther -- sed -i s/ol7/pink-panther/ \&lt;br /&gt;    /u01/app/oracle/product/12.1.0/db_1/network/admin/listener.ora&lt;br /&gt;lxc-attach -n pink-panther -- systemctl enable oradb.service&lt;br /&gt;lxc-attach -n pink-panther -- systemctl start oradb.service&lt;br /&gt;lxc-attach -n pink-panther -- ps -fu oracle&lt;br /&gt;lxc-attach  -n pink-panther&lt;/pre&gt;Une fois l&#39;opération réalisée, vous pouvez simplement détruire et déréférencer le stockage à l&#39;aide de la seule commande ci-dessous : &lt;br /&gt;&lt;pre&gt;lxc-destroy -f -n pink-panther&lt;/pre&gt;Vous pouvez vérifier que le système de fichiers associé au container a été supprimé :&lt;br /&gt;&lt;pre&gt;ls -ltra /container/pink-panther/rootfs&lt;/pre&gt;Vous pourrez faire bien plus à l&#39;aide de LXC en commençant par gérer les IO ou CPU à l&#39;aide des cgroups. Je serais curieux de connaître les DBA qui utiliseront cette technologie avec leur instance de base de données bientôt...</content><link rel='replies' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/2380133131458346866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.resetlogs.fr/2016/01/oracle-db12c-linux-lxc.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/2380133131458346866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/2380133131458346866'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/2016/01/oracle-db12c-linux-lxc.html' title='Oracle database 12c, Oracle Linux 7.x et LXC'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8409134974669171624.post-9213488209414216048</id><published>2015-05-31T03:52:00.003-07:00</published><updated>2015-05-31T03:52:50.439-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Automation"/><category scheme="http://www.blogger.com/atom/ns#" term="AWS"/><category scheme="http://www.blogger.com/atom/ns#" term="Kickstart"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Packer"/><title type='text'>Construire des AMI Oracle Linux avec Packer</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-uhJopYBT8-o/VWrMzCbFlDI/AAAAAAAALuM/THQN28ZsfDM/s1600/dreamstime_xs_42969705.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;http://1.bp.blogspot.com/-uhJopYBT8-o/VWrMzCbFlDI/AAAAAAAALuM/THQN28ZsfDM/s320/dreamstime_xs_42969705.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Inutile d&#39;expliquer pourquoi Amazon Web Services est une plateforme intéressante pour faire tourner Oracle. Le numéro 1 des fournisseurs IaaS est aussi l&#39;un des seuls qui bénéficie du statut de&amp;nbsp;&lt;a href=&quot;http://www.oracle.com/us/corporate/pricing/cloud-licensing-070579.pdf&quot;&gt;Oracle Authorized Cloud Environments&lt;/a&gt;. Vous pouvez utiliser vos propres licences Oracle (BYOL) sur Amazon EC2 et RDS. Vous pouvez payer uniquement pour les configurations provisionnées car Oracle les reconnait comme du &quot;hard partitioning&quot;.&lt;br /&gt;&lt;br /&gt;Evidemment, il y a quelques limites à ces configurations, comme celle qui concerne les core/thread pointée par&amp;nbsp;&lt;a href=&quot;http://www.pythian.com/blog/virtual-cpus-with-amazon-web-services/&quot;&gt;Marc Fielding sur le blog de Pythian&lt;/a&gt;&amp;nbsp;ou encore le fait que vous ne pouvez pas utiliser RAC. Mais c&#39;est un terrain de jeu fantastique pour utiliser les technologies Oracle, vos applications qui tournent sur Oracle ou n&#39;importe quelle type d&#39;application Oracle, y compris JD Edwards, Peoplesoft, Oracle E-Business Suite et bien d&#39;autres... En plus, Amazon RDS for Oracle offre un modèle attractif pay-per-use et &quot;à l&#39;heure&quot; pour les bases de données SE1.  &lt;br /&gt;&lt;br /&gt;D&#39;un autre côté, Oracle Linux est probablement le meilleur système d&#39;exploitation pour Oracle, que ce soit sur AWS EC2 comme sur n&#39;importe quelle plateforme x86 64 bits: il ne nécessite généralement d&#39;installer qu&#39;un unique RPM pour assurer tous les pré-requis pour les logiciels Oracle ; il est gratuit et vous n&#39;avez pas besoin de supporter toutes vos instances de manière identique comme indiqué dans la section Service Levels du document &quot;&lt;a href=&quot;http://www.oracle.com/us/support/library/enterprise-linux-support-policies-069172.pdf&quot; target=&quot;_blank&quot;&gt;Oracle Linux and Oracle VM Support Policies&lt;/a&gt;&quot;.&amp;nbsp;Enfin, il est 100% compatible avec Redhat Enterprise Linux et vous pouvez même récupérer une AMIs publiées par&amp;nbsp;&lt;a href=&quot;https://aws.amazon.com/marketplace/pp/B00TT8BWHO&quot; target=&quot;_blank&quot;&gt;Oracle sur la Marketplace AWS&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Cet article présente un moyen simple et rapide pour créer des AMI Oracle Linux à partir d&#39;export Open Virtual Format (OVF) à l&#39;aide de l&#39;utilitaire AWS VM Import/Export... Il s&#39;appuie sur Virtualbox, Packer.io et Kickstart.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;Cloud-init et le noyau compatible Redhat&lt;/h2&gt;Avant de vous précipiter pour créer une AMI, il y a 2 choses auxquelles il faut être attentif : la première est que pour qu&#39;Oracle Linux installe la clé publique que vous fournissez lorsque vous démarrez une instance sur EC2, il faut installer et configurer le RPM cloud-init. La bonne nouvelle est que le repository EPEL Repository contient le précieux paquet ainsi que toutes les dépendances sur lesquelles il s&#39;appuie. Si vous ne voulez pas enregistrer le repository dans votre configuration YUM, vous pouvez directement télécharger l&#39;ensemble des fichiers nécessaires. Le tableau ci-dessous référence tous les liens dont vous avez besoin pour une distribution Oracle Linux 6: &lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Paquet/Description&lt;/th&gt;&lt;th&gt;Téléchargement&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;cloud-init (&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/cloud-init.html&quot;&gt;epel6&lt;/a&gt;)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/cloud-init-0.7.4-2.el6.noarch.rpm&quot;&gt;RPM Url&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;python-six (&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/python-six.html&quot;&gt;epel6&lt;/a&gt;)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/python-six-1.7.3-1.el6.noarch.rpm&quot;&gt;RPM Url&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;python-requests (&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/python-requests.html&quot;&gt;epel6&lt;/a&gt;)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/python-requests-1.1.0-4.el6.noarch.rpm&quot;&gt;RPM Url&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;python-prettytable (&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/python-prettytable.html&quot;&gt;epel6&lt;/a&gt;)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/python-prettytable-0.7.2-1.el6.noarch.rpm&quot;&gt;RPM Url&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;python-jsonpointer (&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/python-jsonpointer.html&quot;&gt;epel6&lt;/a&gt;)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/python-jsonpointer-1.0-3.el6.noarch.rpm&quot;&gt;RPM Url&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;python-chardet (&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/python-chardet.html&quot;&gt;epel6&lt;/a&gt;)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/python-chardet-2.0.1-1.el6.noarch.rpm&quot;&gt;RPM Url&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;python-ordereddict (&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/python-ordereddict.html&quot;&gt;epel6&lt;/a&gt;)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/python-ordereddict-1.1-2.el6.noarch.rpm&quot;&gt;RPM Url&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;python-urllib3 (&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/python-urllib3.html&quot;&gt;epel6&lt;/a&gt;)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/python-urllib3-1.5-7.el6.noarch.rpm&quot;&gt;RPM Url&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;python-backports-ssl_match_hostname (&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/python-backports-ssl_match_hostname.html&quot;&gt;epel6&lt;/a&gt;)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/python-backports-ssl_match_hostname-3.4.0.2-4.el6.noarch.rpm&quot;&gt;RPM Url&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;python-backports (&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/python-backports.html&quot;&gt;epel6&lt;/a&gt;)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/python-backports-1.0-3.el6.x86_64.rpm&quot;&gt;RPM Url&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;python-argparse (&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/python-argparse.html&quot;&gt;epel6&lt;/a&gt;)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/python-argparse-1.2.1-2.el6.noarch.rpm&quot;&gt;RPM Url&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;python-jsonpatch (&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/python-jsonpatch.html&quot;&gt;epel6&lt;/a&gt;)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/python-jsonpatch-1.2-2.el6.noarch.rpm&quot;&gt;RPM Url&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;python-boto (&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/python-boto.html&quot;&gt;epel6&lt;/a&gt;)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/python-boto-2.34.0-4.el6.noarch.rpm&quot;&gt;RPM Url&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;python-rsa (&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/python-rsa.html&quot;&gt;epel6&lt;/a&gt;)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://dl.fedoraproject.org/pub/epel/6/x86_64/python-rsa-3.1.1-5.el6.noarch.rpm&quot;&gt;RPM Url&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;La seconde chose à laquelle il faut faire attention est le fait que parmi plusieurs contrôles, l&#39;Import/Export de VM AWS exécute une instance de test avant de créer une AMI et vérifie la version du noyau. Pour passer ce test, vous devez configurer grub pour démarrer le noyau compatible Redhat (RHCK) avant l&#39;import. Une fois l&#39;AMI créée, vous pourrez modifier la configuration Grub et basculer sur le noyau Oracle Unbreakable Enterprise Kernel (UEK).&lt;br /&gt;&lt;h2&gt;Kickstart, Packer.io et VirtualBox&lt;/h2&gt;&lt;div&gt;Si vous souhaiter créer une AMI une seule fois, vous pouvez simplement démarrer Virtualbox, procéder à une installation d&#39;Oracle Linux, exporter la machine virtuelle sous la forme d&#39;un ensemble de fichiers Open Virtualization Format et passer à la section &quot;AWS VM Import/Export&quot; de cet article. Néanmoins, si vous commencez à utiliser cet chemin, il y a fort à parier que vous voudrez bientôt automatiser la création des images... Kickstart,&amp;nbsp;&lt;a href=&quot;https://www.packer.io/&quot; target=&quot;_blank&quot;&gt;Packer&lt;/a&gt;&amp;nbsp;et Virtualbox sont la méthode la plus simple et la plus efficace que je connais pour automatiser ces opérations. Il suffit de procéder comme décrit ci-dessous.&lt;/div&gt;&lt;h3&gt;Utiliser un fichier ISO personnalisé pour Oracle Linux&lt;/h3&gt;La première étape pour automatiser vos installations Oracle Linux consiste à utiliser un fichier ISO pré-configuré comme décrit dans l&#39;article &quot;&lt;a href=&quot;http://www.resetlogs.fr/2015/05/custom-ol6-iso.html&quot; target=&quot;_blank&quot;&gt;Personnaliser vos ISO Redhat/Oracle Linux&lt;/a&gt;&quot;. Yous trouverez un exemple de fichier Kickstart associé ci-dessous :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Il s&#39;appuie sur une configuration DHCP puisque c&#39;est ainsi que AWS fonctionne&lt;/li&gt;&lt;li&gt;Il crée un utilisateur ec2-user et l&#39;ajoute dans le fichier sudoers. Cet utilisateur utilisé par AWS pour se connecter mais aussi par Packer pour exécuter les différentes étapes de personnalisation une fois l&#39;installation réalisée&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;cdrom&lt;br /&gt;lang en_US.UTF-8&lt;br /&gt;keyboard fr&lt;br /&gt;network --onboot=yes --device=eth0 --bootproto=dhcp --noipv6&lt;br /&gt;rootpw manager&lt;br /&gt;firewall --service=ssh&lt;br /&gt;authconfig --enableshadow --passalgo=sha512&lt;br /&gt;selinux --disabled&lt;br /&gt;timezone Europe/Paris --isUtc&lt;br /&gt;bootloader --location=mbr --append=&quot;rhgb quiet&quot;&lt;br /&gt;text&lt;br /&gt;zerombr&lt;br /&gt;clearpart --all --initlabel&lt;br /&gt;autopart&lt;br /&gt;reboot --eject&lt;br /&gt;user --name=ec2-user --homedir=/home/ec2-user --password=ec2-user --shell=/bin/bash --uid=1501&lt;br /&gt; &lt;br /&gt;%packages&lt;br /&gt;@base&lt;br /&gt;oracle-rdbms-server-12cR1-preinstall&lt;br /&gt;zip&lt;br /&gt;unzip&lt;br /&gt;%end&lt;br /&gt;&lt;br /&gt;%post&lt;br /&gt;echo &quot;ec2-user ALL=(ALL)  NOPASSWD:ALL&quot; &amp;gt;&amp;gt; /etc/sudoers&lt;br /&gt;%end&lt;/pre&gt;&lt;div&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;Note Importante:&lt;br /&gt;Si vous désirez déployer votre AMI sur AWS vraiment, assurez-vous que les mots de passe sont renforcés et que vous ne pouvez pas vous connecter à l&#39;aide d&#39;un mot de passe via SSH. Cloud-init réalise une partie de cette configuration en interdisant les accès distant à l&#39;aide de mots de passe ; il ne change pas, toutefois, le mot de passe de l&#39;utilisateur root.&lt;/blockquote&gt;&lt;/div&gt;&lt;h3&gt;Packer et Virtualbox&lt;/h3&gt;Si ce n&#39;est pas déjà fait, installez Packer et Virtualbox puis créez votre fichier ISO personalisé. Vous pourrez alors simplement automatiser la création de votre image à l&#39;aide de 2 fichiers complémentaires.le fichier&amp;nbsp;&lt;code&gt;ol66.json&lt;/code&gt; disponible ci-dessous contient la configuration du &quot;builder&quot; Packer avec les paramètres ci-dessous :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;type doit être positionné à virtualbox-iso pour construire un export OVF&lt;/li&gt;&lt;li&gt;iso_url,&amp;nbsp;iso_checksum et iso_checksum_type pointent vers le fichier ISO créé précédemment&lt;/li&gt;&lt;li&gt;ssh_username et ssh_password définissent comment Packer se connecte à ma machine virtuelle pour exécuter ses scripts et certaines commandes telles que shutdown_command&lt;/li&gt;&lt;li&gt;ssh_wait_timeout definit le temps attendu en tentant de se connecter via SSH à la VM et avant de faire échouer l&#39;installation&lt;/li&gt;&lt;li&gt;output_directory et vm_name définissent le répertoire de sauvegarde et le nom de l&#39;image&lt;/li&gt;&lt;li&gt;guest_additions_mode positioné à disable évite l&#39;installation des VirtualBox Guest Additions&lt;/li&gt;&lt;li&gt;disk_size précise la taille du disque système par défaut&lt;/li&gt;&lt;li&gt;provisioners définit les scripts et autres tâches qui doivent être exécutés une fois la configuration en place et avant son export&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;cat ol66.json &lt;br /&gt;&lt;i&gt;{&lt;br /&gt;  &quot;builders&quot;: [&lt;br /&gt;    {&lt;br /&gt;      &quot;type&quot;: &quot;virtualbox-iso&quot;,&lt;br /&gt;      &quot;guest_os_type&quot;: &quot;Oracle_64&quot;,&lt;br /&gt;      &quot;iso_url&quot;: &quot;file:///home/resetlogs/distribs/linux/OL66-resetlogs.iso&quot;,&lt;br /&gt;      &quot;iso_checksum&quot;: &quot;e3412215bcee9b825ecfc9376329aa5b&quot;,&lt;br /&gt;      &quot;iso_checksum_type&quot;: &quot;md5&quot;,&lt;br /&gt;      &quot;ssh_username&quot;: &quot;ec2-user&quot;,&lt;br /&gt;      &quot;ssh_password&quot;: &quot;ec2-user&quot;,&lt;br /&gt;      &quot;ssh_wait_timeout&quot;: &quot;900s&quot;,&lt;br /&gt;      &quot;shutdown_command&quot;: &quot;sudo -n shutdown -P now&quot;,&lt;br /&gt;      &quot;vm_name&quot;: &quot;ol66&quot;,&lt;br /&gt;      &quot;output_directory&quot;: &quot;ol66&quot;,&lt;br /&gt;      &quot;guest_additions_mode&quot;: &quot;disable&quot;,&lt;br /&gt;      &quot;disk_size&quot;: &quot;8000&quot;&lt;br /&gt;    }&lt;br /&gt;  ],&lt;br /&gt;  &quot;provisioners&quot;: [&lt;br /&gt;    {&lt;br /&gt;      &quot;type&quot;: &quot;shell&quot;,&lt;br /&gt;      &quot;script&quot;: &quot;scripts/ol66.sh&quot;&lt;br /&gt;    }&lt;br /&gt;  ]  &lt;br /&gt;}&lt;/i&gt;&lt;br /&gt;&lt;/pre&gt;Le script de post-configuration ol66.sh effectue les opérations suivantes :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;il nettoie la configuration réseau&lt;/li&gt;&lt;li&gt;il change le contenu du fichier grub.conf pour démarrer sur le noyau Redhat Compatible&lt;/li&gt;&lt;li&gt;il installe et configure le rpm cloud-init&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;cat scripts/ol66.sh&lt;br /&gt;&lt;i&gt;#!/bin/bash&lt;br /&gt;#&lt;br /&gt;# Update RPMs with the latest release&lt;br /&gt;#&lt;br /&gt;sudo -n yum -y update&lt;br /&gt;#&lt;br /&gt;# Clean the configuration and switch to RHCK before you upload the&lt;br /&gt;# OVF file to AWS...&lt;br /&gt;#&lt;br /&gt;sudo -n sed -i &#39;/SUBSYSTEM/d&#39; /etc/udev/rules.d/70-persistent-net.rules&lt;br /&gt;sudo -n sed -i &#39;/#\ PCI\ device/d&#39; /etc/udev/rules.d/70-persistent-net.rules&lt;br /&gt;sudo -n sed -i &#39;/HWADDR/d&#39; /etc/sysconfig/network-scripts/ifcfg-eth0&lt;br /&gt;sudo -n sed -i &#39;/UUID/d&#39; /etc/sysconfig/network-scripts/ifcfg-eth0&lt;br /&gt;sudo -n head -n 15 /boot/grub/grub.conf&lt;br /&gt;echo &quot;.........&quot;&lt;br /&gt;sudo -n sed -i &#39;s/^default.*$/default=0/g&#39; /boot/grub/menu.lst&lt;br /&gt;sudo -n sed -i &#39;s/^default.*$/default=0/g&#39; /boot/grub/grub.conf&lt;br /&gt;echo &quot;.........&quot;&lt;br /&gt;sudo -n head -n 15 /boot/grub/grub.conf&lt;br /&gt;#&lt;br /&gt;# Download and install Cloud-Init and required files&lt;br /&gt;#     Note:&lt;br /&gt;#     Future cloud-init should require python-oauthlib-0.6.0-4.el6.noarch.rpm,&lt;br /&gt;#     python-crypto2.6-2.6.1-2.el6.x86_64.rpm and pyserial-2.6-5.el6.noarch.rpm&lt;br /&gt;#      &lt;br /&gt;EPEL6_URL=https://dl.fedoraproject.org/pub/epel/6/x86_64&lt;br /&gt;for i in cloud-init-0.7.4-2.el6.noarch.rpm \&lt;br /&gt;         python-six-1.7.3-1.el6.noarch.rpm \&lt;br /&gt;         python-requests-1.1.0-4.el6.noarch.rpm \&lt;br /&gt;         python-prettytable-0.7.2-1.el6.noarch.rpm \&lt;br /&gt;         python-argparse-1.2.1-2.el6.noarch.rpm \&lt;br /&gt;         python-jsonpatch-1.2-2.el6.noarch.rpm \&lt;br /&gt;         python-boto-2.34.0-4.el6.noarch.rpm \&lt;br /&gt;         python-rsa-3.1.1-5.el6.noarch.rpm \&lt;br /&gt;         python-jsonpointer-1.0-3.el6.noarch.rpm \&lt;br /&gt;         python-chardet-2.0.1-1.el6.noarch.rpm \&lt;br /&gt;         python-crypto2.6-2.6.1-2.el6.x86_64.rpm \&lt;br /&gt;&lt;/i&gt;&lt;i&gt;         python-ordereddict-1.1-2.el6.noarch.rpm \&lt;/i&gt;&lt;/pre&gt;&lt;pre&gt;&lt;i&gt;         python-urllib3-1.5-7.el6.noarch.rpm \&lt;br /&gt;         python-backports-1.0-3.el6.x86_64.rpm \&lt;br /&gt;         python-backports-ssl_match_hostname-3.4.0.2-4.el6.noarch.rpm; do&lt;br /&gt;wget $EPEL6_URL/$i &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;RESULT=$?&lt;br /&gt;if [ &quot;$RESULT&quot; -eq &quot;0&quot; ]; then&lt;br /&gt;   echo &quot;$i successfully downloaded...&quot;&lt;br /&gt;else&lt;br /&gt;   echo &quot;$i error downloading...&quot;&lt;br /&gt;fi&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;sudo -n yum -y install *.rpm&lt;br /&gt;sudo -n sed -i &#39;s/name: cloud-user/name: ec2-user/g&#39; /etc/cloud/cloud.cfg&lt;br /&gt;rm *.rpm&lt;/i&gt;&lt;/pre&gt;Construire l&#39;AMI consiste alors à lancer la simple commande ci-dessous :&lt;br /&gt;&lt;pre&gt;packer build ol66.json&lt;/pre&gt;&lt;h2&gt;AWS VM Import/Export&lt;/h2&gt;Afin d&#39;ajouter l&#39;image aux autres AMI sur EC2, vous devez utiliser l&#39;utilitaire AWS VM Import/Export. Assurez-vous que vous avez installé le&amp;nbsp;&lt;a href=&quot;http://docs.aws.amazon.com/cli/latest/userguide/installing.html&quot; target=&quot;_blank&quot;&gt;Client AWS en mode ligne de commande comme décrit dans la documentation&lt;/a&gt;. Supposant que vous avez déjà un bucket S3 correctement configuré et nommé , oraclelinuxvms vous :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Chargerez le fichier contenant le disque de votre image dans le bucket S3&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;aws s3 cp ol66-disk1.vmdk s3://oraclelinuxvms/ol66-disk1.vmdk&lt;br /&gt;&lt;i&gt;upload: ./ol66-disk1.vmdk to s3://oraclelinuxvms/ol66-disk1.vmdk&lt;/i&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Importerez l&#39;AMI depuis S3 dans EC2&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;aws ec2 import-image --cli-input-json &quot;{  \&quot;Description\&quot;: \&quot;Oracle Linux VMDKs\&quot;, \&quot;DiskContainers\&quot;: [ { \&quot;Description\&quot;: \&quot;Main Disk\&quot;, \&quot;UserBucket\&quot;: { \&quot;S3Bucket\&quot;: \&quot;oraclelinuxvms\&quot;, \&quot;S3Key\&quot; : \&quot;ol66-disk1.vmdk\&quot; } } ] }&quot;&lt;br /&gt;&lt;i&gt;{&lt;br /&gt;    &quot;Status&quot;: &quot;active&quot;, &lt;br /&gt;    &quot;Description&quot;: &quot;Oracle Linux VMDKs&quot;, &lt;br /&gt;    &quot;Progress&quot;: &quot;2&quot;, &lt;br /&gt;    &quot;SnapshotDetails&quot;: [&lt;br /&gt;        {&lt;br /&gt;            &quot;UserBucket&quot;: {&lt;br /&gt;                &quot;S3Bucket&quot;: &quot;easyvms&quot;, &lt;br /&gt;                &quot;S3Key&quot;: &quot;ol66-disk1.vmdk&quot;&lt;br /&gt;            }, &lt;br /&gt;            &quot;DiskImageSize&quot;: 0.0&lt;br /&gt;        }&lt;br /&gt;    ], &lt;br /&gt;    &quot;StatusMessage&quot;: &quot;pending&quot;, &lt;br /&gt;    &quot;ImportTaskId&quot;: &quot;import-ami-fh2lc48d&quot;&lt;br /&gt;}&lt;/i&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Superviserez l&#39;import jusqu&#39;à son succès&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;aws ec2 describe-import-image-tasks --import-task-ids import-ami-fh2lc48d&lt;br /&gt;&lt;i&gt;{&lt;br /&gt;    &quot;ImportImageTasks&quot;: [&lt;br /&gt;        {&lt;br /&gt;            &quot;Status&quot;: &quot;completed&quot;, &lt;br /&gt;            &quot;LicenseType&quot;: &quot;BYOL&quot;, &lt;br /&gt;            &quot;Description&quot;: &quot;Oracle Linux VMDKs&quot;, &lt;br /&gt;            &quot;ImageId&quot;: &quot;ami-0b07757c&quot;, &lt;br /&gt;            &quot;Platform&quot;: &quot;Linux&quot;, &lt;br /&gt;            &quot;Architecture&quot;: &quot;x86_64&quot;, &lt;br /&gt;            &quot;SnapshotDetails&quot;: [&lt;br /&gt;                {&lt;br /&gt;                    &quot;DeviceName&quot;: &quot;/dev/sda1&quot;, &lt;br /&gt;                    &quot;Description&quot;: &quot;Main Disk&quot;, &lt;br /&gt;                    &quot;Format&quot;: &quot;VMDK&quot;, &lt;br /&gt;                    &quot;DiskImageSize&quot;: 1187275776.0, &lt;br /&gt;                    &quot;SnapshotId&quot;: &quot;snap-fa88530e&quot;, &lt;br /&gt;                    &quot;UserBucket&quot;: {&lt;br /&gt;                        &quot;S3Bucket&quot;: &quot;easyvms&quot;, &lt;br /&gt;                        &quot;S3Key&quot;: &quot;ol66-disk1.vmdk&quot;&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            ], &lt;br /&gt;            &quot;ImportTaskId&quot;: &quot;import-ami-fh2lc48d&quot;&lt;br /&gt;        }&lt;br /&gt;    ]&lt;br /&gt;}&lt;/i&gt;&lt;/pre&gt;Le nom de l&#39;AMI est l&#39;identifiant de l&#39;import. Vous pouvez interroger la liste des AMI et découvrir celle nouvellement créée à l&#39;aide de la commande ci-dessous :  &lt;br /&gt;&lt;pre&gt;aws ec2 describe-images --filters Name=name,Values=import-ami-fh2lc48d&lt;/pre&gt;Malheureusement, celle-ci s&#39;appuie sur le noyau Redhat. Pour la basculer sur UEK, créez une instance EC2, modifiez le fichier grub.conf et recréer une AMI depuis cette instance comme ci-dessous :&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-wPF7csJxnrk/VWrNFQ-5_5I/AAAAAAAALuU/Qk3nquPaO-0/s1600/Selection_511.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;338&quot; src=&quot;http://1.bp.blogspot.com/-wPF7csJxnrk/VWrNFQ-5_5I/AAAAAAAALuU/Qk3nquPaO-0/s640/Selection_511.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;Evidemment, cette étape peut également et facilement être automatisée avec le client AWS ou avec Packer et son builder nommé amazon-ebs.&lt;br /&gt;&lt;h2&gt;Conclusion et plus...&amp;nbsp;&lt;/h2&gt;Une fois que vous avez créé votre AMI, créer et démarer des instances EC2 ne prend que quelques minutes. Vous pouvez ensuite y accèder avec votre clé privée. Vérifiez par vous-même, votre instance Oracle Linux pré-cuisinée et qui fonctionne sur Amazon Web Services :&lt;br /&gt;&lt;pre&gt;uname -a&lt;br /&gt;Linux ip-172-31-35-51 &lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;3.8.13-68.2.2.el6uek.x86_64&lt;/span&gt;&lt;/b&gt; #2 SMP Tue May 12 15:10:51 PDT 2015 x86_64 x86_64 x86_64 GNU/Linux&lt;/pre&gt;&lt;br /&gt;Evidemment, c&#39;est juste un début ! Etre capable de construire des AMIs réduit le temps nécessaire à la configuration de vos instances après leur démarrage. Cela permet de réduire, par un facteur d&#39;échelle, le temps nécessaire pour déployer de nouveux environnements. Sans oublier que c&#39;est une bonne façon de réduire les erreurs quand on compare cette méthode à certaines méthodes de gestion de configuration. Cela peut être clé pour certains scénarios comme la construction d&#39;un Plan de Reprise d&#39;Activité Oracle ou la construction d&#39;environnements de test à la demande. Combinée aux modes d&#39;installation silencieux d&#39;Oracle, cette méthode sert de base pour des déploiements rapides et sécurisés de vos logiciels.</content><link rel='replies' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/9213488209414216048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.resetlogs.fr/2015/05/oracle-linux-aws-ami.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/9213488209414216048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/9213488209414216048'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/2015/05/oracle-linux-aws-ami.html' title='Construire des AMI Oracle Linux avec Packer'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-uhJopYBT8-o/VWrMzCbFlDI/AAAAAAAALuM/THQN28ZsfDM/s72-c/dreamstime_xs_42969705.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8409134974669171624.post-3146863235228322034</id><published>2015-05-25T12:36:00.000-07:00</published><updated>2015-05-25T12:36:34.181-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Automation"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Provisioning"/><title type='text'>Personnaliser vos ISO Redhat/Oracle Linux 6</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-vX1GT6-t2DQ/U8y3Z6w-ySI/AAAAAAAAJL8/SvgytIFCxI4/s1600/dreamstime_xs_26552880.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;133&quot; src=&quot;http://2.bp.blogspot.com/-vX1GT6-t2DQ/U8y3Z6w-ySI/AAAAAAAAJL8/SvgytIFCxI4/s1600/dreamstime_xs_26552880.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Réaliser une installation complète de Redhat/Oracle Linux en démarrant depuis un fichier ISO est très élégant. C&#39;est, par exemple, un moyen simple et consistent pour démarrer et personnaliser des machines virtuelles VirtualBox, VMWare ou Parallels à l&#39;aide de &lt;a href=&quot;http://www.packer.io/&quot; target=&quot;_blank&quot;&gt;Packer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Vous trouverez un exemple complet de personnalisation d&#39;un ISO pour Redhat/Oracle Linux 7 dans &quot;&lt;a href=&quot;http://www.resetlogs.fr/2014/07/ol-custom-iso-part1.html&quot; target=&quot;_blank&quot;&gt;Personnaliser cdroms, ISOs et USBs Redhat/Oracle Linux&lt;/a&gt;&quot;. J&#39;ai utilisé la même méthode avec la version 6 d&#39;Oracle Linux cette semaine et, comme vous pouvez vous y attendre, les paramètres ont quelque peu changé ! C&#39;est la raison pour laquelle vous trouverez un exemple complet ci-dessous. Cela ne vous prendra pas plus de 15 minutes pour personnaliser votre fichier ISO et 5 de plus pour réaliser une nouvelle installation...&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;Extraire la distribution&lt;/h2&gt;Pour personnaliser une distribution, vous devez la télécharger et l&#39;extraire dans un répertoire. Utilisez un répertoire&amp;nbsp;&lt;code&gt;OL6&lt;/code&gt;&amp;nbsp;ci-dessous en supposant que la distribution originale est contenue dans le fichier &lt;code&gt;OracleLinux66.iso&lt;/code&gt; : &lt;br /&gt;&lt;pre&gt;mkdir /tmp/iso&lt;br /&gt;&lt;br /&gt;sudo mount -o loop OracleLinux66.iso /tmp/iso&lt;br /&gt;[sudo] password for gregory: &lt;br /&gt;mount: /dev/loop0 is write-protected, mounting read-only&lt;br /&gt;&lt;br /&gt;mkdir OL6&lt;br /&gt;sudo cp -Rp /tmp/iso OL6&lt;br /&gt;sudo umount /tmp/iso&lt;br /&gt;&lt;/pre&gt;&lt;blockquote&gt;Note:&lt;br /&gt;Assurez-vous que vous gardez bien les fichiers &lt;code&gt;.treeinfo&lt;/code&gt; et &lt;code&gt;.discinfo&lt;/code&gt; à la racine du répertoire copié.&lt;/blockquote&gt;&lt;h2&gt;Ajouter un fichier kickstart&lt;/h2&gt;Pour personnaliser cet ISO, ajoutez un fichier kickstart à la racine de la distribution. Vous pourrez alors gérer la plupart des aspects de l&#39;installation à l&#39;aide de ce fichier et grace &lt;a href=&quot;https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-kickstart-installations.html&quot; target=&quot;_blank&quot;&gt;aux différentes directives &amp;nbsp;kickstart&lt;/a&gt;. Si ce n&#39;est pas possible, vous pourrez toujours déployer et exécuter des scripts spécifiques. Vous trouverez ci-dessous un exemple de configuration qui :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;réalise l&#39;installation depuis le lecteur de cdrom&lt;/li&gt;&lt;li&gt;configure le réseau en DHCP&lt;/li&gt;&lt;li&gt;change le clavier en français&lt;/li&gt;&lt;li&gt;défini &quot;manager&quot; comme mot de passe root&lt;/li&gt;&lt;li&gt;désactive SELinux&lt;/li&gt;&lt;li&gt;positionne la timezone&lt;/li&gt;&lt;li&gt;efface le contenu de /dev/sda et installe linux avec un &quot;layout&quot; par défaut&lt;/li&gt;&lt;li&gt;n&#39;exédute pas le programme de configuration initiale&lt;/li&gt;&lt;li&gt;redémarre la VM en éjectant préalablement le DVD&lt;/li&gt;&lt;li&gt;ajoute certains RPMs&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;cd OL6&lt;br /&gt;sudo cat ks.cfg &lt;br /&gt;&lt;i&gt;install&lt;br /&gt;cdrom&lt;br /&gt;lang en_US.UTF-8&lt;br /&gt;keyboard fr&lt;br /&gt;network --onboot=yes --device=eth0 --bootproto=dhcp --noipv6&lt;br /&gt;rootpw manager&lt;br /&gt;firewall --service=ssh&lt;br /&gt;authconfig --enableshadow --passalgo=sha512&lt;br /&gt;selinux --disabled&lt;br /&gt;timezone Europe/Paris --isUtc&lt;br /&gt;bootloader --location=mbr --append=&quot;rhgb quiet&quot;&lt;br /&gt;text&lt;br /&gt;zerombr&lt;br /&gt;clearpart --all --initlabel&lt;br /&gt;autopart&lt;br /&gt;reboot --eject&lt;br /&gt; &lt;br /&gt;%packages&lt;br /&gt;@base&lt;br /&gt;oracle-rdbms-server-12cR1-preinstall&lt;br /&gt;zip&lt;br /&gt;unzip&lt;br /&gt;%end&lt;/i&gt;&lt;/pre&gt;&lt;h2&gt;Personnaliser le menu de démarrage&lt;/h2&gt;Vous pouvez ensuite ajouter un menu dans le fichier&amp;nbsp;&lt;code&gt;isolinux/isolinux.cfg&lt;/code&gt; de manière à démarrer l&#39;installation avec le fichier kickstart précédent. Ajoutez la section ci-après dans le fichier:&lt;br /&gt;&lt;pre&gt;label auto&lt;br /&gt;  menu label Oracle Linux 6.6 ^Kickstart install&lt;br /&gt;  menu default&lt;br /&gt;  kernel vmlinuz&lt;br /&gt;  append initrd=initrd.img ks=cdrom:/ks.cfg&lt;/pre&gt;&lt;blockquote&gt;Note:&lt;br /&gt;Il faut supprimer la directive &amp;nbsp;&lt;code&gt;menu default&lt;/code&gt; du menu auquel il était précédemment attaché ; Par ailleurs, pour accéléder l&#39;installation vous pouvez changer la clause&amp;nbsp;&lt;code&gt;timeout 600&lt;/code&gt; en&amp;nbsp;&lt;code&gt;timeout 60&lt;/code&gt;&lt;/blockquote&gt;&lt;h2&gt;Re-packager le fichier ISO&lt;/h2&gt;Pour terminer, créez le fichier ISO à partir du répertoire modifié&amp;nbsp;&lt;code&gt;OL6&lt;/code&gt;&amp;nbsp;:&lt;br /&gt;&lt;pre&gt;sudo  mkisofs -r -T -J -V &quot;OL-6.6 Server.x86_64&quot; \&lt;br /&gt;    -b isolinux/isolinux.bin -c isolinux/boot.cat \&lt;br /&gt;    -no-emul-boot -boot-load-size 4 -boot-info-table \&lt;br /&gt;    -o /tmp/OracleLinux66-new.iso OL6/&lt;br /&gt;&lt;br /&gt;sudo implantisomd5 /tmp/OracleLinux66-new.iso&lt;br /&gt;checkisomd5 /tmp/OracleLinux66-new.iso&lt;/pre&gt;&lt;blockquote&gt;Note:&lt;br /&gt;Si vous n&#39;avez pas accès aux commandes ci-dessus, vérifiez que les RPMs genisoimage et isomd5sum ont bien été installés sur votre système.&lt;/blockquote&gt;&lt;h2&gt;Tester le fichier ISO&lt;/h2&gt;Pour terminer, testez votre installation ainsi que les options associées :&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-cs3LD-5nJ3M/VWN3ujRxFFI/AAAAAAAALtQ/fpkBeewuEO8/s1600/Selection_472.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-cs3LD-5nJ3M/VWN3ujRxFFI/AAAAAAAALtQ/fpkBeewuEO8/s640/Selection_472.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;&lt;i&gt;Bibliographie&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;Redhat Enterprise Linux 6&lt;br /&gt;Installation Guide&lt;br /&gt;&lt;a href=&quot;https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/ch-kickstart2.html&quot;&gt;Chapter 32. Kickstart Installations&lt;/a&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/3146863235228322034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.resetlogs.fr/2015/05/custom-ol6-iso.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/3146863235228322034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/3146863235228322034'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/2015/05/custom-ol6-iso.html' title='Personnaliser vos ISO Redhat/Oracle Linux 6'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-vX1GT6-t2DQ/U8y3Z6w-ySI/AAAAAAAAJL8/SvgytIFCxI4/s72-c/dreamstime_xs_26552880.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8409134974669171624.post-2378286734067313393</id><published>2014-09-17T00:31:00.000-07:00</published><updated>2014-09-17T00:31:10.183-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Automation"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Puppet"/><title type='text'>Installation d&#39;un master et d&#39;un agent Puppet sur Oracle Linux 7</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-TVA1fRvZGco/VBklUOrr71I/AAAAAAAAKAo/sdZjN7oS06M/s1600/dreamstime_xs_43581491.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-TVA1fRvZGco/VBklUOrr71I/AAAAAAAAKAo/sdZjN7oS06M/s200/dreamstime_xs_43581491.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;L&#39;automatisation transforme la manière de gérer des serveurs. Non seulement vous pouvez désormais gérer des centaines de serveurs depuis un point d&#39;accès unique mais vous pouvez évaluer l&#39;impact d&#39;un changement, ordonnancer les modifications vous assurer que vos configurations restent semblables malgré les évolutions. Cela permet d&#39;augmenter de manière significative le niveau de services des applications et des serveurs du fait qu&#39;ils sont désormais tous semblables.&lt;br /&gt;&lt;br /&gt;Pour gérer les configurations Oracle, Puppet est sans doute l&#39;une des meilleures infrastructure d&#39;automatisation. Il est facile à utiliser, largement adopté et vous pouvez trouver des modules prédéfinis pour Oracle sur&amp;nbsp;&lt;a href=&quot;https://forge.puppetlabs.com/tags/oracle&quot; target=&quot;_blank&quot;&gt;Puppet Forge&lt;/a&gt;. Puppet adresse les challenges que vous rencontrerez avec (1) les templates et les images gold qui sont difficiles à faire évoluer une fois déployés ; (2) les gestionnaires de paquets &quot;all-or-nothing&quot; à la yum qui n&#39;autorisent pas le niveau de modification requis par des vrais applications et (3) les scripts personnalisés qui sont d&#39;autant plus complexes à gérer que les configurations des serveurs ne sont pas standardisées.&lt;br /&gt;&lt;br /&gt;Cet article présente les étapes nécessaires à l&#39;installation d&#39;un serveur master et d&#39;un agent Puppet sur Oracle Linux 7.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;Installation d&#39;un serveur Puppet Master&lt;/h2&gt;Vérifiez que votre serveur est sur Internet, qu&#39;il a une adresse IP, que SELinux est désactivé et qu&#39;il est connecté au référentiel YUM d&#39;Oracle :&lt;br /&gt;&lt;pre&gt;hostname&lt;br /&gt;&lt;i&gt;purple&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;cat /etc/hosts&lt;br /&gt;&lt;i&gt;192.168.56.6 purple.resetlogs.com purple&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;grep &quot;^SELINUX=&quot; /etc/selinux/config&lt;br /&gt;&lt;i&gt;SELINUX=disabled&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;cat /etc/yum.repos.d/public-yum-ol7.repo &lt;br /&gt;&lt;i&gt;[ol7_optional_latest]&lt;br /&gt;name=Oracle Linux $releasever Optional Latest ($basearch)&lt;br /&gt;baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL7/optional/latest/$basearch/&lt;br /&gt;gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle&lt;br /&gt;gpgcheck=1&lt;br /&gt;enabled=1&lt;/i&gt;&lt;/pre&gt;Installer le Master Puppet consiste alors à installer quelques RPM :&lt;br /&gt;&lt;pre&gt;yum install http://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm&lt;br /&gt;&lt;br /&gt;yum install puppet-server&lt;/pre&gt;Une fois le serveur Puppet Master Installé, créez l&#39;authorité de certification pour gérer le déploiement et tapez &#39;Ctrl+C&#39; pour arrêter le serveur :&lt;br /&gt;&lt;pre&gt;sudo puppet master --verbose --no-daemonize&lt;br /&gt;&lt;i&gt;Info: Creating a new SSL key for ca&lt;br /&gt;[...]&lt;br /&gt;Notice: Starting Puppet master version 3.6.2&lt;/i&gt;&lt;br /&gt;^C&lt;br /&gt;&lt;i&gt;Notice: Caught INT; calling stop&lt;/i&gt;&lt;/pre&gt;&lt;h2&gt;Configuration d&#39;Apache et de Passenger&lt;/h2&gt;&lt;div&gt;Le Puppet Master inclut le serveur Web de Ruby nommé WEBrick. POur les déploiement en production vous préfèrerez utiliser un serveur HTTP comme celui d&#39;Apache et vous connecterez le Master à l&#39;aide de &lt;a href=&quot;https://docs.puppetlabs.com/guides/passenger.html&quot; target=&quot;_blank&quot;&gt;Passenger comme décrit dans la documentation&lt;/a&gt;:&amp;nbsp;&lt;/div&gt;&lt;pre&gt;yum -y install httpd httpd-devel mod_ssl \&lt;br /&gt;     ruby-devel rubygems gcc openssl-devel \&lt;br /&gt;     libcurl-devel zlib-devel gcc-c++&lt;br /&gt;&lt;br /&gt;gem install rack passenger&lt;/pre&gt;UNe fois Apache et Passenger installés, vous pouvez configurer le module Passenger pour Apache: &lt;br /&gt;&lt;pre&gt;passenger-install-apache2-module&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Welcome to the Phusion Passenger Apache 2 module installer, v4.0.48.&lt;br /&gt;&lt;br /&gt;This installer will guide you through the entire installation process. It&lt;br /&gt;shouldn&#39;t take more than 3 minutes in total.&lt;br /&gt;&lt;br /&gt;Here&#39;s what you can expect from the installation process:&lt;br /&gt;&lt;br /&gt; 1. The Apache 2 module will be installed for you.&lt;br /&gt; 2. You&#39;ll learn how to configure Apache.&lt;br /&gt; 3. You&#39;ll learn how to deploy a Ruby on Rails application.&lt;br /&gt;&lt;br /&gt;Don&#39;t worry if anything goes wrong. This installer will advise you on how to&lt;br /&gt;solve any problems.&lt;br /&gt;&lt;br /&gt;Press Enter to continue, or Ctrl-C to abort.&lt;br /&gt;&lt;br /&gt;--------------------------------------------&lt;br /&gt;&lt;br /&gt;Which languages are you interested in?&lt;br /&gt;&lt;br /&gt;Use &lt;space&gt; to select.&lt;br /&gt;If the menu doesn&#39;t display correctly, press &#39;!&#39;&lt;br /&gt;&lt;br /&gt; ‣ ⬢  Ruby&lt;br /&gt;   ⬢  Python&lt;br /&gt;   ⬡  Node.js&lt;br /&gt;   ⬡  Meteor&lt;br /&gt;&lt;br /&gt;--------------------------------------------&lt;br /&gt;&lt;br /&gt;[...]&lt;br /&gt;&lt;br /&gt;Phusion Passenger is a trademark of Hongli Lai &amp;amp; Ninh Bui.&lt;/space&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Ouvrez le port 8140 sur le serveur Puppet Master :&lt;br /&gt;&lt;pre&gt;firewall-cmd --get-active-zones&lt;br /&gt;&lt;i&gt;public&lt;br /&gt;  interfaces: enp0s3 enp0s8&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;firewall-cmd --add-port=8140/tcp&lt;br /&gt;&lt;i&gt;success&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;firewall-cmd --permanent --add-port=8140/tcp&lt;br /&gt;&lt;i&gt;success&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;firewall-cmd --list-all&lt;br /&gt;&lt;i&gt;public (default, active)&lt;br /&gt;  interfaces: enp0s3 enp0s8&lt;br /&gt;  sources: &lt;br /&gt;  services: dhcpv6-client ssh&lt;br /&gt;  ports: 8140/tcp&lt;br /&gt;  masquerade: no&lt;br /&gt;  forward-ports: &lt;br /&gt;  icmp-blocks: &lt;br /&gt;  rich rules: &lt;/i&gt;&lt;/pre&gt;Créez les répertoires pour l&#39;application : &lt;br /&gt;&lt;pre&gt;mkdir -p /usr/share/puppet/rack/puppetmasterd&lt;br /&gt;mkdir /usr/share/puppet/rack/puppetmasterd/public &lt;br /&gt;mkdir /usr/share/puppet/rack/puppetmasterd/tmp&lt;br /&gt;cp /usr/share/puppet/ext/rack/config.ru /usr/share/puppet/rack/puppetmasterd/&lt;br /&gt;chown puppet:puppet /usr/share/puppet/rack/puppetmasterd/config.ru&lt;/pre&gt;Copiez le fichier &lt;a href=&quot;https://docs.puppetlabs.com/guides/passenger.html#example-vhost-configuration&quot;&gt;de configuration exemple vHost pour Apache&lt;/a&gt;&amp;nbsp;dans le fichier&amp;nbsp;&lt;code&gt;/usr/share/puppet/ext/rack/example-passenger-vhost.conf&lt;/code&gt; puis copiez ce fichier dans&amp;nbsp;&lt;code&gt;/etc/httpd/conf.d/puppetmaster.conf&lt;/code&gt;: &lt;br /&gt;&lt;pre&gt;cp /usr/share/puppet/ext/rack/example-passenger-vhost.conf \&lt;br /&gt;   /etc/httpd/conf.d/puppetmaster.conf&lt;/pre&gt;Recherchez les certificats générés avec le serveur Master Puppet puis modifiez la configuration Apache comme ci-dessous below: &lt;br /&gt;&lt;pre&gt;find /var/lib/puppet/ssl/public_keys -type f&lt;br /&gt;&lt;i&gt;/var/lib/puppet/ssl/public_keys/purple.resetlogs.com.pem&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;find /var/lib/puppet/ssl/certs -type f&lt;br /&gt;&lt;i&gt;/var/lib/puppet/ssl/certs/ca.pem&lt;br /&gt;/var/lib/puppet/ssl/certs/purple.resetlogs.com.pem&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;diff /usr/share/puppet/ext/rack/puppetmasterd.conf \&lt;br /&gt;     /etc/httpd/conf.d/puppetmaster.conf                        &lt;br /&gt;&lt;i&gt;12a13,15&lt;br /&gt;&amp;gt; LoadModule passenger_module /usr/local/share/gems/gems/passenger-4.0.48/buildout/apache2/mod_passenger.so&lt;br /&gt;&amp;gt; PassengerRoot /usr/local/share/gems/gems/passenger-4.0.48&lt;br /&gt;&amp;gt; PassengerDefaultRuby /usr/bin/ruby&lt;br /&gt;33,34c36,37&lt;br /&gt;&amp;lt; SSLCertificateFile    /var/lib/puppet/ssl/certs/puppet-server.example.com.pem&lt;br /&gt;&amp;lt; SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/puppet-server.example.pem&lt;br /&gt;---&lt;br /&gt;&amp;gt; SSLCertificateFile    /var/lib/puppet/ssl/certs/purple.resetlogs.com.pem&lt;br /&gt;&amp;gt; SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/purple.resetlogs.com.pem&lt;/i&gt;&lt;/pre&gt;Le serveur MAster Puppet est désormais géré par Apache. Vous pouvez désactiver le service puppetmaster service et activer/démarrer Apache:&lt;br /&gt;&lt;pre&gt;systemctl stop puppetmaster&lt;br /&gt;systemctl disable puppetmaster&lt;br /&gt;systemctl start httpd&lt;br /&gt;systemctl enable httpd&lt;br /&gt;&lt;/pre&gt;&lt;h2&gt;Installation d&#39;un Agent Puppet&lt;/h2&gt;&lt;div&gt;Une fois le master installé, déployer un agent est extrêmement simple. Il s&#39;agit, si votre serveur est connecté à Internet de lancer les 2 commandes ci-dessous :&lt;/div&gt;&lt;pre&gt;yum install http://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm&lt;br /&gt;yum install puppet&lt;/pre&gt;Add a &lt;code&gt;server&lt;/code&gt; property in the &lt;code&gt;[main]&lt;/code&gt; or &lt;code&gt;[agent]&lt;/code&gt; section of the &lt;code&gt;/etc/puppet/puppet.conf&lt;/code&gt; file like below: &lt;br /&gt;&lt;pre&gt;server=purple&lt;/pre&gt;Exécutez puppet en mode test de sorte qu&#39;il s&#39;enregistre sur le master:&lt;br /&gt;&lt;pre&gt;puppet agent -t&lt;/pre&gt;Connectez-vous au Master, affichez et signez les demandes de certificat pour le nouveau serveur : &lt;br /&gt;&lt;pre&gt;puppet cert list&lt;br /&gt;&lt;i&gt;  &quot;yellow.resetlogs.com&quot; (SHA256) 7D:A2:F5:7A:... &lt;br /&gt;&lt;/i&gt;&lt;br /&gt;puppet cert sign yellow.resetlogs.com&lt;br /&gt;&lt;i&gt;Notice: Signed certificate request for yellow.resetlogs.com&lt;br /&gt;Notice: Removing file Puppet::SSL::CertificateRequest yellow...&lt;/i&gt;&lt;/pre&gt;L&#39;agent doit désormais fonctionner correctement avec le Master&amp;nbsp;: &lt;br /&gt;&lt;pre&gt;puppet agent -t&lt;br /&gt;&lt;i&gt;Info: Caching certificate for yellow.resetlogs.com&lt;br /&gt;Info: Caching certificate_revocation_list for ca&lt;br /&gt;Info: Caching certificate for yellow.resetlogs.com&lt;br /&gt;Info: Retrieving pluginfacts&lt;br /&gt;Info: Retrieving plugin&lt;br /&gt;Info: Caching catalog for yellow.resetlogs.com&lt;br /&gt;Info: Applying configuration version &#39;1408374669&#39;&lt;br /&gt;Notice: Finished catalog run in 0.02 seconds&lt;/i&gt;&lt;/pre&gt;&lt;blockquote&gt;Bibliographie:&lt;br /&gt;Pour plus d&#39;information à propos de l&#39;installation de Puppet avec Oracle Linux, reportez-vous à &lt;a href=&quot;https://docs.puppetlabs.com/guides/install_puppet/install_el.html&quot;&gt;Installing Puppet: Red Hat Enterprise Linux (and Derivatives)&lt;/a&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/2378286734067313393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.resetlogs.fr/2014/09/puppet-on-oracle-linux-7-master-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/2378286734067313393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/2378286734067313393'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/2014/09/puppet-on-oracle-linux-7-master-and.html' title='Installation d&#39;un master et d&#39;un agent Puppet sur Oracle Linux 7'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-TVA1fRvZGco/VBklUOrr71I/AAAAAAAAKAo/sdZjN7oS06M/s72-c/dreamstime_xs_43581491.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8409134974669171624.post-1337914418759733662</id><published>2014-08-11T12:59:00.003-07:00</published><updated>2014-08-11T12:59:36.713-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Automation"/><category scheme="http://www.blogger.com/atom/ns#" term="Kickstart"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Provisioning"/><title type='text'>Installer Oracle Linux 7 avec Kickstart, PXE et Dnsmasq</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-vWfZ5loMlmA/U-jtfLDKH1I/AAAAAAAAJaU/2Y_tI-crfK0/s1600/dreamstime_xs_26552880.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-vWfZ5loMlmA/U-jtfLDKH1I/AAAAAAAAJaU/2Y_tI-crfK0/s1600/dreamstime_xs_26552880.jpg&quot; height=&quot;133&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Si vous synchroniser un référentiel Oracle Linux 7 et que vous le publiez à l&#39;aide d&#39;un serveur HTTP, il ne vous manque plus que &lt;code&gt;dnsmasq&lt;/code&gt;&amp;nbsp;et quelques fichiers de configuration pour effectuer des installation de Oracle Linux 7 avec Kickstart et PXE. Ca ne vous prendra pas plus de 15 minutes pour configurer l&#39;ensemble...&lt;br /&gt;&lt;br /&gt;&lt;code&gt;dnsmasq&lt;/code&gt;&amp;nbsp;est l&#39;outil parfait pour cela. Il inclut un serveur DHCP et un serveur TFTP rudimentaire. C&#39;est très simple à configurer.&lt;br /&gt;&lt;br /&gt;Cet article donne un exemple de configuration. Il présente les quelques fichiers nécessaires qui viennent avec la distribution. Vous serez capable d&#39;ajouter ou modifier les autres fichiers qui manquent pour terminer le travail...&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h1&gt;Indexer les référentiels Yum&lt;/h1&gt;D&#39;abord le plus important, installez un serveur HTTP pour publier les RPMs et les autres fichiers. Un des moyens les plus simples consiste à installer le serveur HTTP d&#39;Apache et de le faire pointer vers un répertoire qui contient les référentiels YUM.&lt;br /&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;Note:&lt;br /&gt;Oracle ne fournit pas le fichier de description des groupes Oracle Linux 7 (&lt;code&gt;comps.xml&lt;/code&gt;) sur&amp;nbsp;&lt;a href=&quot;http://public-yum.oracle.com/&quot;&gt;public-yum.oracle.com&lt;/a&gt;. Au lieu de cela, Oracle fournit le fichier&amp;nbsp;&lt;code&gt;comps.xml&lt;/code&gt;&amp;nbsp;par défaut avec le canal &lt;code&gt;ol7_later&lt;/code&gt;. Celui de Redhat. Si vous installez un serveur avec kickstart et ce fichier, vous n&#39;installerez donc pas le noyau&amp;nbsp;&lt;code&gt;UEK3&lt;/code&gt; mais seulement le noyau&amp;nbsp;&lt;code&gt;RHCK&lt;/code&gt;. C&#39;est l&#39;une des raisons pour lesquelles vous préfèrerez utiliser votre propre référentiel. Cela permet d&#39;inclure le fichier &lt;code&gt;comps.xml&lt;/code&gt;&amp;nbsp;de la distribution Oracle Linux, lequel contient les bonnes descriptions de groupes de RPMs .&lt;/blockquote&gt;Pour cet article, je synchronise les 2 référentiels Oracle Linux 7 principaux dans&amp;nbsp;&lt;code&gt;/u01/app/oracle/distribs/oraclelinux&lt;/code&gt; et j&#39;utilise l&#39;alias&amp;nbsp;&lt;code&gt;/yum/&lt;/code&gt; sur mon serveur HTTP Apache 2.4. Le serveurs peut être accédé sur mon réseau à partir de l&#39;adresse&amp;nbsp;&lt;code&gt;192.168.56.2&lt;/code&gt;. Pour être concis, le DNS n&#39;est pas configuré mais faites-le. Le package&amp;nbsp;&lt;code&gt;dnsmasq&lt;/code&gt;&amp;nbsp;permet aussi de réaliser cette configuration. Changez les valeurs en fonction de votre configuration.&lt;br /&gt;&lt;br /&gt;Vous trouverez ci-dessous les lignes ajoutées à&amp;nbsp;&lt;code&gt;/etc/httpd/conf/httpd.conf&lt;/code&gt;&amp;nbsp;pour publier le répertoire sur le serveur Apache :&lt;br /&gt;&lt;pre&gt;&amp;lt;Directory &quot;/u01/app/oracle/distribs/oraclelinux&quot;&amp;gt;&lt;br /&gt;    Options +Indexes +FollowSymLinks&lt;br /&gt;    AllowOverride None&lt;br /&gt;    Require all granted&lt;br /&gt;&amp;lt;/Directory&amp;gt;&lt;br /&gt;&lt;br /&gt;Alias /yum/ /u01/app/oracle/distribs/oraclelinux/&lt;/pre&gt;Pour synchroniser les référentiels, en supposant que le paramétrage est correct dans&amp;nbsp;&lt;span style=&quot;font-family: monospace;&quot;&gt;/etc/yum.repo.d&lt;/span&gt;, lancez la commande&amp;nbsp;&lt;code&gt;reposync&lt;/code&gt;&amp;nbsp;sous l&#39;utilisateur root:&lt;br /&gt;&lt;pre&gt;yum install yum-utils&lt;br /&gt;reposync --repoid=ol7_latest \&lt;br /&gt;         --repoid=ol7_UEKR3 \&lt;br /&gt;         -p /u01/app/oracle/distribs/oraclelinux&lt;/pre&gt;L&#39;installer a besoin d&#39;accéder à ces 2 référentiels comme s&#39;il n&#39;y en avait qu&#39;un. Utilisez la commande &lt;code&gt;createrepo&lt;/code&gt; pour indexer les 2 référentiels simultanément :&lt;br /&gt;&lt;pre&gt;cd /u01/app/oracle/distribs/oraclelinux/&lt;br /&gt;find . -iname &quot;*.rpm&quot; &amp;gt; rpms.lst&lt;br /&gt;createrepo -i rpms.lst .&lt;/pre&gt;La commande précédente crée le répertoire&amp;nbsp;&lt;code&gt;repodata&lt;/code&gt; dans &lt;code&gt;/u01/app/oracle/distribs/oraclelinux&lt;/code&gt; puis indexe tous les RPMs. Vous pouvez tester le serveur web à l&#39;aide de la commande&amp;nbsp;&lt;code&gt;curl http://192.168.56.2/yum/&lt;/code&gt; depuis un autre serveur sur le même réseau. Assurez-vous qu&#39;il n&#39;y a pas de règle qui bloque le port 80 dans le firewall. Si c&#39;est le cas, corrigez le problème...&lt;br /&gt;&lt;h1&gt;Groupes de RPM&lt;/h1&gt;Pour faire fonctionner kickstart correctement, il faut que la recherche de groupe soit disponible. Comme indiqué précédemment, vous ne pouvez pas vous appuyer sur le fichier &lt;code&gt;comps.xml&lt;/code&gt;&amp;nbsp;fourni sur &amp;nbsp;&lt;a href=&quot;http://public-yum.oracle.com/&quot;&gt;public-yum.oracle.com&lt;/a&gt;. A la place, utilisez celui qui vient avec la distribution Oracle Linux 7 :&lt;br /&gt;&lt;pre&gt;mkdir /mnt/cdrom&lt;br /&gt;mount OracleLinux-R7-U0-Server-x86_64-dvd.iso /mnt/cdrom&lt;br /&gt;cp -p /mnt/cdrom/repodata/*-comps-Server.xml \&lt;br /&gt;      /u01/app/oracle/distribs/oraclelinux/repodata/comps.xml &lt;/pre&gt;Les développeurs Oracle ont fait un choix étrange en nommant le rpm&amp;nbsp;&lt;code&gt;dtrace-modules&lt;/code&gt;. Celui-ci inclut, en effet, le numéro de version du noyau dans son nom. De sorte que pour que le fichier&amp;nbsp;&lt;code&gt;comps.xml&lt;/code&gt;&amp;nbsp;soit correct, il faut modifier le nom du RPM à l&#39;intérieur. Rechercher la dernière version fournie par Oracle :&lt;br /&gt;&lt;pre&gt;cd /u01/app/oracle/distribs/oraclelinux/ol7_UEKR3/&lt;br /&gt;ls dtrace-modules-3*.rpm&lt;br /&gt;&lt;i&gt;dtrace-modules-3.8.13-35.3.1.el7uek-0.4.3-4.el7.x86_64.rpm&lt;br /&gt;dtrace-modules-3.8.13-35.3.2.el7uek-0.4.3-4.el7.x86_64.rpm&lt;br /&gt;dtrace-modules-3.8.13-35.3.3.el7uek-0.4.3-4.el7.x86_64.rpm&lt;br /&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;dtrace-modules-3.8.13-35.3.4.el7uek-0.4.3-4.el7.x86_64.rpm&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;Remplacer le nom du module situé dans&amp;nbsp;&lt;code&gt;comps.xml&lt;/code&gt; de&amp;nbsp;&lt;code&gt;dtrace-modules-3.8.13-35.2.1.el7uek&lt;/code&gt; à celui de la dernière version ou, au moment ou j&#39;écris cet article&amp;nbsp;&lt;code&gt;dtrace-modules-3.8.13-35.3.4.el7uek&lt;/code&gt;. Une fois le fichier modifié, calculez son checksum et ajoutez-le dans le fichier &amp;nbsp;&lt;code&gt;repomd.xml&lt;/code&gt;&amp;nbsp;: &lt;br /&gt;&lt;pre&gt;cd /u01/app/oracle/distribs/oraclelinux/repodata&lt;br /&gt;sha256sum comps.xml&lt;br /&gt;62f1b1bc89947d8b1592df8343ccb43c4e62105cacad081d41936a68fb744f11 comps.xml&lt;br /&gt;ls -l --time-style=+%s comps.xml&lt;br /&gt;-rw-r--r-- 1 root root 632924 1407758377 comps.xml&lt;/pre&gt;En fonction du checksum, de la date et de la taille du fichier, ajoutez les lignes ci-dessous dans&amp;nbsp;&lt;code&gt;repomd.xml&amp;nbsp;&lt;/code&gt;: &lt;br /&gt;&lt;pre&gt;&amp;lt;data type=&quot;group&quot;&amp;gt;&lt;br /&gt;  &amp;lt;checksum type=&quot;sha256&quot;&amp;gt;62f1b1bc89947d8b1592df8343ccb43c4e62105cacad081d41936a68fb744f11&amp;lt;/checksum&amp;gt;&lt;br /&gt;  &amp;lt;location href=&quot;repodata/comps.xml&quot;/&amp;gt;&lt;br /&gt;  &amp;lt;timestamp&amp;gt;1407758377&amp;lt;/timestamp&amp;gt;&lt;br /&gt;  &amp;lt;size&amp;gt;632924&amp;lt;/size&amp;gt;&lt;br /&gt;&amp;lt;/data&amp;gt;&lt;/pre&gt;&lt;h1&gt;Installation de Dnsmasq&lt;/h1&gt;Installez et configurez&amp;nbsp;&lt;code&gt;dnsmasq&lt;/code&gt; pour DHCP et TFTP : &lt;br /&gt;&lt;pre&gt;yum install dnsmasq&lt;/pre&gt;Editez le fichier&amp;nbsp;&lt;code&gt;/etc/dnsmasq.conf&lt;/code&gt;&amp;nbsp;et ajoutez les paramètres suivants :&lt;br /&gt;&lt;pre&gt;enable-tftp&lt;br /&gt;tftp-root=/tftpboot&lt;br /&gt;dhcp-range=enp0s3,192.168.56.101,192.168.56.199,4h&lt;br /&gt;dhcp-boot=pxelinux.0&lt;br /&gt;pxe-prompt=&quot;Press F8 for boot menu&quot;, 10&lt;br /&gt;pxe-service=X86PC, &quot;Boot from network&quot;, pxelinux&lt;br /&gt;pxe-service=X86PC, &quot;Boot from local disk&quot;, 0&lt;/pre&gt;Pour une description complète des options, reportez-vous à [1]&amp;nbsp;&lt;a href=&quot;http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq.conf.example&quot; target=&quot;_blank&quot;&gt;Configuration file for dnsmasq&lt;/a&gt;: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;enable-tftp&lt;/code&gt; active le serveur TFTP&lt;/li&gt;&lt;li&gt;&lt;code&gt;tftp-root&lt;/code&gt; définit le répertoire racine du serveur TFTP&lt;/li&gt;&lt;li&gt;&lt;code&gt;dhcp-range&lt;/code&gt;&amp;nbsp;définit &amp;nbsp;la plage d&#39;adresse du serveur DHCP, e.g. de 192.168.56.101 à 192.168.56.199. Il définit également l&#39;interface réseau à utiliser, e.g. enp0s3 ainsi que la durée de conservation de l&#39;adresse par le serveur DHCP, e.g. 4 heures&lt;/li&gt;&lt;li&gt;&lt;code&gt;dhcp-boot&lt;/code&gt;&amp;nbsp;définit le programme à utiliser pour démarrer depuis la carte réseau, c&#39;est à dire&amp;nbsp;&lt;code&gt;pxelinux.0&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;pxe-prompt&lt;/code&gt; et&amp;nbsp;&lt;code&gt;pxe-service&lt;/code&gt;&amp;nbsp;créent un menu utilisé depuis le BIOS de la carte réseau afin de choisir entre le démarrage à partir de PXE (pxelinux) ou à partir du MBR (0)&lt;/li&gt;&lt;/ul&gt;Une fois &lt;code&gt;dnsmasq&lt;/code&gt; configuré, créez le répertoire racine et démarrez le service :&lt;br /&gt;&lt;pre&gt;mkdir /tftpboot&lt;br /&gt;systemctl start dnsmasq&lt;br /&gt;systemctl status dnsmasq&lt;/pre&gt;&lt;blockquote&gt;Note:&lt;br /&gt;Avant de continuer vérifiez que le firewall ne bloque pas TFTP et DHCP.&lt;/blockquote&gt;&lt;h1&gt;Menu et fichiers TFTP&lt;/h1&gt;Le contenu du répertoire racine du serveur TFTP peut être légèrement adapté. Il doit ressembler à ce qui suit :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;menu.c32&lt;/code&gt;&amp;nbsp;est un fichier COM 32-bits. Ce fichier est utilisé pour créer le menu de démarrage de Kickstart. Il fait partie de&amp;nbsp;&lt;span style=&quot;font-family: monospace;&quot;&gt;syslinux&lt;/span&gt;&amp;nbsp;et peut être remplacé, le cas échéant par&amp;nbsp;&lt;span style=&quot;font-family: monospace;&quot;&gt;vesamenu.c32&lt;/span&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;code&gt;pxelinux.0&lt;/code&gt;&amp;nbsp;est le fichier de boot PXE qui fait également partie de&amp;nbsp;&lt;span style=&quot;font-family: monospace;&quot;&gt;syslinux&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;&lt;code&gt;images/ol7/vmlinuz&lt;/code&gt;&amp;nbsp;est le fichier exécutable du noyau Linux utilisé pour démarrer l&#39;installation. Il peut être récupéré depuis le répertoire &lt;code&gt;images/pxelinux&lt;/code&gt;&amp;nbsp;de la distribution&lt;/li&gt;&lt;li&gt;&lt;code&gt;images/ol7/initrd.img&lt;/code&gt;&amp;nbsp;est un disque image de Linux utilisé pour l&#39;installation.&amp;nbsp;&amp;nbsp;Il peut être récupéré depuis le répertoire&amp;nbsp;&lt;code&gt;images/pxelinux&lt;/code&gt;&amp;nbsp;de la distribution&lt;/li&gt;&lt;li&gt;&lt;code&gt;pxelinux.cfg/01-08-00-27-82-66-c4&lt;/code&gt;&amp;nbsp;est un fichier texte qui contient le menu initial de démarrage de l&#39;installation. Nous allons le créer l&#39;adapter pour le serveur. Ce fichier est le fichier utilisé par défaut pour un démarrage en PXE depuis une carte dont l&#39;adresse MAC est la suivante&amp;nbsp;&lt;code&gt;08:00:27:82:66:C4&lt;/code&gt; ; Soyez attentif au préfixe&amp;nbsp;&lt;code&gt;01-&lt;/code&gt; ajouté à l&#39;adresse ainsi qu&#39;à la casse minuscule comme expliqué dans le document &lt;a href=&quot;http://www.syslinux.org/wiki/index.php/PXELINUX#How_do_I_Configure_PXELINUX.3F&quot;&gt;How do I Configure PXELINUX?&lt;/a&gt;&amp;nbsp;[2].&lt;/li&gt;&lt;/ul&gt;Pour installer&amp;nbsp;&lt;code&gt;menu.c32&lt;/code&gt; et&amp;nbsp;&lt;code&gt;pxelinux.0&lt;/code&gt;, installez&amp;nbsp;&lt;code&gt;syslinux&lt;/code&gt;&amp;nbsp;et copiez les fichiers depuis le répertoire&amp;nbsp;&lt;code&gt;/usr/share/syslinux&lt;/code&gt;&amp;nbsp;:&lt;br /&gt;&lt;pre&gt;yum install syslinux&lt;br /&gt;cp -f /usr/share/syslinux/pxelinux.0 /tftpboot/.&lt;br /&gt;cp /usr/share/syslinux/pxelinux.0 /tftpboot/.&lt;/pre&gt;Vous pouvez ajouter les fichiers &lt;code&gt;vmlinuz&lt;/code&gt; et&amp;nbsp;&lt;code&gt;initrd.img&lt;/code&gt;&amp;nbsp;à partir de la distribution :&lt;br /&gt;&lt;pre&gt;mkdir /mnt/cdrom &lt;br /&gt;mount OracleLinux-R7-U0-Server-x86_64-dvd.iso /mnt/cdrom&lt;br /&gt;mkdir -p /tftpboot/images/ol7&lt;br /&gt;cp /mnt/cdrom/images/pxeboot/vmlinuz /tftpboot/images/ol7&lt;br /&gt;cp /mnt/cdrom/images/pxeboot/initrd.img /tftpboot/images/ol7&lt;br /&gt;umount /mnt/cdrom&lt;/pre&gt;Pour terminer, créez un menu qui référence les fichiers précédents : &lt;br /&gt;&lt;pre&gt;mkdir /tftpboot/pxelinux.cfg&lt;br /&gt;cd /tftpboot/pxelinux.cfg&lt;br /&gt;cat &amp;gt;01-08-00-27-82-66-c4 &amp;lt;&amp;lt;EOF&lt;br /&gt;default menu.c32&lt;br /&gt;timeout 50&lt;br /&gt;&lt;br /&gt;menu title PXE Boot Menu&lt;br /&gt;&lt;br /&gt;label OL7-x86_64&lt;br /&gt;  menu label Oracle Linux 7 - Purple Intallation&lt;br /&gt;  kernel images/ol7/vmlinuz&lt;br /&gt;  append initrd=images/ol7/initrd.img inst.ks=http://192.168.56.2/yum/purple.ks inst.stage2=http://192.168.56.2/yum&lt;br /&gt;&lt;br /&gt;EOF&lt;/pre&gt;Dans l&#39;exemple précédent, le menu fait référence à un fichier kickstart et au fichier correspondant à l&#39;installer, i.e. &lt;code&gt;inst.stage2&lt;/code&gt;. La section qui suit présente comment ajouter ces fichiers au serveur HTTP.&lt;br /&gt;&lt;blockquote&gt;Note:&lt;br /&gt;Vous pouvez vérifier que le serveur TFTP fonctionne comme attendu. Ajoutez un client&amp;nbsp;&lt;code&gt;tftp&lt;/code&gt;&amp;nbsp;sur un serveur distant à l&#39;aide de la commande&amp;nbsp;&lt;code&gt;&quot;yum install tftp&quot;&lt;/code&gt; puis téléchargez &lt;code&gt;pxelinux.0&lt;/code&gt; à l&#39;aide de la commande&amp;nbsp;&lt;code&gt;&quot;tftp yellow 69 -c get pxelinux.0&quot;&lt;/code&gt;.&lt;/blockquote&gt;&lt;h1&gt;Fichiers de l&#39;&quot;Installer&quot; et kickstart&lt;/h1&gt;Pour terminer la configuration, vous devez publier l&#39;installer (&lt;code&gt;squashfs.img&lt;/code&gt;) sur le serveur HTTP. Ajoutez le fichier depuis la distribution :&lt;br /&gt;&lt;pre&gt;mkdir /mnt/cdrom &lt;br /&gt;mount OracleLinux-R7-U0-Server-x86_64-dvd.iso /mnt/cdrom&lt;br /&gt;cd /u01/app/oracle/distribs/oraclelinux&lt;br /&gt;mkdir LiveOS&lt;br /&gt;cp /mnt/cdrom/LiveOS/squashfs.img LiveOS&lt;br /&gt;umount /mnt/cdrom&lt;/pre&gt;Créez également le fichier&amp;nbsp;&lt;code&gt;.treeinfo&lt;/code&gt;&amp;nbsp;qui référence l&#39;installer :&lt;br /&gt;&lt;pre&gt;cat &amp;gt;.treeinfo &amp;lt;&amp;lt;EOF&lt;br /&gt;[header]&lt;br /&gt;version = 0.3&lt;br /&gt;&lt;br /&gt;[product]&lt;br /&gt;name = Oracle Linux&lt;br /&gt;short = OL&lt;br /&gt;version = 7.0 &lt;br /&gt;&lt;br /&gt;[stage2]&lt;br /&gt;mainimage = LiveOS/squashfs.img&lt;br /&gt;EOF&lt;/pre&gt;Et voilà ! Vous pouvez ajouter le fichier de configuration Kickstart qui correspond à vos besoins et l&#39;ajouter au serveur HTTP :&lt;br /&gt;&lt;pre&gt;cd /u01/app/oracle/distribs/oraclelinux/&lt;br /&gt;cat &amp;gt;purple.ks &amp;lt;&amp;lt;EOF&lt;br /&gt;install&lt;br /&gt;url --url=&quot;http://192.168.56.2/yum/&quot;&lt;br /&gt;lang en_US.UTF-8&lt;br /&gt;keyboard fr&lt;br /&gt;network --onboot yes --device link --bootproto dhcp --noipv6 --hostname purple.resetlogs.com&lt;br /&gt;rootpw manager&lt;br /&gt;firewall --service=ssh&lt;br /&gt;authconfig --enabledhadow --passalgo=sha512&lt;br /&gt;selinux --disabled&lt;br /&gt;timezone Europe/Paris --isUtc --nontp&lt;br /&gt;bootloader --location=mbr --boot-drive=sda&lt;br /&gt;text&lt;br /&gt;skipx&lt;br /&gt;zerombr&lt;br /&gt;clearpart --all --initlabel&lt;br /&gt;autopart&lt;br /&gt;firstboot --disabled&lt;br /&gt;poweroff&lt;br /&gt;&lt;br /&gt;%packages&lt;br /&gt;@core&lt;br /&gt;%end&lt;br /&gt;EOF&lt;br /&gt;&lt;/pre&gt;&lt;h1&gt;Tester l&#39;installation de vos serveurs&lt;/h1&gt;Vous êtes prêt à provisionner la machine purple, que ce soit une machine virtuelle ou un serveur physique. Dans cet exemple, nous utiliserons une machine virtuelle Virtualbox. Changez la configuration du boot pour démarrer à l&#39;aide de PXE :&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-L9SgKuOVFes/U-jtnCgigPI/AAAAAAAAJac/zFDqxKyPMR0/s1600/pxe-bootpriority.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-L9SgKuOVFes/U-jtnCgigPI/AAAAAAAAJac/zFDqxKyPMR0/s1600/pxe-bootpriority.png&quot; height=&quot;305&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Après quelques secondes, l&#39;installer apparait et vous pouvez installer Oracle Linux 7 avec les derniers RPMs:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/--M3qIPQ8Nzw/U-jtuA-K6LI/AAAAAAAAJak/CjIac4LeM40/s1600/pxe-installmenu.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/--M3qIPQ8Nzw/U-jtuA-K6LI/AAAAAAAAJak/CjIac4LeM40/s1600/pxe-installmenu.png&quot; height=&quot;436&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;br /&gt;Encore 3 minutes et votre serveur sera installé ! Pour installer d&#39;autres serveurs, il suffit simplement d&#39;ajouter des fichiers menus au serveur TFTP puis de réaliser les fichier de configuration Kickstart correspondant sur le serveur web. Ajoutez quelques étapes complémentaires pour nommer les serveurs également avec&amp;nbsp;&lt;code&gt;dnsmasq&lt;/code&gt;. Vous aurez une configuration sérieuse pour des déploiements locaux. Sans doute pas aussi puissant que ce que vous pouvez obtenir avec Puppet/Foreman mais suffisant pour de nombreux scénarios...&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Bibliographie:&lt;/b&gt;&lt;br /&gt;[1] &lt;a href=&quot;http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq.conf.example&quot; target=&quot;_blank&quot;&gt;Configuration file for dnsmasq&lt;/a&gt;&lt;br /&gt;[2] &lt;a href=&quot;http://www.syslinux.org/wiki/index.php/PXELINUX#How_do_I_Configure_PXELINUX.3F&quot; target=&quot;_blank&quot;&gt;How do I Configure PXELINUX?&lt;/a&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/1337914418759733662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.resetlogs.fr/2014/08/kickstart-pxe-dnsmasq.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/1337914418759733662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/1337914418759733662'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/2014/08/kickstart-pxe-dnsmasq.html' title='Installer Oracle Linux 7 avec Kickstart, PXE et Dnsmasq'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-vWfZ5loMlmA/U-jtfLDKH1I/AAAAAAAAJaU/2Y_tI-crfK0/s72-c/dreamstime_xs_26552880.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8409134974669171624.post-5203928328369734086</id><published>2014-08-03T15:40:00.003-07:00</published><updated>2014-08-03T20:29:23.634-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Automation"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle Linux"/><title type='text'>Introduction à la configuration réseau d&#39;Oracle Linux 7</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-2GDCQWbOvqI/U96sLlFkS-I/AAAAAAAAJWI/zmZgJfVRwBw/s1600/dreamstime_xs_29358736.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-2GDCQWbOvqI/U96sLlFkS-I/AAAAAAAAJWI/zmZgJfVRwBw/s1600/dreamstime_xs_29358736.jpg&quot; height=&quot;133&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Oracle Linux 7, comme RHEL7 et CentOS7, vient avec des changements drastiques dans l&#39;interface de gestion du réseau et ses outils associés. Même s&#39;il apparaît encore dans&amp;nbsp;&lt;code&gt;systemctl&lt;/code&gt;, le service&amp;nbsp;&lt;code&gt;network&lt;/code&gt; a disparu au profit de&amp;nbsp;&lt;code&gt;NetworkManager&lt;/code&gt;. Les commandes que nous avons utilisées pendant des années telles que&amp;nbsp;&lt;code&gt;ifconfig&lt;/code&gt;, &lt;code&gt;route&lt;/code&gt; ou&amp;nbsp;&lt;code&gt;netstat&lt;/code&gt; sont désormais &quot;deprecated&quot;... Le bénéfice principal est que configuration et gestion du réseau sont désormais unifiées. De plus, &lt;code&gt;nmcli&lt;/code&gt; et&amp;nbsp;&lt;code&gt;firewall-cmd&lt;/code&gt; permettent de modifier et persister la plupart des configurations directement en ligne de commandes. Cela simplifie les changements et les automatisations...&lt;br /&gt;&lt;br /&gt;Donc il va falloir apprendre beaucoup... Et on aime ça ! Il va falloir oublier beaucoup aussi... Et ça sera probablement plus difficile ; d&#39;autant qu&#39;il faudra certainement maintenir, en même temps que la version 7, les anciennes versions pendant quelques temps. Cet article de blog vous aidera à démarrer avec les configurations réseau d&#39;Oracle Linux 7. Il vous aidera également à faire le va et vient entre les différentes versions d&#39;Oracle Linux...&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h1&gt;Faire le pas...&lt;/h1&gt;Oracle Linux 7 fournit encore les anciens outils que sont &lt;code&gt;ifconfig&lt;/code&gt;, &lt;code&gt;netstat&lt;/code&gt; ou&amp;nbsp;&lt;code&gt;route&lt;/code&gt; dans le package&amp;nbsp;&lt;code&gt;net-tools&lt;/code&gt;. Cela peut aider le cas échéant avec certains scripts que vous pourroez hériter d&#39;ancien logiciels. Quoiqu&#39;il en soit, à moins que ce soit absolument nécessaire, vous éviterez d&#39;installer ce package. Vous préfererez de loin utiliser les nouveaux outils et vous adapter :&lt;br /&gt;&lt;pre&gt;# yum info net-tools&lt;br /&gt;Available Packages&lt;br /&gt;Name        : net-tools&lt;br /&gt;Arch        : x86_64&lt;br /&gt;Version     : 2.0&lt;br /&gt;Release     : 0.17.20131004git.el7&lt;br /&gt;Size        : 303 k&lt;br /&gt;Repo        : ol7_latest&lt;br /&gt;Summary     : Basic networking tools&lt;br /&gt;URL         : http://sourceforge.net/projects/net-tools/&lt;br /&gt;License     : GPLv2+&lt;br /&gt;Description : The net-tools package contains basic networking tools,&lt;br /&gt;            : including ifconfig, netstat, route, and others.&lt;br /&gt;            : Most of them are obsolete. For replacement check iproute package.&lt;/pre&gt;Un autre changement important d&#39;Oracle Linux 7 est l&#39;utilisation de nom prévisibles des interfaces réseaux à la place des noms génériques&amp;nbsp;&lt;code&gt;eth0&lt;/code&gt;, &lt;code&gt;eth1&lt;/code&gt;... &lt;code&gt;ethN&lt;/code&gt;. Là encore vous pouvez revenir à la configuration des versions précédentes [1] d&#39;Oracle Linux en créant un fichier vide nommé named &lt;code&gt;80-net-name-slot.rules&lt;/code&gt; dans le répertoire&amp;nbsp;&lt;code&gt;/etc/udev/rules.d&lt;/code&gt;. Vous rebooterez ensuite :&lt;br /&gt;&lt;pre&gt;ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules&lt;br /&gt;reboot&lt;/pre&gt;D&#39;ailleurs, il y a de bonnes raisons à ce changement et vous pourrez le découvrir dans l&#39;article&amp;nbsp;&lt;a href=&quot;http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/&quot; target=&quot;_blank&quot;&gt;Predictable Network Interface Names&lt;/a&gt; [2].&lt;br /&gt;&lt;h1&gt;Obtenir de l&#39;aide des assistants&lt;/h1&gt;Si vous êtes pressé et que vous voulez malgré tout faire les choses proprement, vous pouvez utiliser les assistants de Network Manager pour obtenir une aide parfois bienvenue :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;la commande&amp;nbsp;&lt;code&gt;nmtui&lt;/code&gt;, qui appartient au RPM&amp;nbsp;&lt;code&gt;NetworkManager-tui&lt;/code&gt;, est l&#39;interface en mode texte de Network Manager. Elle fournit une manière simple de réaliser une configuration sans prêter attention aux commandes associées.&lt;/li&gt;&lt;li&gt;la commande&amp;nbsp;&lt;code&gt;nm-connection-editor&lt;/code&gt;,&amp;nbsp;qui appartient au RPM&amp;nbsp;&lt;code&gt;nm-connection-editor&lt;/code&gt;,&amp;nbsp;est l&#39;interface graphique de Network Manager.&amp;nbsp;Vous pouvez directement y accéder depuis le bureau Gnome ou depuis le Control Panel. Si vous avez un serveur X configuré, tapez simplement&amp;nbsp;&lt;code&gt;nm-connection-editor&lt;/code&gt; pour accéder au panneau.&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-9rpN4SOowU4/U96sTSBdsmI/AAAAAAAAJWQ/kkm-KnVxoXw/s1600/nm-connection.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-9rpN4SOowU4/U96sTSBdsmI/AAAAAAAAJWQ/kkm-KnVxoXw/s1600/nm-connection.png&quot; height=&quot;327&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h1&gt;Apprendre...&lt;/h1&gt;Pour faire court, vous trouverez ci-dessous les correspondance entre les nouvelles commandes (&lt;code&gt;iproute&lt;/code&gt;) et les commandes Oracle Linux 5 et 6 qu&#39;elles remplace (&lt;code&gt;net-tools&lt;/code&gt;). Pour une feuille de récapitulation, autrement appelée cheat sheet détaillée, consultez cet article sur le web&amp;nbsp;&lt;a href=&quot;http://dougvitale.wordpress.com/2011/12/21/deprecated-linux-networking-commands-and-their-replacements/&quot; target=&quot;_blank&quot;&gt;Deprecated Linux networking commands and their replacements&lt;/a&gt;&amp;nbsp;[3]:&lt;br /&gt;&lt;table border=&quot;1&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;i&gt;net-tools&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;i&gt;iproute&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;arp&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;ip neighbor/neighbour&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;ifconfig&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;ip link&lt;/code&gt; ou &lt;code&gt;ip addr&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;netstat&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;ss&lt;/code&gt;, &lt;code&gt;ip route&lt;/code&gt; ou &lt;code&gt;ip maddr&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;route&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;ip route&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;nameif&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;ip link&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Et plus important encore, lisez&amp;nbsp;&lt;a href=&quot;https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/index.html&quot; target=&quot;_blank&quot;&gt;Red Hat Enterprise Linux 7 - Networking Guide&lt;/a&gt; [4] ainsi que les pages de la commande man de : ip(8) ip-address(8), ip-addrlabel(8), ip-l2tp(8), ip-link(8), ip-maddress(8), ip-monitor(8), ip-mroute(8), ip-neighbour(8), ip-netns(8), ip-ntable(8), ip-route(8), ip-rule(8), ip-tcp_metrics(8), ip-tunnel(8), ip-xfrm(8), ss(8), ifcfg(8), ifup(8), ifdown(8) et ifenslave(8).&lt;br /&gt;&lt;h1&gt;Utiliser nmcli&lt;/h1&gt;Ce qui est vraiment intéressant avec&amp;nbsp;&lt;code&gt;NetworkManager&lt;/code&gt;, c&#39;est l&#39;ajout de la commande&amp;nbsp;&lt;code&gt;nmcli&lt;/code&gt;. Celle-ci permet de réaliser les changements de configurations sans éditer aucun fichier dans&amp;nbsp;&lt;code&gt;/etc/sysconfig/network-scripts&lt;/code&gt;. Cela permet d&#39;éviter nombre d&#39;erreurs.&lt;br /&gt;&lt;h2&gt;Changer le nom du serveurs&lt;/h2&gt;Le script ci-dessous modifie et persiste le nom du serveur : &lt;br /&gt;&lt;pre&gt;nmcli general hostname green.resetlogs.com&lt;br /&gt;hostname&lt;br /&gt;&lt;i&gt;green.resetlogs.com&lt;/i&gt;&lt;/pre&gt;&lt;h2&gt;Ajouter une adresse à une interface réseau&lt;/h2&gt;En supposant que vous ayez ajouté une carte réseau à votre serveur et que celle-ci apparait avec le nom&amp;nbsp;&lt;code&gt;enp0s3&lt;/code&gt;, ajouter une connexion statique (&lt;code&gt;manual&lt;/code&gt;) avec une adresse IP ressemble au script ci-dessous : &lt;br /&gt;&lt;pre&gt;nmcli device status&lt;br /&gt;&lt;i&gt;DEVICE  TYPE      STATE        CONNECTION &lt;br /&gt;enp0s3  ethernet  disconnected --&lt;br /&gt;lo      loopback  unmanaged    --&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;nmcli connection add type 802-3-ethernet \&lt;br /&gt;                      ifname enp0s3      \&lt;br /&gt;                      con-name enp0s3    \&lt;br /&gt;                      autoconnect yes&lt;br /&gt;&lt;br /&gt;nmcli connection modify enp0s3 \&lt;br /&gt;      ipv4.method manual       \&lt;br /&gt;      ipv4.addresses &quot;192.168.56.5/24 192.168.56.1&quot; \&lt;br /&gt;      ipv4.never-default yes&lt;br /&gt;&lt;br /&gt;nmcli connection up enp0s3&lt;br /&gt;&lt;br /&gt;ip addr s enp0s3&lt;br /&gt;&lt;i&gt;2: enp0s3:  mtu 1500 qdisc pfifo_fast state UP qlen 1000&lt;br /&gt;    link/ether 08:00:27:55:c6:07 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;    inet 192.168.56.5/24 brd 192.168.56.255 scope global enp0s3&lt;br /&gt;    inet6 fe80::a00:27ff:fe55:c607/64 scope link &lt;br /&gt;       valid_lft forever preferred_lft forever&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;nmcli device status&lt;br /&gt;&lt;i&gt;DEVICE  TYPE      STATE     CONNECTION &lt;br /&gt;enp0s3  ethernet  connected enp0s3&lt;br /&gt;lo      loopback  unmanaged --&lt;/i&gt;&lt;/pre&gt;&lt;blockquote&gt;Note:&lt;br /&gt;La propriété &lt;code&gt;ipv4.never-default&lt;/code&gt; positionnée à&amp;nbsp;&lt;code&gt;yes&lt;/code&gt; est équivalente à positionner la propriété&amp;nbsp;&lt;code&gt;DEFROUTE&lt;/code&gt; à &lt;code&gt;no&lt;/code&gt; dans le fichier&amp;nbsp;&lt;code&gt;ifcfg-enp0s3&lt;/code&gt;; Cela évite d&#39;utiliser la passerelle associée à la carte réseau comme passerelle par défaut pour le serveur dans la table de routage.&lt;/blockquote&gt;&lt;h2&gt;Ajouter et supprimer des adresses IP&lt;/h2&gt;Une autre utilisation commune de&amp;nbsp;&lt;code&gt;nmcli&lt;/code&gt; consiste à ajouter ou supprimer des adresses IP d&#39;une interface et gérer ainsi des IP virtuelles; Ces interfaces que nous avions l&#39;habitude d&#39;appeler&amp;nbsp;&lt;code&gt;ethX:M&lt;/code&gt; comme&amp;nbsp;&lt;code&gt;eth0:0&lt;/code&gt; ou &lt;code&gt;eth0:1&lt;/code&gt;&amp;nbsp;sur les distributions Linux précédentes.&amp;nbsp;Le signe &quot;&lt;code&gt;+&lt;/code&gt;&quot; devant la propriété signifie que la valeur est ajoutée aux valeurs déjà existantes ; le signe &quot;&lt;code&gt;-&lt;/code&gt;&quot; est quand à lui utilisé pour ne supprimer que la partie précisée dans la ligne de commande : &lt;br /&gt;&lt;pre&gt;nmcli connection modify enp0s3 \&lt;br /&gt;      +ipv4.addresses &quot;192.168.56.11/24 192.168.56.1&quot;&lt;br /&gt;&lt;br /&gt;nmcli connection up enp0s3&lt;br /&gt;&lt;br /&gt;ip addr s enp0s3&lt;br /&gt;&lt;i&gt;2: enp0s3: &lt;broadcast&gt; mtu 1500 qdisc pfifo_fast state UP qlen 1000&lt;br /&gt;    link/ether 08:00:27:55:c6:07 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;    inet 192.168.56.5/24 brd 192.168.56.255 scope global enp0s3&lt;br /&gt;    inet 192.168.56.11/24 brd 192.168.56.255 scope global secondary enp0s3&lt;br /&gt;    inet6 fe80::a00:27ff:fe55:c607/64 scope link &lt;br /&gt;       valid_lft forever preferred_lft forever&lt;/broadcast&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;nmcli connection modify enp0s3 \&lt;br /&gt;      -ipv4.addresses &quot;192.168.56.11/24 192.168.56.1&quot;&lt;br /&gt;&lt;br /&gt;nmcli connection up enp0s3&lt;br /&gt;&lt;br /&gt;ip addr s enp0s3&lt;br /&gt;&lt;i&gt;2: enp0s3: &lt;broadcast&gt; mtu 1500 qdisc pfifo_fast state UP qlen 1000&lt;br /&gt;    link/ether 08:00:27:55:c6:07 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;    inet 192.168.56.5/24 brd 192.168.56.255 scope global enp0s3&lt;br /&gt;    inet6 fe80::a00:27ff:fe55:c607/64 scope link &lt;br /&gt;       valid_lft forever preferred_lft forever&lt;/broadcast&gt;&lt;/i&gt;&lt;/pre&gt;&lt;h2&gt;Ajouter un DNS&lt;/h2&gt;&lt;code&gt;nmcli&lt;/code&gt; permet également d&#39;ajouter une adresse d&#39;un DNS&lt;br /&gt;&lt;pre&gt;nmcli connection modify enp0s3 \&lt;br /&gt;      ipv4.dns 192.168.1.1&lt;br /&gt;&lt;/pre&gt;&lt;h2&gt;Changer d&#39;autres propriétés&lt;/h2&gt;&lt;code&gt;nmcli&lt;/code&gt;&amp;nbsp;peut être utilisé dans beaucoup d&#39;autres situationscomme de configurer les&amp;nbsp;&lt;code&gt;bond&lt;/code&gt; ou&amp;nbsp;&lt;code&gt;team&lt;/code&gt;, les&amp;nbsp;&lt;code&gt;bridges&lt;/code&gt;, &lt;code&gt;Infiniband&lt;/code&gt;, le&amp;nbsp;&lt;code&gt;Wifi&lt;/code&gt; ou les&amp;nbsp;&lt;code&gt;Vlans&lt;/code&gt;. Pour plus d&#39;informations à propos de&amp;nbsp;&lt;code&gt;nmcli&lt;/code&gt;, reportez vous aux pages de la commande man pour nmcli(1), nmcli-examples(5) et nm-settings(5).&lt;br /&gt;&lt;h1&gt;Apprendre encore...&lt;/h1&gt;Ceci conclut cette rapide introduction aux changements réseau d&#39;Oracle Linux 7. Evidemment, il y a beaucoup plus de choses à apprendre comme l&#39;utilisation et le paramétrage du service&amp;nbsp;&lt;code&gt;firewalld&lt;/code&gt;. Par ailleurs, vous voudrez aussi probablement apprendre certaines commandes qui existent déjà avec Oracle Linux 6 et peuvent s&#39;avérer utiles avec les nouvelles fonctionnalités de container ou les technologies cloud qui arrivent. Certaines auxquelles on peut penser sont le contrôle de trafic (&lt;code&gt;tc&lt;/code&gt;), les espaces de nommage réseau (&lt;code&gt;ip netns&lt;/code&gt;), &lt;code&gt;udev&lt;/code&gt;, &lt;code&gt;dig&lt;/code&gt; ainsi que le détails des fichiers de configuration. De nombreuses autres opportunités pour de nouveaux articles...&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;&lt;i&gt;Bibliographies:&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;Pour en apprendre plus sur ces sujets, lisez les articles suivants :&lt;br /&gt;[1] Red Hat Enterprise Linux 7 -&amp;nbsp;&lt;a href=&quot;https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/sec-Disabling_Consistent_Network_Device_Naming.html&quot; target=&quot;_blank&quot;&gt;Disabling consistent network device naming&lt;/a&gt;&lt;br /&gt;[2] &lt;a href=&quot;http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/&quot; target=&quot;_blank&quot;&gt;Predictable Network Interface Names&lt;/a&gt;,&amp;nbsp;par Freedesktop.org&lt;br /&gt;[3] &lt;a href=&quot;http://dougvitale.wordpress.com/2011/12/21/deprecated-linux-networking-commands-and-their-replacements/&quot; target=&quot;_blank&quot;&gt;Deprecated Linux networking commands and their replacements&lt;/a&gt;, par Doug Vitale&lt;br /&gt;[4] &lt;a href=&quot;https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/index.html&quot; target=&quot;_blank&quot;&gt;Red Hat Enterprise Linux 7 - Networking Guide&lt;/a&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/5203928328369734086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.resetlogs.fr/2014/08/ol7-network.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/5203928328369734086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/5203928328369734086'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/2014/08/ol7-network.html' title='Introduction à la configuration réseau d&#39;Oracle Linux 7'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-2GDCQWbOvqI/U96sLlFkS-I/AAAAAAAAJWI/zmZgJfVRwBw/s72-c/dreamstime_xs_29358736.jpg" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8409134974669171624.post-7203226553925767423</id><published>2014-08-02T05:08:00.001-07:00</published><updated>2014-08-02T05:08:49.605-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Automation"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle Linux"/><title type='text'>Accélerer les mises à jour d&#39;Oracle Linux 7 avec les &quot;Delta RPMs&quot;</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-U-ms0j1yD_c/U9zKJqepWLI/AAAAAAAAJTE/rgR2lK39z7g/s1600/dreamstime_xs_31736780.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-U-ms0j1yD_c/U9zKJqepWLI/AAAAAAAAJTE/rgR2lK39z7g/s1600/dreamstime_xs_31736780.jpg&quot; height=&quot;136&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;La gestion des configuration et des mises à jour d&#39;Oracle Linux peut être une tâche consommatrice en temps lorsqu&#39;elle est mise en oeuvre avec sérieux. SI vos serveurs sont répartis dans des zones différentes, une bonne alternative au déploiement de plusieurs référentiels yum consiste à créer des &quot;Delta RPMs&quot; ou fichiers&amp;nbsp;&lt;code&gt;.drpm&lt;/code&gt;&amp;nbsp;qui permettent de réduire le trafic réseau. Ces fichiers sont utilisés par yum pour reconstruire les RPMS à partir des versions précédentes. Cet article présente les différentes étapes de mise en oeuvre des &quot;Delta RPMs&quot; pour mettre à jour Oracle Linux 7. Cette méthode peut probablement être utilisée en l&#39;état avec CentOS7 qui utilise les mêmes paquets et fournit également leurs RPMs gratuitement sur Internet.&lt;br /&gt;&lt;br /&gt;Avec Oracle Linux 5 et 6, l&#39;utilisation des &quot;delta RPMs&quot; nécessitait l&#39;utilisation de la plug-in yum-presto. A partir de la version 7, cette plug-in est intégrée dans la version de base. Si ça ne change pas fondamentalement les choses, la configuration est simplifiée. Cet article présente comment synchroniser et créer un reférentiel. Il présente comment configurer un listener Apache et comment utiliser yum pour utiliser les fichiers &lt;code&gt;.drpm&lt;/code&gt;. &lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h1&gt;Construire un repository avec des RPMs delta&lt;/h1&gt;Oracle et CentOS publient leur RPMs dans des référentiels gratuits disponibles sur Internet. Construire votre propre référentile consiste à synchroniser les fichiers de ces distributions avec un répertoire sur un serveur ou une machine virtuelle. Le paquet&amp;nbsp;&lt;code&gt;yum-utils&lt;/code&gt; contient la commande&amp;nbsp;&lt;code&gt;reposync&lt;/code&gt; qui peut être utilisé dans ce but. Commencez par enregistrer le référentiel à synchroniser dans le répertoire&amp;nbsp;&lt;code&gt;/etc/yum.repos.d&lt;/code&gt;. La commande&amp;nbsp;&lt;code&gt;reposync&lt;/code&gt;&amp;nbsp;&amp;nbsp;ci-dessous synchronise les 2 référentiels&amp;nbsp;&lt;code&gt;ol7_latest&lt;/code&gt; et&amp;nbsp;&lt;code&gt;ol7_UEKR3&lt;/code&gt; dans le répertoire&amp;nbsp;&lt;code&gt;/u01/app/oracle/distribs/oraclelinux&lt;/code&gt;:&lt;br /&gt;&lt;pre&gt;yum -y install yum-utils&lt;br /&gt;&lt;br /&gt;mkdir -p /u01/app/oracle/distribs/oraclelinux&lt;br /&gt;&lt;br /&gt;reposync --repoid=ol7_latest \&lt;br /&gt;         --repoid=ol7_UEKR3 \&lt;br /&gt;         -p /u01/app/oracle/distribs/oraclelinux&lt;/pre&gt;&lt;blockquote&gt;Note:&lt;br /&gt;Si vous devez synchroniser des référentiels qui ne sont pas public comme le référentiel contenant KSplice ou les client DTrace, Oracle fournit le script&amp;nbsp;&lt;code&gt;uln-yum-mirror&lt;/code&gt;. Pour plus de détails sur l&#39;utilisation de ce script, reportez-vous à la documentation Oracle® Linux - Administrator&#39;s Guide for Release 7 - &lt;a href=&quot;http://docs.oracle.com/cd/E52668_01/E54669/html/ol7-createlocal-repo.html&quot;&gt;2.8 Creating and Using a Local ULN Mirror&lt;/a&gt;&lt;/blockquote&gt;Une fois les RPMs téléchargés sur sur votre serveur, vous pouvez les indexer et créer les fichiers&amp;nbsp;&lt;code&gt;.drpm&lt;/code&gt;. Pour cela, installer la paquet&amp;nbsp;&lt;code&gt;deltarpms&lt;/code&gt; ; la commande&amp;nbsp;&lt;code&gt;createrepo&lt;/code&gt; &lt;code&gt;--deltas&lt;/code&gt; et&amp;nbsp;&lt;code&gt;--oldpackagedirs&lt;/code&gt; génère les fichiers dans le répertoire&amp;nbsp;&lt;code&gt;drpms&lt;/code&gt;. Elle crée également le fichier index &lt;code&gt;prestodelta.xml&lt;/code&gt; qui est utilisé par&amp;nbsp;&lt;code&gt;yum&lt;/code&gt;&amp;nbsp;:&lt;br /&gt;&lt;pre&gt;yum -y install createrepo deltarpms&lt;br /&gt;&lt;br /&gt;cd  /u01/app/oracle/distribs/oraclelinux/ol7_latest&lt;br /&gt;&lt;br /&gt;createrepo --deltas --oldpackagedirs . .&lt;br /&gt;&lt;br /&gt;cd  /u01/app/oracle/distribs/oraclelinux/ol7_UEKR3&lt;br /&gt;&lt;br /&gt;createrepo --deltas --oldpackagedirs . .&lt;/pre&gt;&lt;h1&gt;Installer et configurer Apache 2.4&lt;/h1&gt;Oracle Linux 7 vient avec un listener HTTP Apache 2.4 :&lt;br /&gt;&lt;pre&gt;yum -y install httpd&lt;br /&gt;&lt;br /&gt;httpd -v&lt;br /&gt;&lt;i&gt;Server version: Apache/2.4.6 (Red Hat)&lt;br /&gt;Server built:   Jul 23 2014 04:34:53&lt;/i&gt;&lt;/pre&gt;La syntaxe de&amp;nbsp;&lt;code&gt;Directory&lt;/code&gt; a changé avec Apache 2.4. Pour permettre l&#39;accès aux répertoires que vous avez créés, ajoutez la déclaration ci-dessous dans le fichier de configuration du listener Apache :&lt;br /&gt;&lt;pre&gt;&amp;lt;Directory &quot;/u01/app/oracle/distribs/oraclelinux&quot;&amp;gt;&lt;br /&gt;    Options +Indexes +FollowSymLinks&lt;br /&gt;    AllowOverride None&lt;br /&gt;    Require all granted&lt;br /&gt;&amp;lt;/Directory&amp;gt;&lt;/pre&gt;Créez ensuite un alias vers le répertoire à l&#39;aide de la directive ci-dessous :  &lt;br /&gt;&lt;pre&gt;Alias /yum/ /u01/app/oracle/distribs/oraclelinux/&lt;/pre&gt;Vous pourrez autoriser les accès au port 80 dans le firewall et activer/démarrer le listener HTTP :&lt;br /&gt;&lt;pre&gt;firewall-cmd --permanent --add-service http&lt;br /&gt;firewall-cmd --add-service http&lt;br /&gt;&lt;i&gt;success&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;firewall-cmd --list-all&lt;br /&gt;&lt;i&gt;public (default, active)&lt;br /&gt;  interfaces: enp0s3 enp0s8&lt;br /&gt;  sources: &lt;br /&gt;  services: dhcpv6-client http ssh&lt;br /&gt;  ports: &lt;br /&gt;  masquerade: no&lt;br /&gt;  forward-ports: &lt;br /&gt;  icmp-blocks: &lt;br /&gt;  rich rules:&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;systemctl start httpd&lt;br /&gt;systemctl enable httpd&lt;br /&gt;systemctl status httpd&lt;br /&gt;&lt;i&gt;httpd.service - The Apache HTTP Server&lt;br /&gt;   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled)&lt;br /&gt;   Active: active (running) since Mon 2014-07-28 23:00:10 CEST; 5s ago&lt;br /&gt; Main PID: 2238 (httpd)&lt;br /&gt;   Status: &quot;Processing requests...&quot;&lt;br /&gt;   CGroup: /system.slice/httpd.service&lt;br /&gt;           ├─2238 /usr/sbin/httpd -DFOREGROUND&lt;br /&gt;           ├─2239 /usr/sbin/httpd -DFOREGROUND&lt;br /&gt;           ├─2240 /usr/sbin/httpd -DFOREGROUND&lt;br /&gt;           ├─2241 /usr/sbin/httpd -DFOREGROUND&lt;br /&gt;           ├─2242 /usr/sbin/httpd -DFOREGROUND&lt;br /&gt;           └─2243 /usr/sbin/httpd -DFOREGROUND&lt;br /&gt;&lt;br /&gt;Jul 28 23:00:10 blue.resetlogs.com systemd[1]: Started The Apache HTTP Server.&lt;br /&gt;Hint: Some lines were ellipsized, use -l to show in full.&lt;/i&gt;&lt;/pre&gt;Vous devriez pouvoir accéder aux référentiels yum à l&#39;aide de votre navigateur web :&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-STJSH1mzWxw/U9zKYsJ9wKI/AAAAAAAAJTM/9nYo44Xyuic/s1600/yum_repository.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-STJSH1mzWxw/U9zKYsJ9wKI/AAAAAAAAJTM/9nYo44Xyuic/s1600/yum_repository.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;h1&gt;Configurer et utiliser yum&lt;/h1&gt;Pour que vos serveurs et guests puissent utiliser les RPMs delta à l&#39;aide de &lt;code&gt;yum&lt;/code&gt;, vous devez enregistrer les référentiels YUM :&lt;br /&gt;&lt;pre&gt;cat /etc/yum.repos.d/blue.repo&lt;br /&gt;&lt;br /&gt;[ol7_latest]&lt;br /&gt;name=Oracle Linux $releasever Latest ($basearch)&lt;br /&gt;baseurl=http://blue/yum/ol7_latest/&lt;br /&gt;gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle&lt;br /&gt;gpgcheck=1&lt;br /&gt;enabled=1&lt;br /&gt;&lt;br /&gt;[ol7_UEKR3]&lt;br /&gt;name=Latest UEK for Oracle Linux $releasever ($basearch)&lt;br /&gt;baseurl=http://blue/yum/ol7_UEKR3&lt;br /&gt;gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle&lt;br /&gt;gpgcheck=1&lt;br /&gt;enabled=1&lt;/pre&gt;Installez également le paquet&amp;nbsp;&lt;code&gt;deltarpms&lt;/code&gt; pour que yum puisse recréer les fichiers RPM à l&#39;aide des fichiers RPMs delta :&lt;br /&gt;&lt;pre&gt;yum install deltarpms&lt;/pre&gt;Ces ficheirs sont alors pris en compte automatiquement de de manière transparente comme vous pouvez le vérifier dans la commande ci-dessous : &lt;br /&gt;&lt;pre&gt;yum -y update&lt;br /&gt;&lt;i&gt;ol7_UEKR3                    | 3.6 kB  00:00:00     &lt;br /&gt;ol7_latest                   | 3.2 kB  00:00:00     &lt;br /&gt;(1/2): ol7_UEKR3/primary_db  | 1.1 MB  00:00:00     &lt;br /&gt;(2/2): ol7_latest/primary_db | 5.1 MB  00:00:01     &lt;br /&gt;Resolving Dependencies&lt;br /&gt;--&amp;gt; Running transaction check&lt;br /&gt;---&amp;gt; Package kernel-uek.x86_64 0:3.8.13-35.3.2.el7uek will be installed&lt;br /&gt;---&amp;gt; Package kernel-uek-firmware.noarch 0:3.8.13-35.3.2.el7uek will be installed&lt;br /&gt;--&amp;gt; Finished Dependency Resolution&lt;br /&gt;&lt;br /&gt;Dependencies Resolved&lt;br /&gt;=======================================================================&lt;br /&gt; Package             Arch    Version              Repository     Size&lt;br /&gt;=======================================================================&lt;br /&gt;Installing:&lt;br /&gt; kernel-uek          x86_64  3.8.13-35.3.2.el7uek  ol7_UEKR3      32 M&lt;br /&gt; kernel-uek-firmware noarch  3.8.13-35.3.2.el7uek  ol7_UEKR3     1.8 M&lt;br /&gt;&lt;br /&gt;Transaction Summary&lt;br /&gt;=======================================================================&lt;br /&gt;Install  2 Packages&lt;br /&gt;&lt;br /&gt;Total download size: 34 M&lt;br /&gt;Installed size: 116 M&lt;br /&gt;Downloading packages:&lt;br /&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;ol7_UEKR3/prestodelta                                               |  830 B  &lt;br /&gt;Delta RPMs reduced 34 M of updates to 7.9 M (76% saved)&lt;br /&gt;kernel-uek-3.8.13-35.3.1.el7uek_3.8.13-35.3.2.el7uek.x86_64.drpm    | 7.6 MB&lt;br /&gt;kernel-uek-firmware-3.8.13-35.3.1..._3.8.13-35.3.2....noarch.drpm   | 329 kB&lt;br /&gt;Finishing delta rebuilds of 2 package(s) (34 M)&lt;br /&gt;kernel-uek-3.8.13-35.3.2.el7uek.x86_64.rpm                          |  32 MB &lt;br /&gt;&lt;/b&gt;&lt;/span&gt;----------------------------------------------------------------------------&lt;br /&gt;Total                                                      1.8 MB/s |  40 MB&lt;br /&gt;Running transaction check&lt;br /&gt;Running transaction test&lt;br /&gt;Transaction test succeeded&lt;br /&gt;Running transaction&lt;br /&gt;  Installing : kernel-uek-firmware-3.8.13-35.3.2.el7uek.noarch   1/2 &lt;br /&gt;  Installing : kernel-uek-3.8.13-35.3.2.el7uek.x86_64            2/2 &lt;br /&gt;  Verifying  : kernel-uek-firmware-3.8.13-35.3.2.el7uek.noarch   1/2 &lt;br /&gt;  Verifying  : kernel-uek-3.8.13-35.3.2.el7uek.x86_64            2/2 &lt;br /&gt;&lt;br /&gt;Installed:&lt;br /&gt;  kernel-uek.x86_64 0:3.8.13-35.3.2.el7uek &lt;br /&gt;  kernel-uek-firmware.noarch 0:3.8.13-35.3.2.el7uek                    &lt;br /&gt;&lt;br /&gt;Complete!&lt;/i&gt;&lt;/pre&gt;Evidemment l&#39;utilisation de RPMs delta nécessite plus de temps processeur et d&#39;I/O sur vos serveurs et guests. Cette fonctionnalité accélère généralement facilement les mises à jour distantes...&lt;br /&gt;&lt;blockquote&gt;Bibliographie:&lt;br /&gt;Pour des informations complémentaires à propos de Delta RPMS et de leur utilisation, visitez la page associé à &lt;a href=&quot;http://fedoraproject.org/wiki/Features/Presto&quot;&gt;Fedora Presto&lt;/a&gt;.  &lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/7203226553925767423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.resetlogs.fr/2014/08/ol7-deltarpms.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/7203226553925767423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/7203226553925767423'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/2014/08/ol7-deltarpms.html' title='Accélerer les mises à jour d&#39;Oracle Linux 7 avec les &quot;Delta RPMs&quot;'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-U-ms0j1yD_c/U9zKJqepWLI/AAAAAAAAJTE/rgR2lK39z7g/s72-c/dreamstime_xs_31736780.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8409134974669171624.post-2927797946807727282</id><published>2014-07-25T21:59:00.001-07:00</published><updated>2014-07-25T21:59:16.022-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Automation"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle Linux"/><title type='text'>Personnaliser cdroms, ISOs et USBs Redhat/Oracle Linux - Partie 2</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-vX1GT6-t2DQ/U8y3Z6w-ySI/AAAAAAAAJMA/SxegEvVr394/s1600/dreamstime_xs_26552880.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-vX1GT6-t2DQ/U8y3Z6w-ySI/AAAAAAAAJMA/SxegEvVr394/s1600/dreamstime_xs_26552880.jpg&quot; height=&quot;133&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;La&amp;nbsp;&lt;a href=&quot;http://www.resetlogs.fr/2014/07/ol-custom-iso-part1.html&quot; target=&quot;_blank&quot;&gt;première partie de cet article présente comment ajouter un fichier kickstart à un fichier ISO Oracle Linux 7&lt;/a&gt;&amp;nbsp;et comment modifier le menu de boot pour prendre en charge ce fichier sans éditer la commande de démarrage. Il existe d&#39;autres raisons pour personnaliser un ISO ; il est possible d&#39;ajouter ou de remplacer les RPMs qu&#39;il contient. Vous pouvez avoir besoin d&#39;ajouter un RPM que vous avez créé comme&amp;nbsp;&lt;a href=&quot;http://www.arkzoyd.com/2013/07/24/oracledb-rpm1/&quot; target=&quot;_blank&quot;&gt;le RPM qui contient le moteur Oracle&lt;/a&gt;&amp;nbsp;ou un RPM tiers. C&#39;est précisément l&#39;objet de cette seconde partie... Et, comme vous vous en rendrez compte par vous-même, c&#39;est très facile !&lt;br /&gt;&lt;br /&gt;Ce type de changement a des implications autres que techniques et notamment sur la distribution. Evitez de diffuser des ISO modifiés ou, à minima, vérifiez ce que vous avez le droit de faire au préalable. Quoi qu&#39;il en soit, personnaliser des ISO peut réellement accélérer certaines installations. C&#39;est intéressant de comprendre comment faire...&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;h1&gt;Construire un RPM&lt;/h1&gt;L&#39;objectif de cet article est d&#39;ajouter un RPM au CD Oracle Linux 7. Pour faire simple, créez le fichier de spécification ci-dessous :&lt;br /&gt;&lt;pre&gt;cat dummy.spec &lt;br /&gt;&lt;i&gt;Summary:      A dummy package&lt;br /&gt;Name:         dummy&lt;br /&gt;Version:      1.0&lt;br /&gt;Release:      1&lt;br /&gt;License:      GPLv2&lt;br /&gt;Group:        System Environment/Base&lt;br /&gt;BuildArch:    noarch&lt;br /&gt;&lt;br /&gt;%description&lt;br /&gt;A dummy package&lt;br /&gt;&lt;br /&gt;%files&lt;/i&gt;&lt;/pre&gt;Vous pouvez alors créer un RPM avec la commande &lt;code&gt;rpmbuild&lt;/code&gt;&amp;nbsp;:&lt;br /&gt;&lt;pre&gt;rpmbuild -bb dummy.spec &lt;br /&gt;&lt;i&gt;Processing files: dummy-1.0-1.noarch&lt;br /&gt;Provides: dummy = 1.0-1&lt;br /&gt;Requires(rpmlib): rpmlib(FileDigests) &amp;lt;= [...] &amp;lt;= 3.0.4-1&lt;br /&gt;Checking for unpackaged file(s): check-files dummy-1.0-1.x86_64&lt;br /&gt;Wrote: /root/rpmbuild/RPMS/noarch/dummy-1.0-1.noarch.rpm&lt;br /&gt;Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.bR2LDH&lt;br /&gt;+ umask 022&lt;br /&gt;+ cd /root/rpmbuild/BUILD&lt;br /&gt;+ /usr/bin/rm -rf /root/rpmbuild/BUILDROOT/dummy-1.0-1.x86_64&lt;br /&gt;+ exit 0&lt;/i&gt;&lt;/pre&gt;&lt;h1&gt;Ajouter le RPM à l&#39;ISO&lt;/h1&gt;Pour reconstruire un ISO, vous devez en extraire le contenu dans un répertoire comme décrit dans &lt;a href=&quot;http://www.resetlogs.fr/2014/07/ol-custom-iso-part1.html&quot; target=&quot;_blank&quot;&gt;la première partie de cet article&lt;/a&gt;. Utilisez un répertoire nommé &lt;code&gt;OL7&lt;/code&gt;. Une fois l&#39;opération réalisée, ajouter un RPM consiste simplement à l&#39;ajouter dans le répertoire&amp;nbsp;&lt;code&gt;Packages&lt;/code&gt;&amp;nbsp;:&lt;br /&gt;&lt;pre&gt;cp -p /root/rpmbuild/RPMS/noarch/dummy-1.0-1.noarch.rpm OL7/Packages/.&lt;/pre&gt;&lt;h1&gt;Reconstruire le référentiel&lt;/h1&gt;La commande &lt;code&gt;createrepo&lt;/code&gt;&amp;nbsp;permet de reconstruire les fichiers d&#39;index des RPM. Avant de procéder, conservez une copie du fichier&amp;nbsp;&lt;code&gt;comps-Server.xml&lt;/code&gt;. Ce fichier contient la description des différents types d&#39;installation ainsi que les groupes et packages associés.&lt;br /&gt;&lt;pre&gt;cd OL7  &lt;br /&gt;cp repodata/*-comps-Server.xml comps.xml&lt;/pre&gt;Reconstruire le référentiel nécessite de lister les RPM et de lancer la commande&amp;nbsp;&lt;code&gt;createrepo&lt;/code&gt;&amp;nbsp;: &lt;br /&gt;&lt;pre&gt;find Packages -iname &quot;*.rpm&quot;|sort &amp;gt; rpms.lst&lt;br /&gt;createrepo -o . -i rpms.lst .&lt;br /&gt;rm rpms.lst&lt;/pre&gt;&lt;h1&gt;Personnaliser le fichier comps.xml&lt;/h1&gt;Pour lier le RPM à un type d&#39;installation donné ou ajouter un nouveau type d&#39;installation, il faut adapter le fichier&amp;nbsp;&lt;code&gt;comps-Server.xml&lt;/code&gt;. Dans l&#39;exemple qui suit, le package dummy est ajouté au groupe&amp;nbsp;&lt;code&gt;Core&lt;/code&gt;. Pour cela la ligne rouge ci-dessous a simplement été ajoutée à la list des packages : &lt;br /&gt;&lt;pre&gt;&amp;lt;group&amp;gt;&lt;br /&gt;    &amp;lt;id&amp;gt;core&amp;lt;/id&amp;gt;&lt;br /&gt;    &amp;lt;name&amp;gt;Core&amp;lt;/name&amp;gt;&lt;br /&gt;    ...&lt;br /&gt;    &amp;lt;packagelist&amp;gt;&lt;br /&gt;       ...&lt;br /&gt;       &lt;em&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;&amp;lt;packagereq type=&quot;default&quot;&amp;gt;dummy&amp;lt;/packagereq&amp;gt;&lt;/b&gt;&lt;/span&gt;&lt;/em&gt;&lt;/pre&gt;Une fois le fichier modifié, il peut être repositionné dans le répertoire&amp;nbsp;&lt;code&gt;repodata&lt;/code&gt; et préfixé par sa clé de hash SHA256 : &lt;br /&gt;&lt;pre&gt;cp comps.xml \&lt;br /&gt;   repodata/`sha256sum comps.xml|cut -d&#39; &#39; -f1`-comps-Server.xml&lt;br /&gt;&lt;br /&gt;gzip comps.xml&lt;br /&gt;export SIG=`sha256sum comps.xml.gz|cut -d&#39; &#39; -f1`&lt;br /&gt;mv  comps.xml.gz  repodata/$SIG-comps-Server.xml.gz&lt;/pre&gt;&lt;blockquote&gt;Note Importante:&lt;br /&gt;Contrairement à Oracle Linux 6, OL7 ne permet plus de sélectionner un unique RPM dans l&#39;installation. C&#39;est la raison pour laquelle apprendre à modifier ce fichier, y compris ajouter de nouveau type d&#39;installation est utile...&lt;/blockquote&gt;&lt;h1&gt;Référencer le fichier dans repomd.xml&lt;/h1&gt;Pour en terminer avec la personalisation, le fichier et sa version compressée doivent être référencés dans&amp;nbsp;&lt;code&gt;repodata/repomd.xml&lt;/code&gt;. Vérifier préalablement les tailles, dates de création et nom des dichiers à l&#39;aide de la commande ci-dessous :&lt;br /&gt;&lt;pre&gt;cd repodata&lt;br /&gt;ls -l --time-style=+%s *comps-Server.xml*&lt;br /&gt;&lt;i&gt;-rw-r--r--. 1 root root 632976 1406309424 1fee86c5fdabac0aa1609cf27e7a75fbbf6bec94602a3dda9b2e69a3056f215d-comps-Server.xml&lt;br /&gt;-rw-r--r--. 1 root root 137762 1406309422 7943914c495c230c524d38caf65d364d25d04005782a98afbce3bbd9ec64d042-comps-Server.xml.gz&lt;/i&gt;&lt;/pre&gt;Adaptez les 2 sections ci-dessous et ajoutez les au fichier &lt;code&gt;repomd.xml&lt;/code&gt; :&lt;br /&gt;&lt;pre&gt;&lt;i&gt;&amp;lt;data type=&quot;group&quot;&amp;gt;&lt;br /&gt;  &amp;lt;checksum type=&quot;sha256&quot;&amp;gt;1fee86c5fdabac0aa1609cf27e7a75fbbf6bec94602a3dda9b2e69a3056f215d&amp;lt;/checksum&amp;gt;&lt;br /&gt;  &amp;lt;location href=&quot;repodata/1fee86c5fdabac0aa1609cf27e7a75fbbf6bec94602a3dda9b2e69a3056f215d-comps-Server.xml&quot;/&amp;gt;&lt;br /&gt;  &amp;lt;timestamp&amp;gt;1406309424&amp;lt;/timestamp&amp;gt;&lt;br /&gt;  &amp;lt;size&amp;gt;632976&amp;lt;/size&amp;gt;&lt;br /&gt;&amp;lt;/data&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;data type=&quot;group_gz&quot;&amp;gt;&lt;br /&gt;  &amp;lt;checksum type=&quot;sha256&quot;&amp;gt;7943914c495c230c524d38caf65d364d25d04005782a98afbce3bbd9ec64d042&amp;lt;/checksum&amp;gt;&lt;br /&gt;  &amp;lt;open-checksum type=&quot;sha256&quot;&amp;gt;1fee86c5fdabac0aa1609cf27e7a75fbbf6bec94602a3dda9b2e69a3056f215d&amp;lt;/open-checksum&amp;gt;&lt;br /&gt;  &amp;lt;location href=&quot;repodata/7943914c495c230c524d38caf65d364d25d04005782a98afbce3bbd9ec64d042-comps-Server.xml.gz&quot;/&amp;gt;&lt;br /&gt;  &amp;lt;timestamp&amp;gt;1406309422&amp;lt;/timestamp&amp;gt;&lt;br /&gt;  &amp;lt;size&amp;gt;137762&amp;lt;/size&amp;gt;&lt;br /&gt;&amp;lt;/data&amp;gt;&lt;/i&gt;&lt;/pre&gt;&lt;h1&gt;Recréer le fichier ISO&lt;/h1&gt;Le fichier ISO peut alors simplement être recréé avec les commandes&amp;nbsp;&lt;code&gt;mkisofs&lt;/code&gt; et&amp;nbsp;&lt;code&gt;implantisomd5&lt;/code&gt; comme décrit précédemment :&lt;br /&gt;&lt;pre&gt;mkisofs -r -T -J -V &quot;OL-7.0 Server.x86_64&quot; \ &lt;br /&gt;   -b isolinux/isolinux.bin \&lt;br /&gt;   -c isolinux/boot.cat \&lt;br /&gt;   -no-emul-boot -boot-load-size 4 \&lt;br /&gt;   -boot-info-table     \&lt;br /&gt;   -o OracleLinux7.iso OL7/&lt;br /&gt;&lt;br /&gt;implantisomd5 OracleLinux7.iso&lt;/pre&gt;&lt;h1&gt;Tester&lt;/h1&gt;Enfin, vérifiez et tester le fichier ISO. Le plus simple est d&#39;utiliser Virtualbox.&lt;br /&gt;&lt;br /&gt;Comme vous l&#39;autez compris, personnaliser un ISO peut s&#39;avérer très utile pour accélérer des installations sans forcément les scripter entièrement avec kickstart. Il est ainsi possible de mettre à jour le DVD Oracle Linux avec les derniers noyaux et correctifs. Comme vous vous en serez également rendu compte, il est extrêmement facile d&#39;ajouter un fichier ou un programme dans un ISO et, mieux vaut donc, toujours, en vérifier la source et la signature.&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;&lt;i&gt;Bibliographie :&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;Pour en savoir plus sur le sujet de cet article, vous pouvez lire : &lt;a href=&quot;https://fedoraproject.org/wiki/How_to_use_and_edit_comps.xml_for_package_groups&quot; target=&quot;_blank&quot;&gt;How to use and edit comps.xml for package groups&lt;/a&gt;.&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/2927797946807727282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.resetlogs.fr/2014/07/ol-custom-iso-part2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/2927797946807727282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/2927797946807727282'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/2014/07/ol-custom-iso-part2.html' title='Personnaliser cdroms, ISOs et USBs Redhat/Oracle Linux - Partie 2'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-vX1GT6-t2DQ/U8y3Z6w-ySI/AAAAAAAAJMA/SxegEvVr394/s72-c/dreamstime_xs_26552880.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8409134974669171624.post-291491521988325718</id><published>2014-07-21T00:48:00.001-07:00</published><updated>2014-07-21T00:48:36.041-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Automation"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle Linux"/><title type='text'>Personnaliser cdroms, ISOs et USBs Redhat/Oracle Linux - Partie 1</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-vX1GT6-t2DQ/U8y3Z6w-ySI/AAAAAAAAJL8/SvgytIFCxI4/s1600/dreamstime_xs_26552880.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-vX1GT6-t2DQ/U8y3Z6w-ySI/AAAAAAAAJL8/SvgytIFCxI4/s1600/dreamstime_xs_26552880.jpg&quot; height=&quot;133&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Personnaliser cdroms, ISOs et clés usb Redhat/Oracle Linux peut être très utile... Cela permet d&#39;accélérer l&#39;installation de serveurs à l&#39;aide de fichiers kickstart prédéfinis ; Cela permet de réduire les distributions à quelques centaines de Mo. Il est possible de réaliser des configurations non supportées par le programme de configuration initiale d&#39;Anaconda et il est possible d&#39;ajouter des RPMs ou des scripts spécifiques. Ces articles présentent comment modifier des ISOs et comment les utiliser.&lt;br /&gt;&lt;br /&gt;Evidemment, si vous avez de nombreux serveurs et VMs, utiliser des référentiels de RPMs avec PXE, xenpvnetboot ou des modèles/templates est la bonne façon de procéder. Si, à l&#39;inverse, vous traitez uniquement avec quelques VMs sur votre ordinateur portable ou quelques serveurs que vous installez manuellement, utiliser des ISOs personnalisés est simple et extrêmement rapide. Vous pouvez litéralement créer une distribution en moins de 10 minutes. Cette première partie présente comment ajouter un fichier kickstart à une distribution. Pour cela, nous utiliserons le fichier ISO d&#39;Oracle Linux 7 Early Adopter. Personnaliser les autres distributions basées sur Redhat n&#39;est généralement pas très différent...&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h1&gt;Extraire la distribution&lt;/h1&gt;Pour personnaliser une distribution, vous devez la télécharger et l&#39;extraire dans un répertoire. Nous utiliserons un répertoire&amp;nbsp;&lt;code&gt;OL7&lt;/code&gt; ci-dessous :&lt;br /&gt;&lt;pre&gt;mkdir /tmp/iso&lt;br /&gt;&lt;br /&gt;sudo mount -o loop \&lt;br /&gt;     linux/OracleLinux-R7-U0-Server-x86_64-dvd.iso \&lt;br /&gt;     /tmp/iso&lt;br /&gt;&lt;i&gt;[sudo] password for gregory: &lt;br /&gt;mount: /dev/loop0 is write-protected, mounting read-only&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;mkdir OL7&lt;br /&gt;sudo cp -Rp /tmp/iso/* OL7&lt;br /&gt;sudo umount /tmp/iso&lt;br /&gt;&lt;/pre&gt;&lt;h1&gt;Ajouter un fichier kickstart&lt;/h1&gt;Pour personnaliser cet ISO, nous ajouterons un fichier kickstart à la racine de la distribution. Vous pourrez alors gérer la plupart des aspects de l&#39;installation à l&#39;aide de ce fichier et grace &lt;a href=&quot;https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-kickstart-installations.html&quot; target=&quot;_blank&quot;&gt;aux différentes directives &amp;nbsp;kickstart&lt;/a&gt;. Si ce n&#39;est pas possible, vous pourrez toujours déployer et exécuter des scripts spécifiques. Vous trouverez ci-dessous un exemple de configuration qui :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;réalise l&#39;installation depuis le lecteur de cdrom&lt;/li&gt;&lt;li&gt;configure le premier lien réseau en DHCP&lt;/li&gt;&lt;li&gt;change le clavier en français&lt;/li&gt;&lt;li&gt;défini &quot;manager&quot; comme mot de passe root&lt;/li&gt;&lt;li&gt;désactive SELinux&lt;/li&gt;&lt;li&gt;positionne la timezone&lt;/li&gt;&lt;li&gt;efface le contenu de /dev/sda et installe linux avec un &quot;layout&quot; par défaut&lt;/li&gt;&lt;li&gt;n&#39;exédute pas le programme de configuration initiale&lt;/li&gt;&lt;li&gt;arrête le serveur une fois l&#39;installation réalisée&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;cd OL7&lt;br /&gt;sudo cat ks.cfg &lt;br /&gt;&lt;i&gt;install&lt;br /&gt;cdrom&lt;br /&gt;lang en_US.UTF-8&lt;br /&gt;keyboard fr&lt;br /&gt;network --onboot yes --device link --bootproto dhcp --noipv6&lt;br /&gt;rootpw manager&lt;br /&gt;firewall --service=ssh&lt;br /&gt;authconfig --enableshadow --passalgo=sha512&lt;br /&gt;selinux --disabled&lt;br /&gt;timezone Europe/Paris --isUtc --nontp&lt;br /&gt;bootloader --location=mbr --boot-drive=sda&lt;br /&gt;text&lt;br /&gt;skipx&lt;br /&gt;zerombr&lt;br /&gt;clearpart --all --initlabel&lt;br /&gt;autopart&lt;br /&gt;firstboot --disabled&lt;br /&gt;poweroff&lt;br /&gt; &lt;br /&gt;%packages&lt;br /&gt;@base&lt;br /&gt;@core&lt;br /&gt;%end&lt;/i&gt;&lt;br /&gt;&lt;/pre&gt;&lt;h1&gt;Personnaliser le menu de démarrage&lt;/h1&gt;Nous pouvons ensuite ajouter un menu dans le fichier&amp;nbsp;&lt;code&gt;isolinux/isolinux.cfg&lt;/code&gt; de manière à démarrer l&#39;installation avec le fichier kickstart précédent. Ajoutez la section ci-après dans le fichier:&lt;br /&gt;&lt;pre&gt;label auto&lt;br /&gt;  menu label Oracle Linux 7.0 ^Kickstart install&lt;br /&gt;  menu default&lt;br /&gt;  kernel vmlinuz&lt;br /&gt;  append initrd=initrd.img inst.ks=cdrom:/ks.cfg inst.stage2=hd:LABEL=OL-7.0\x20Server.x86_64 &lt;/pre&gt;&lt;blockquote&gt;Note 1:&lt;br /&gt;Il faut supprimer la directive &amp;nbsp;&lt;code&gt;menu default&lt;/code&gt; du menu auquel il était précédemment attaché ; Par ailleurs, pour accéléder l&#39;installation vous pouvez changer la clause&amp;nbsp;&lt;code&gt;timeout 600&lt;/code&gt; en&amp;nbsp;&lt;code&gt;timeout 100&lt;/code&gt;&lt;/blockquote&gt;&lt;blockquote&gt;Note 2:&lt;br /&gt;Il est important de référencer le bon libellé du fichier ISO dans&amp;nbsp;&lt;code&gt;inst.stage2&lt;/code&gt; , c&#39;est à dire celui qui sera utilisé lors de sa création.&lt;/blockquote&gt;&lt;h1&gt;Re-packager le fichier ISO&lt;/h1&gt;Pour terminer, nous créerons le fichier ISO à partir du répertoire modifié&amp;nbsp;&lt;code&gt;OL7&lt;/code&gt;&amp;nbsp;:&lt;br /&gt;&lt;pre&gt;sudo  mkisofs -r -T -J -V &quot;OL-7.0 Server.x86_64&quot; \&lt;br /&gt;    -b isolinux/isolinux.bin -c isolinux/boot.cat \&lt;br /&gt;    -no-emul-boot -boot-load-size 4 -boot-info-table \&lt;br /&gt;    -o /tmp/OracleLinux7.iso OL7/&lt;br /&gt;&lt;br /&gt;sudo implantisomd5 /tmp/OracleLinux7.iso&lt;br /&gt;checkisomd5 /tmp/OracleLinux7.iso&lt;br /&gt;&lt;/pre&gt;&lt;blockquote&gt;Note:&lt;br /&gt;Si vous n&#39;avez pas accès aux commandes ci-dessus, vérifiez que les RPMs genisoimage et isomd5sum ont bien été installés sur votre système.&lt;/blockquote&gt;&lt;h1&gt;Tester le fichier ISO&lt;/h1&gt;Enfin pour terminer, nous pouvons tester notre installation ainsi que les options associées :&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-qs-GL3YZ8RY/U8y3geM1r9I/AAAAAAAAJME/U7NcBt2qxJw/s1600/blue.resetlogs.com+%5BRunning%5D+-+Oracle+VM+VirtualBox_013.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-qs-GL3YZ8RY/U8y3geM1r9I/AAAAAAAAJME/U7NcBt2qxJw/s1600/blue.resetlogs.com+%5BRunning%5D+-+Oracle+VM+VirtualBox_013.png&quot; height=&quot;476&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;&lt;i&gt;Bibliographie&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;Redhat Enterprise Linux 7&lt;br /&gt;Installation Guide&lt;br /&gt;&lt;a href=&quot;https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-kickstart-installations.html&quot;&gt;Chapter 23. Kickstart Installations&lt;/a&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/291491521988325718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.resetlogs.fr/2014/07/ol-custom-iso-part1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/291491521988325718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/291491521988325718'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/2014/07/ol-custom-iso-part1.html' title='Personnaliser cdroms, ISOs et USBs Redhat/Oracle Linux - Partie 1'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-vX1GT6-t2DQ/U8y3Z6w-ySI/AAAAAAAAJL8/SvgytIFCxI4/s72-c/dreamstime_xs_26552880.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8409134974669171624.post-6542495343095700038</id><published>2014-07-15T06:21:00.001-07:00</published><updated>2014-08-13T00:35:25.294-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Automation"/><category scheme="http://www.blogger.com/atom/ns#" term="Provisioning"/><title type='text'>Installer la base de données Oracle 12.1 en ligne de commande et &quot;silent&quot;</title><content type='html'>&lt;a href=&quot;http://2.bp.blogspot.com/-HdGjkwx46OY/U8UfJqLIinI/AAAAAAAAJJo/XAw02MxevrM/s1600/dreamstime_xs_33571831.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-HdGjkwx46OY/U8UfJqLIinI/AAAAAAAAJJo/XAw02MxevrM/s1600/dreamstime_xs_33571831.jpg&quot; height=&quot;133&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;Installer et configurer des bases de données Oracle est probablement la première tache que les DBA voudront automatiser. Evidemment, ce n&#39;est pas la tache qui coute le plus cher mais ce n&#39;est pas non plus la plus difficile à mettre en oeuvre. D&#39;un autre côté, l&#39;installation arrive à un très mauvais moment si vous n&#39;êtes pas en charge ou si vous n&#39;avez pas déjà automatisé l&#39;installation et la configuration des systèmes d&#39;exploitation. Quoiqu&#39;il en soit, cette opération est sans doute effectuée suffisamment fréquemment pour être intéressante à implémenter.&lt;br /&gt;&lt;br /&gt;Chaque version et parfois Patchset viennent avec leurs changements. Oracle 12.1 ne fait pas exception à la règle ! Avant d&#39;automatiser et de vous appuyer sur votre outil préféré pour les déployer, cet article présente les différentes lignes de commande que devez utiliser pour réaliser des installations en mode silencieux sur la plupart des systèmes.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h1&gt;Vérifier les pré-requis&lt;/h1&gt;Avant d&#39;installer les logiciels Oracle, il faut s&#39;assurer que l&#39;ensemble des pré-requis sur le système sont réunis. Lorsque&#39;Oracle Linux 6 est utilisé, cette étape est aussi simple que d&#39;installer le RPM &lt;code&gt;oracle-rdbms-server-12cR1-preinstall&lt;/code&gt; :&lt;br /&gt;&lt;pre&gt;# yum -y install oracle-rdbms-server-12cR1-preinstall.x86_64&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Setting up Install Process&lt;br /&gt;Resolving Dependencies&lt;br /&gt;[...]&lt;br /&gt;Installed:&lt;br /&gt;  oracle-rdbms-server-12cR1-preinstall.x86_64 0:1.0-11.el6&lt;br /&gt;Dependency Installed:&lt;br /&gt; bc.x86_64 0:1.06.95-1.el6                   bind-libs.x86_64 32:9.8.2-0.23.rc1.el6_5.1&lt;br /&gt; bind-utils.x86_64 32:9.8.2-0.23.rc1.el6_5.1 compat-libcap1.x86_64 0:1.10-1&lt;br /&gt; compat-libstdc++-33.x86_64 0:3.2.3-69.el6   gcc-c++.x86_64 0:4.4.7-4.el6&lt;br /&gt; keyutils.x86_64 0:1.4-4.el6                 ksh.x86_64 0:20120801-10.el6_5.7&lt;br /&gt; libICE.x86_64 0:1.0.6-1.el6                 libSM.x86_64 0:1.2.1-2.el6&lt;br /&gt; libX11.x86_64 0:1.5.0-4.el6                 libX11-common.noarch 0:1.5.0-4.el6&lt;br /&gt; libXau.x86_64 0:1.0.6-4.el6                 libXext.x86_64 0:1.3.1-2.el6&lt;br /&gt; libXi.x86_64 0:1.6.1-3.el6                  libXinerama.x86_64 0:1.1.2-2.el6&lt;br /&gt; libXmu.x86_64 0:1.1.1-2.el6                 libXrender.x86_64 0:0.9.7-2.el6&lt;br /&gt; libXt.x86_64 0:1.1.3-1.el6                  libXtst.x86_64 0:1.2.1-2.el6&lt;br /&gt; libXv.x86_64 0:1.0.7-2.el6                  libXxf86dga.x86_64 0:1.1.3-2.el6&lt;br /&gt; libXxf86misc.x86_64 0:1.0.3-4.el6           libXxf86vm.x86_64 0:1.1.2-2.el6&lt;br /&gt; libaio.x86_64 0:0.3.107-10.el6              libaio-devel.x86_64 0:0.3.107-10.el6&lt;br /&gt; libdmx.x86_64 0:1.1.2-2.el6                 libedit.x86_64 0:2.11-4.20080712cvs.1.el6&lt;br /&gt; libevent.x86_64 0:1.4.13-4.el6              libgssglue.x86_64 0:0.1-11.el6&lt;br /&gt; libstdc++-devel.x86_64 0:4.4.7-4.el6        libtirpc.x86_64 0:0.2.1-6.el6_5.2&lt;br /&gt; libxcb.x86_64 0:1.8.1-1.el6                 mailx.x86_64 0:12.4-7.el6&lt;br /&gt; nfs-utils.x86_64 1:1.2.3-39.el6_5.3         nfs-utils-lib.x86_64 0:1.1.5-6.el6&lt;br /&gt; openssh-clients.x86_64 0:5.3p1-94.el6       rpcbind.x86_64 0:0.2.0-11.el6&lt;br /&gt; smartmontools.x86_64 1:5.43-1.el6           sysstat.x86_64 0:9.0.4-22.el6&lt;br /&gt; xorg-x11-utils.x86_64 0:7.5-6.el6           xorg-x11-xauth.x86_64 1:1.0.2-7.1.el6&lt;br /&gt;&lt;br /&gt;Complete!&lt;/i&gt;&lt;/pre&gt;&lt;blockquote&gt;Note:&lt;br /&gt;Il est important que le nom du serveur puisse être résolu depuis le serveur pour réaliser l&#39;installation. Si les systèmes ne s&#39;appuient pas sur un DHCP et/ou sur un DNS, il faudra s&#39;assurer que le nom du serveur figure dans le fichier&amp;nbsp;&lt;code&gt;/etc/hosts.&lt;/code&gt;&lt;/blockquote&gt;&lt;h1&gt;Créer&amp;nbsp;&lt;code&gt;ORACLE_BASE&lt;/code&gt; et Inventory&lt;/h1&gt;Avant d&#39;installer le logiciel Oracle, vous devrez créer, sous l&#39;utilisateur root, un répertoire racine, un répertoire ORACLE_BASE et un répertoire Inventory. La procédure associée dépend possiblement du système d&#39;exploitation. Avec Unix et Linux, vous pouvez simplement créer 3 répertoires avec les commande ci-dessous ; les emplacements de ces répertoires peuvent être modifiés pour correspondre à vos besoins : &lt;br /&gt;&lt;pre&gt;if [ ! -d /u01 ]; then&lt;br /&gt;   mkdir -p /u01/app/oracle/distribs&lt;br /&gt;   mkdir -p /u01/app/oraInventory&lt;br /&gt;   chown -R oracle:dba /u01&lt;br /&gt;fi&lt;/pre&gt;Une fois les répertoires créés, il faut ajouter le répertoire oraInst.loc à l&#39;emplacement adéquat comme dans le script ci-dessous sur Linux : &lt;br /&gt;&lt;pre&gt;if [ ! -f /etc/oraInst.loc ]; then&lt;br /&gt;   cat &amp;gt;/etc/oraInst.loc &amp;lt;&amp;lt;EOF&lt;br /&gt;inventory_loc=/u01/app/oraInventory&lt;br /&gt;inst_group=oinstall&lt;br /&gt;EOF&lt;br /&gt;  chown root:oinstall /etc/oraInst.loc&lt;br /&gt;  chown 640 /etc/oraInst.loc&lt;br /&gt;fi&lt;/pre&gt;&lt;h1&gt;Installer le logiciel Oracle&lt;/h1&gt;En supposant que le logiciel Oracle soit téléchargé et décompressé dans le répertoire&amp;nbsp;&lt;code&gt;/u01/app/oracle/distribs&lt;/code&gt;, l&#39;installation ressemblera à celle ci-dessous :&lt;br /&gt;&lt;pre&gt;cd /u01/app/oracle/distribs/database&lt;br /&gt;export DISTRIB=`pwd`&lt;br /&gt;./runInstaller -silent -responseFile $DISTRIB/response/db_install.rsp \&lt;br /&gt;   oracle.install.option=INSTALL_DB_SWONLY \&lt;br /&gt;   ORACLE_HOME=/u01/app/oracle/product/12.1.0/db_1 \&lt;br /&gt;   ORACLE_BASE=/u01/app/oracle \&lt;br /&gt;   oracle.install.db.InstallEdition=EE \&lt;br /&gt;   oracle.install.db.DBA_GROUP=dba \&lt;br /&gt;   oracle.install.db.BACKUPDBA_GROUP=dba \&lt;br /&gt;   oracle.install.db.DGDBA_GROUP=dba \&lt;br /&gt;   oracle.install.db.KMDBA_GROUP=dba \&lt;br /&gt;   DECLINE_SECURITY_UPDATES=true \&lt;br /&gt;   SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \&lt;br /&gt;   oracle.installer.autoupdates.option=SKIP_UPDATES&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Starting Oracle Universal Installer...&lt;br /&gt;&lt;br /&gt;Checking Temp space: must be greater than 500 MB.   Actual 35722 MB    Passed&lt;br /&gt;Checking swap space: must be greater than 150 MB.   Actual 3967 MB    Passed&lt;br /&gt;Preparing to launch Oracle Universal Installer from /tmp/OraInstall2014-07-14_07-03-22AM. Please wait ...&lt;br /&gt;[WARNING] - My Oracle Support Username/Email Address Not Specified&lt;br /&gt;&lt;br /&gt;You can find the log of this install session at:&lt;br /&gt; /u01/app/oraInventory/logs/installActions2014-07-14_07-03-22AM.log&lt;br /&gt;The installation of Oracle Database 12c was successful.&lt;br /&gt;Please check &#39;/u01/app/oraInventory/logs/silentInstall2014-07-14_07-03-22AM.log&#39; for more details.&lt;br /&gt;&lt;br /&gt;As a root user, execute the following script(s):&lt;br /&gt; 1. /u01/app/oracle/product/12.1.0/db_1/root.sh&lt;br /&gt;&lt;br /&gt;Successfully Setup Software.&lt;/i&gt;&lt;/pre&gt;Comme vous pourrez le vérifier par ailleurs, l&#39;installeur nécessite désormais de déclarer des groupes systèmes pour les différents privileges d&#39;administration SYSDBA, SYSBACKUP, SYSDG et SYSKM. Une fois l&#39;installation terminée, vous pourrez exécuter le script root.sh :&lt;br /&gt;&lt;pre&gt;sudo  /u01/app/oracle/product/12.1.0/db_1/root.sh&lt;br /&gt;&lt;i&gt;[sudo] password for oracle: &lt;br /&gt;Check /u01/app/oracle/product/12.1.0/db_1/install/root_black.resetlogs.com_2014-07-14_07-07-45.log for the output of root script&lt;/i&gt;&lt;/pre&gt;&lt;h1&gt;Configurer et démarrer les Listeners&lt;/h1&gt;Avant de créer la base de données, vous voudrez créer et configurer le listener avec la commande &lt;code&gt;netca&lt;/code&gt;&amp;nbsp;: &lt;br /&gt;&lt;pre&gt;. oraenv&lt;br /&gt;&lt;i&gt;ORACLE_SID = [oracle] ? &lt;br /&gt;ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/product/12.1.0/db_1&lt;br /&gt;The Oracle base has been set to /u01/app/oracle&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;netca -silent \&lt;br /&gt; -responsefile /u01/app/oracle/product/12.1.0/db_1/network/install/netca_typ.rsp &lt;br /&gt;&lt;br /&gt;&lt;i&gt;Parsing command line arguments:&lt;br /&gt;    Parameter &quot;silent&quot; = true&lt;br /&gt;    Parameter &quot;responsefile&quot; = /u01/app/oracle/product/12.1.0/db_1/network/install/netca_typ.rsp&lt;br /&gt;Done parsing command line arguments.&lt;br /&gt;Oracle Net Services Configuration:&lt;br /&gt;Profile configuration complete.&lt;br /&gt;Oracle Net Listener Startup:&lt;br /&gt;    Running Listener Control: &lt;br /&gt;      /u01/app/oracle/product/12.1.0/db_1/bin/lsnrctl start LISTENER&lt;br /&gt;    Listener Control complete.&lt;br /&gt;    Listener started successfully.&lt;br /&gt;Listener configuration complete.&lt;/i&gt;&lt;/pre&gt;&lt;h1&gt;Créer une base de données&lt;/h1&gt;Il ne reste plus qu&#39;à créer la base de données. La manière la plus rapide pour cela consiste à utiliser&amp;nbsp;&lt;code&gt;dbca&lt;/code&gt;. Il est possible de vérifier la syntaxe dans :&lt;br /&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;Oracle Database Administrator&#39;s Guide&lt;br /&gt;12c Release 1 (12.1)&lt;br /&gt;2 Creating and Configuring an Oracle Database&lt;br /&gt;&lt;a href=&quot;http://docs.oracle.com/cd/E16655_01/server.121/e17636/create.htm&quot;&gt;Creating a Database with DBCA&lt;/a&gt;&lt;/blockquote&gt;Ci-dessous est un exemple de création de base de données. Là encore, la version 12.1 arrive avec de nouveaux paramètres tels que&amp;nbsp;&lt;code&gt;createAsContainerDatabase&lt;/code&gt;:&lt;br /&gt;&lt;pre&gt;dbca -silent -createDatabase      \&lt;br /&gt;  -templateName New_Database.dbt  \&lt;br /&gt;  -gdbName BLACK                  \&lt;br /&gt;  -createAsContainerDatabase true \&lt;br /&gt;  -sysPassword change_on_install  \&lt;br /&gt;  -systemPassword manager         \&lt;br /&gt;  -emConfiguration NONE           \&lt;br /&gt;  -storageType FS                 \&lt;br /&gt;  -characterSet AL32UTF8          \&lt;br /&gt;  -totalMemory 1024&lt;/pre&gt;&lt;blockquote&gt;&lt;/blockquote&gt;Avant de vous précipiter pour installer et configurer vos bases de données Oracle automatiquement à l&#39;aide des jeux de commandes ci-dessus, une solution, bien meilleure, consiste à utiliser les fonctions de clone des produits Oracle. Cela sera le sujet du prochain article de ce blog...</content><link rel='replies' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/6542495343095700038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.resetlogs.fr/2014/07/db121-silentinstall.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/6542495343095700038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/6542495343095700038'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/2014/07/db121-silentinstall.html' title='Installer la base de données Oracle 12.1 en ligne de commande et &quot;silent&quot;'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-HdGjkwx46OY/U8UfJqLIinI/AAAAAAAAJJo/XAw02MxevrM/s72-c/dreamstime_xs_33571831.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8409134974669171624.post-3302580046750641019</id><published>2014-07-14T16:34:00.000-07:00</published><updated>2014-07-14T16:49:03.258-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cloud"/><title type='text'>Alter Blog Open Resetlogs... to the Cloud</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-lnhrE_fP5Q0/U8Rd7gQKNOI/AAAAAAAAJIg/Gk8J-4LGgL4/s1600/dreamstime_xs_27751656.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-lnhrE_fP5Q0/U8Rd7gQKNOI/AAAAAAAAJIg/Gk8J-4LGgL4/s1600/dreamstime_xs_27751656.jpg&quot; height=&quot;150&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;L&#39;utilisation du cloud et d&#39;Oracle ont avancé d&#39;un pas cette année. Depuis 6 mois, en plus de ceux qui utilisent Amazon Web Service ou qui souscrivent à des applications en mode SaaS, j&#39;ai rencontré des gens intéressés par de nouveaux clouds publics pour Oracle comme Microsoft Azure ou même Oracle&amp;nbsp;&lt;a href=&quot;https://cloud.oracle.com/database_backup&quot;&gt;Backup Database Cloud&lt;/a&gt;&amp;nbsp;- pour l&#39;instant. J&#39;ai également rencontré des personnes, fournisseurs d&#39;infrastructures privées de production, en mode PaaS qui s&#39;appuient sur Oracle. Si bien que je me demande dans quelle mesure 2014 pourrait changer la donne pour la technologie Oracle et le cloud.&lt;br /&gt;&lt;br /&gt;Ne vous méprenez pas, il n&#39;existe pas de baguette magique pour le cloud Oracle. Il n&#39;existe pas non plus une solution comme, vous achetez quelques serveurs Exa-, des packs et options supplémentaires et, waouh : vous obtenez un cloud Oracle élastique, sécurisé, qui ne s&#39;arrête jamais, en mode self-service, facturé à l&#39;utilisation et extrême. Tout ça n&#39;existe pas ! Et pourtant, les promesses du cloud Oracle sont absolument excitantes...&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;Le cloud transforme l&#39;informatique et Oracle embrasse le concept, au moins du point de vue des technologies... Si vous êtes DBA, le moment est venu de vous précipiter sur le cloud, à moins, bien sur, que vous soyez déjà du voyage. Pour dire ça autrement, le cloud est le challenge le plus important et le plus passionnant que les DBAs ont rencontré depuis des dizaines d&#39;années. Il va ouvrir de nouvelles opportunités et voici pourquoi :&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Le cloud, c&#39;est la combinaison des technologies :&lt;/i&gt;&lt;/b&gt;&amp;nbsp;les DBAs étaient des experts des bases de données : les plus talentueux connaissent et comprennent les réseaux, le stockage, les systèmes, les sauvegardes, le middleware et le code/les application. Avec les systèmes intégrés, les bases de données viennent désormais avec du réseau, du stockage et des systèmes que les DBAs doivent gérer. Les nouveaux modèles de déploiement du cloud Oracle comme Virtual Compute Appliance, les Flexpod ou Openstack vont renforcer cette tendance&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Le cloud, c&#39;est l&#39;automatisation :&lt;/i&gt;&lt;/b&gt;&amp;nbsp;depuis des années, les organisations ont outsourcées les DBA aux moins-disant. Les résultats sont des systèmes, pas si bon marché, gérés de manière lâche, vieillissant, hétérogènes, sous-utilisés et sous-optimisés. L&#39;automatisation et Devops promettent 10x plus d&#39;efficacité et un changement complet de culture.&amp;nbsp;Les DBAs devront réaliser plus de changements, de manière plus régulière et en gérant les risques associés&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Le cloud, c&#39;est les extensions et la localisation:&amp;nbsp;&lt;/i&gt;&lt;/b&gt;C&#39;est sans doute le plus grand changement pour les DBAs. Pour être des succès, les clouds doivent s&#39;adapter aux besoins et contraintes des organisations. Les DBAs devront diriger ces intégrations et s&#39;appuyer sur les nombreuses APIs cloud pour ce faire&lt;/li&gt;&lt;/ul&gt;Qu&#39;est-ce que ça change pour moi ?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Pendant des années, vous avez peut-être croisé mes articles en vous demandant qui est ce DBA bâtard qui s&#39;intéresse au SQL, au code et aux applications mais aussi aux systèmes, au réseau, au stockage et même aux technologies non-Oracle. Il se pourrait que je n&#39;ai pas été qu&#39;un bâtard mais un peu en avance sur mon temps et capable d&#39;en profiter maintenant.&lt;br /&gt;&lt;br /&gt;J&#39;ai réglé quelques problèmes personnels, j&#39;ai basculé à nouveau sur les technologies Oracle et j&#39;ai décidé de redémarrer mes articles à partir de ce nouvel angle : comment combiner, automatiser et étendre les technologies Oracle. Si vous êtes intéressé, vous pouvez recommencer à me suivre sur mon nouveau compte Twitter&amp;nbsp;&lt;a href=&quot;https://twitter.com/GregoryGuillou&quot; target=&quot;_blank&quot;&gt;@GregoryGuillou&lt;/a&gt;&amp;nbsp;et sur ce&amp;nbsp;&lt;a href=&quot;http://feeds.feedburner.com/resetlogsfr&quot; target=&quot;_blank&quot;&gt;Feed&lt;/a&gt;... Et de nouveaux articles paraîtront bientôt !</content><link rel='replies' type='application/atom+xml' href='http://www.resetlogs.fr/feeds/3302580046750641019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.resetlogs.fr/2014/07/resetlogs-to-the-cloud.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/3302580046750641019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8409134974669171624/posts/default/3302580046750641019'/><link rel='alternate' type='text/html' href='http://www.resetlogs.fr/2014/07/resetlogs-to-the-cloud.html' title='Alter Blog Open Resetlogs... to the Cloud'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-lnhrE_fP5Q0/U8Rd7gQKNOI/AAAAAAAAJIg/Gk8J-4LGgL4/s72-c/dreamstime_xs_27751656.jpg" height="72" width="72"/><thr:total>0</thr:total></entry></feed>