Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
fr:ansible [2017/10/25 11:29] – zatalyz | fr:ansible [2021/12/03 19:19] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
C'est donc de la doc pour noob avec probablement des erreurs. | C'est donc de la doc pour noob avec probablement des erreurs. | ||
- | --- //[[wiki:user: | + | --- // |
</ | </ | ||
- | Ansible s' | + | Ansible s' |
Donc, suivant votre système : | Donc, suivant votre système : | ||
Ligne 24: | Ligne 24: | ||
Ensuite on va renseigner ses serveurs. | Ensuite on va renseigner ses serveurs. | ||
- | Par défaut, Ansible les cherchent | + | Par défaut, Ansible les cherche |
ansible -i / | ansible -i / | ||
Ligne 33: | Ligne 33: | ||
===== Renseigner le fichier ansible/ | ===== Renseigner le fichier ansible/ | ||
- | Il y a visiblement plusieurs syntaxes possibles (peut-etre à paramétrer dans ''/ | + | Il y a visiblement plusieurs syntaxes possibles (peut-être à paramétrer dans ''/ |
<code ini> | <code ini> | ||
Ligne 47: | Ligne 47: | ||
</ | </ | ||
- | Ce qui est entre crochet | + | Ce qui est entre crochets |
Les serveurs renseignés dessous peuvent l' | Les serveurs renseignés dessous peuvent l' | ||
* d' | * d' | ||
- | * d' | + | * d' |
* d' | * d' | ||
Ligne 57: | Ligne 57: | ||
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
- | Pensez à activer [[fr: | + | Pensez à activer [[fr: |
- | L' | + | L' |
eval " | eval " | ||
Ligne 91: | Ligne 91: | ||
</ | </ | ||
+ | |||
+ | ===== Suite de commandes : playbooks ===== | ||
+ | L'une des grandes forces d' | ||
+ | |||
+ | Un exemple très bête : la mise à jour des dépôts, le téléchargement et déployement de nouveaux paquets. Le tout en gardant un œil quand même pour voir si tout se passe bien... Cette action est à faire régulièrement sur les serveurs : elle peut se scripter via Ansible. | ||
+ | |||
+ | La première manipulation de cet article permet d' | ||
+ | |||
+ | Créez un répertoire dans lequel seront stockés vos playbooks, puis un playbook : | ||
+ | mkdir ./ | ||
+ | nano ./ | ||
+ | |||
+ | Pour exécuter le playbook : | ||
+ | ansible-playbook -i ./ | ||
+ | |||
+ | Mais avant de l' | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | YAML est assez strict sur les indentations. Si vous avez des erreurs lors de vos premiers palybooks, c'est peut-être à cause d'une espace manquante... | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Écrire un playbook ==== | ||
+ | Pour la rédaction des playbooks, les possibilités sont nombreuses et il vaut mieux se référerer à la [[http:// | ||
+ | - Nous renseignons les hosts où le playbook sera lancé | ||
+ | - Nous listons les tâches qui seront exécutées dessus | ||
+ | |||
+ | Il est possible de renseigner des variables et diverses options. | ||
+ | |||
+ | Chaque tâche (task) démarre par un tiret '' | ||
+ | |||
+ | < | ||
+ | - name: Texte décrivant la tâche | ||
+ | module: option=value | ||
+ | </ | ||
+ | |||
+ | Commençons en douceur... on reproduit notre " | ||
+ | |||
+ | <code yml khanatping.yml> | ||
+ | # Indiquer sur quels serveurs ce playbook va marcher, ici ceux du groupe " | ||
+ | - hosts: khanat | ||
+ | # Nous indiquons les tâches qui vont s' | ||
+ | tasks: | ||
+ | - action: ping | ||
+ | </ | ||
+ | |||
+ | Lors de l' | ||
+ | |||
+ | Allons un peu plus loin et créons un playbook pour mettre à jour un serveur Debian. La lecture des [[http:// | ||
+ | |||
+ | Les mises à jour doivent se faire avec les droits root. Mais comme on respecte les règles de sécurité, on ne se connecte jamais directement en root mais via un utilisateur ayant le droit de devenir root via sudo. Et toujours pour des questions de sécurité, cet utilisateur doit taper son mot de passe pour devenir root. On ajoutera donc la commande '' | ||
+ | |||
+ | <code yml maj_base.yml> | ||
+ | # Nos hôtes concernés par le playbook | ||
+ | - hosts: khanat | ||
+ | # On prévient que sur cet host et pour ce playbook, on va utiliser sudo. | ||
+ | become: yes | ||
+ | become_method: | ||
+ | # On renseigne les tâches et on leur donne des descriptions | ||
+ | tasks: | ||
+ | - name: mise à jour des dépôts | ||
+ | apt: update_cache=yes | ||
+ | |||
+ | - name: Mettre à jour les paquets | ||
+ | apt: upgrade=yes | ||
+ | |||
+ | - name: Vérifie s'il faut rebooter | ||
+ | register: reboot | ||
+ | stat: path=/ | ||
+ | |||
+ | </ | ||
+ | |||
+ | Puis lancer : | ||
+ | ansible-playbook -i ./ | ||
+ | |||
+ | ==== Insérer des playbooks dans des playbooks ==== | ||
+ | Imbriquer les playbooks peut être utile. Par exemple, vous avez un playbook bien fait pour les mises à jour, mais vous souhaitez le lancer parfois pour un groupe de serveur, parfois pour un autre((Typiquement chez nous, on met à jour les hyperviseurs, | ||
+ | |||
+ | Il y a plusieurs façon de réaliser des imbrications, | ||
+ | |||
+ | Créez votre premier playbook contenant vos hosts, et appelez dedans un second playbook, qui contiendra la liste des tâches : | ||
+ | |||
+ | <code yml khanat.yml> | ||
+ | tasks: | ||
+ | - import_tasks: | ||
+ | |||
+ | <code yml includeping.yml> | ||
+ | - action: ping | ||
+ | </ | ||
+ | |||
===== Sources ===== | ===== Sources ===== | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | * https:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
- | {{tag> | + | {{tag> |