-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
for commit 1e21151
- Loading branch information
Showing
3 changed files
with
41 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -226,12 +226,24 @@ <h2 class="h2--large">Ansible - Découverte et premiers pas.</h2> | |
</li> | ||
<li class="table-of-contents__item"> | ||
<a href="#mise-en-route">Mise en route</a> | ||
</li> | ||
<li class="table-of-contents__item"> | ||
<a href="#infrastructure">Infrastructure</a> | ||
</li> | ||
<li class="table-of-contents__item"> | ||
<a href="#environnement-local">Environnement local</a> | ||
<ol class="table-of-contents__sub-level"> | ||
<li> | ||
<a href="#infrastructure">Infrastructure</a> | ||
<a href="#se-connecter-avec-le-client-ssh">Se connecter avec le client SSH</a> | ||
</li> | ||
<li> | ||
<a href="#configuration-du-client-ssh">Configuration du client SSH</a> | ||
</li> | ||
<li> | ||
<a href="#utilisation-de-l-agent-ssh">Utilisation de l'agent SSH</a> | ||
</li> | ||
<li> | ||
<a href="#environnement-local">Environnement local</a> | ||
<a href="#communication-ansible-serveurs-distants">Communication Ansible <> serveurs distants</a> | ||
</li> | ||
</ol> | ||
</li> | ||
|
@@ -269,22 +281,22 @@ <h2 id="prerequis" class="anchor-title"><a href="#prerequis">Prérequis</a></h2> | |
<ul> | ||
<li>D'au moins deux machines virtuelles accessibles via <strong>SSH</strong> (idéalement 4);</li> | ||
<li><strong><a href="https://docs.docker.com/engine/install/" target="_blank">Docker et Docker compose</a></strong> installés sur la machine de travail (Docker Desktop pour <a href="https://docs.docker.com/desktop/install/windows-install/" target="_blank">Windows</a> et <a href="https://docs.docker.com/desktop/install/mac-install/" target="_blank">OSX</a>);</li> | ||
<li>D'une installation d'Ansible récente (2.15.5), s'il est possible de l'installer localement je recommanderai plutôt d'utiliser le <a href="https://github.com/manala/manala-recipes/tree/master/lazy.ansible" target="_blank"><strong>Lazy Ansible</strong></a> du projet <a href="https://github.com/manala/" target="_blank"><strong>Manala</strong></a> comme expliqué <strong><a href="#">ici</a></strong>.</li> | ||
<li>D'une installation d'Ansible récente (2.15.5), s'il est possible de l'installer localement je recommanderai plutôt d'utiliser le <a href="/blog/cours/ansible/ansible-environnement-cle-en-main"><strong>Lazy Ansible</strong></a> du projet <a href="https://github.com/manala/" target="_blank"><strong>Manala</strong></a> comme expliqué <strong><a href="#">ici</a></strong>.</li> | ||
<li>D'une paire de clé de SSH que vous aurez pris soin de générer (voir <a href="/blog/cours/cle-ssh-principes-de-base">ici</a>) si vous n'en disposez pas déjà.</li> | ||
</ul> | ||
<p>En fonction de votre environnement de travail la mise en place des différents outils est décrite <strong><a href="#">ici</a></strong>.</p> | ||
<h2 id="mise-en-route" class="anchor-title"><a href="#mise-en-route">Mise en route</a></h2> | ||
<p>Première étape avant de pouvoir rentrer dans le vif du sujet, nous aurons besoin de mettre en place un environnement de travail dédié à nos travaux.</p> | ||
<h3 id="infrastructure" class="anchor-title"><a href="#infrastructure">Infrastructure</a></h3> | ||
<h2 id="infrastructure" class="anchor-title"><a href="#infrastructure">Infrastructure</a></h2> | ||
<p>Pour pouvoir configurer nos serveurs, il nous faudra... des serveurs, ou plutôt des machines virtuelles pour leur facilité à être arrêter, détruites et reconstruites. | ||
N'importe quel fournisseur de cloud publique peut faire l'affaire, utilisez celui avec lequel vous avez le plus d'affinités.</p> | ||
<p>Dans le cadre de l'IUT nous utiliserons OpenStack solution OpenSource qui a fait ses preuves et qui plus est disponible dans l'enceinte de l'université. | ||
C'est donc sur cette base que je présenterai les étapes suivantes, au demeurant, parfaitement transposables chez d'autres fournisseurs.</p> | ||
<p>Nous travaillerons avec deux environnements distincts, « Staging » et « Production » qui embarqueront chacune une instance applicative (qui portera donc le code d'une application) et une instance de base de données (chargée de faire fonctionner notre serveur de base de données). | ||
Si vous êtes limité en terme de création d'instance, il est envisageable de n'avoir qu'une instance par environnement, celle-ci embarquant l'applicatif et les données.</p> | ||
<h3 id="environnement-local" class="anchor-title"><a href="#environnement-local">Environnement local</a></h3> | ||
<h2 id="environnement-local" class="anchor-title"><a href="#environnement-local">Environnement local</a></h2> | ||
<p>Les étapes suivantes seront donc à exécuter à partir de votre machine.</p> | ||
<h4 id="se-connecter-avec-le-client-ssh" class="anchor-title"><a href="#se-connecter-avec-le-client-ssh">Se connecter avec le client SSH</a></h4> | ||
<h3 id="se-connecter-avec-le-client-ssh" class="anchor-title"><a href="#se-connecter-avec-le-client-ssh">Se connecter avec le client SSH</a></h3> | ||
<p>Considérant que vous remplissez les prérequis et que vous avez créé vos instances distantes nous allons pour commencer initier une « simple » connexion SSH vers notre instance.</p> | ||
<pre class="code-multiline"><code id="8f5d822d895a75c50ce49e32467e9de0">ssh [email protected]</code></pre> | ||
<p>Si vous rencontrez des soucis .. forbidden (exemple) essayer en ajoutant explicitement le chemin vers la clé.</p> | ||
|
@@ -295,7 +307,7 @@ <h4 id="se-connecter-avec-le-client-ssh" class="anchor-title"><a href="#se-conne | |
Pour rappel aux utilisateurs de Windows vous trouverez ce répertoire <code class="code-inline" id="cb8c8e9d73e8e1088ed383f5cbcc67d7">.ssh</code> dans <code class="code-inline" id="80b9a8b6fcc765fbabc31347355e782b">C:\Users\MonNomUtilisateur\</code> | ||
</p> | ||
</div> | ||
<h4 id="configuration-du-client-ssh" class="anchor-title"><a href="#configuration-du-client-ssh">Configuration du client SSH</a></h4> | ||
<h3 id="configuration-du-client-ssh" class="anchor-title"><a href="#configuration-du-client-ssh">Configuration du client SSH</a></h3> | ||
<p>Afin d'éviter d'avoir à spécifier le chemin vers la clé à chaque connexion et afin d'afiner la configuration de notre client nous pouvons également définir un fichier <code class="code-inline" id="4cc0ecc8128c171b864a0cdda4b4cdea">~/.ssh/config</code> contenant les directives suivantes:</p> | ||
<pre class="code-multiline"><code id="de020e8878496ef04ac49671f6dacc38">Host 192.168.140.* | ||
Port 22 | ||
|
@@ -309,17 +321,31 @@ <h4 id="configuration-du-client-ssh" class="anchor-title"><a href="#configuratio | |
<li><code class="code-inline" id="787f1d575c24fc4fca7057057499b6ac">ForwardAgent</code> permet d'activer le transfert d'identité vers l'agent SSH du serveur</li> | ||
</ul> | ||
<p>Cette configuration vous permet d'indiquer certaines directives de manière automatique pour un ou plusieurs hôtes distants, pour en savoir plus concernant les fichiers de configuration SSH vous pouvez aller jeter un oeil <a href="/blog/cours/utiliser-la-configuration-ssh-client">ici</a></p> | ||
<h4 id="communication-ansible-serveurs-distants" class="anchor-title"><a href="#communication-ansible-serveurs-distants">Communication Ansible <> serveurs distants</a></h4> | ||
<h3 id="utilisation-de-l-agent-ssh" class="anchor-title"><a href="#utilisation-de-l-agent-ssh">Utilisation de l'agent SSH</a></h3> | ||
<p>La prochaine étape est l'utilisation d'un service spécifique à SSH, <strong>l'agent</strong>.</p> | ||
<p>L'agent SSH sur la plupart des systèmes UNIX est lancé au démarrage de votre machine, toutefois si ça n'est pas le cas, il est possible de le démarrer avec la commande <code class="code-inline" id="7affca7621d83510206ba8b1a13f96f9">eval 'ssh-agent'</code>. | ||
Son rôle est de permettre de stocker de manière sécurisée votre/vos clés privées SSH (rappelez-vous c'est la partie que l'on ne partage pas !) mais également d'assurer le transfert de cette clé privée en toute sécurité vers les serveurs distants auxquels vous tenterez de vous connecter.</p> | ||
<h4 id="ajouter-une-cle-dans-l-agent" class="anchor-title"><a href="#ajouter-une-cle-dans-l-agent">Ajouter une clé dans l'agent</a></h4> | ||
<p>L'ajoute d'une clé dans un agent est trivial est se fait à l'aide de la commande <code class="code-inline" id="d649ca672e246a3c2d37410e02f6faee">ssh-add ~/.ssh/my_private_key</code>. Si vous avez protégé votre clé avec une passphrase elle vous sera demandée par l'agent au moment de son ajout. | ||
Afin de vérifier que votre clé a bien été ajoutée à votre agent vous pouvez lister les clés contenues à l'intérieur avec la commande <code class="code-inline" id="ee9779fab5acd31dfa8f7ffddaaea38e">ssh-add -l</code> qui devrait vous donner une sortie équivalente à la suivante:</p> | ||
<pre class="code-multiline"><code id="bffb407fa455f4a88b0ce327792c23f3">03:21:08 lazy@ansible_env lazy → ssh-add -l | ||
4096 SHA256:DtNHcQ4ozaDwcXuM5lxkehPL65x2Y0vrH0rn0D1+GZE [Univ Lyon1] - gfaivre-iut (RSA)</code></pre> | ||
<p>Cette étape, complétée par la directive <code class="code-inline" id="787f1d575c24fc4fca7057057499b6ac">ForwardAgent</code> contenu dans notre fichier de configuration SSH (pour rappel <code class="code-inline" id="4cc0ecc8128c171b864a0cdda4b4cdea">~/.ssh/config</code>) va nous permettre lorsque nous nous connectons à un serveur distant de transférer notre clé privée vers l'agent de ce même serveur.</p> | ||
<p>De cette manière nous serons en capacité d'utiliser </p> | ||
<h3 id="communication-ansible-serveurs-distants" class="anchor-title"><a href="#communication-ansible-serveurs-distants">Communication Ansible <> serveurs distants</a></h3> | ||
<p>Notre environnement étant « prêt » testons à présent la bonne communication avec nos serveur distant en utilisant le module <code class="code-inline" id="df911f0151f9ef021d410b4be5060972">ping</code> d'Ansible.</p> | ||
<div class="admonition info"> | ||
<p class="admonition-title">Les modules Ansible</p> | ||
<p> | ||
Dans la terminologie Ansible, les « modules » sont des morceaux de code pouvant être utilisés soit directement dans la ligne de commande (avec l'option <code class="code-inline" id="67dd1c0d4e68c367b980f8723c781cb1">-m</code>, soit dans une section <code class="code-inline" id="478f3a4c51824ad23cb50c1c60670c0f">task</code> d'un « playbook »). Ils peuvent prendre en charge des arguments avec une syntaxe classique <code class="code-inline" id="ef176a6c424f954fa42d4cde03949897">key=value</code>. | ||
</p> | ||
</div> | ||
<p>Avant toute chose il va falloir indiquer à Ansible les serveurs que nous allons « piloter », ce qui me permet d'introduire la notion « d'inventaire ».</p> | ||
<h4 id="l-inventaire" class="anchor-title"><a href="#l-inventaire">L'inventaire</a></h4> | ||
<h2 id="aller-plus-loin-avec-les-sources" class="anchor-title"><a href="#aller-plus-loin-avec-les-sources">Aller plus loin avec les sources:</a></h2> | ||
<ul> | ||
<li><a href="https://docs.ansible.com/ansible/latest/module_plugin_guide/modules_intro.html" target="_blank">https://docs.ansible.com/ansible/latest/module_plugin_guide/modules_intro.html</a></li> | ||
<li><a href="https://www.ssh.com/academy/ssh/agent" target="_blank">https://www.ssh.com/academy/ssh/agent</a></li> | ||
</ul></body> | ||
</main> | ||
<div class="article-footer" data-aos="fade-in"> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,7 +5,7 @@ | |
<description>Découvrez nos articles techniques (ou non), rédigés par les membres de l'équipe Rix !</description> | ||
<copyright>Rix - L’utilisation des flux RSS de rix.fr est réservée à un usage strictement personnel, non professionnel et non collectif. Toute autre exploitation doit faire l’objet d’une autorisation et donner lieu au versement d’une rémunération. Contact : [email protected]</copyright> | ||
<link>https://rix-fr.github.io/rix/pr/118/blog</link> | ||
<pubDate>Fri, 17 Nov 2023 15:07:22 +0000</pubDate> | ||
<pubDate>Fri, 17 Nov 2023 15:58:10 +0000</pubDate> | ||
<language>fr</language> | ||
<image> | ||
<url>https://rix-fr.github.io/rix/pr/118/apple-touch-icon.png</url> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters