Ansible Vault est un outil intégré à Ansible qui permet de chiffrer des fichiers contenant des données sensibles, comme des mots de passe ou des clés privées Chiffrer des données avec Ansible-Vault et déployer un playbookCréer un fichier chiffréLors de la création d’un fichier chiffré, Ansible Vault demandera de fournir un mot de passe pour chiffrer le fichier : # ansible-vault create /path/encrypted.yml Exemple de contenu : # encrypted.yml (chiffré)user_john_passwd: 1337H4X0Rvariable_secret: 1
[ CATEGORIE ] : Ansible
Lorsque vous lancez votre playbook Ansible il peut signaler des erreurs (en rouge et bien VISIBLES). Parfois ces erreurs ne sont que mineures et vous pouvez spécifier à Ansible qu’il n’est pas nécessaire de vous hurler dessus pour si peu. Customisation des erreursLes paramètres à configurer sont ignore_errors, no_log, register et failed_when : ---- name: Script hosts: vos_hôtes become: yes tasks: - name: Lancement du script monscript.sh command: /usr/local/monscript.sh -<options1
Dans Ansible, {{ item }} est une syntaxe utilisée dans les expressions Jinja2 pour référencer la valeur de l’élément en cours lors d’une itération. Quand une boucle loop est utilisé, l’élément item fait référence à l’élément actuel dans la boucle. Utilisation des loopsEcrire dans un fichierPour ajouter plusieurs lignes à un fichier, le loop permet de lister les lignes à ajouter au fur et à mesure.Le insertafter: EOF correspond à un >>, c’est à dire que l’ajout se fait à
La différence entre > et | dans Ansible réside dans la manière dont les chaînes sont traitées. Les symboles : > : utilisé pour plier une chaîne de texte : remplace les sauts de ligne par des espaces, sauf à la fin de la chaîne utilisé lpour écrire du texte sur plusieurs lignes mais qui sera traité comme une seule ligne | : utilisé pour traiter une chaîne de texte comme un bloc non plié : conserve les sauts de ligne d’origine utile pour la mise en forme Utilisation de >L’utilisat
Création d’un playbook ansible permettant de créer un répertoire ainsi qu’un fichier horodaté, tout deux avec des droits spécifiques et un propriétaire. Il suffit de déclarer une variable nommée current_date qui lancera la commande Linux date : vars: current_date: "{{ lookup('pipe', 'date +%Y-%m-%d-%H:%M:%S') }}" PlaybookCréer un fichier Create-a-file-in-directory.yml contenant : ---- name: Creation de repertoire et Horodatage de fichier hosts:
Il existe plusieurs façon de créer un répertoire avec Ansible dans un playbook.Base de création d’un playbook : https://n0tes.fr/2023/02/12/Ansible-Playbook/ Déployer des packagesDéployer de façon génériqueLe module ansible.builtin.package permet de déployer des packages dans un parc hétérogène (Debian/RedHat). - name: Install ntpdate ansible.builtin.package: name: ntpdate state: present# This uses a variable as this changes per distribution.- name: Remove the apache package ansible.buil
Il existe plusieurs façon de créer un répertoire avec Ansible dans un playbook.Base de création d’un playbook : https://n0tes.fr/2023/02/12/Ansible-Playbook/ Déployer des packages sur un volume distantCe playbook monte un volume de repository et installe par la suite les packages python3 et mariaDB-common via le module ansible.builtin.yum. Des variables ont été définies dans la section vars du playbook. ---- name: Mount Vol et Intall RPM hosts: Parc-Linux-RHEL become: true vars: mynfs: &q
Il existe plusieurs façon de créer un répertoire avec Ansible dans un playbook.Base de création d’un playbook : https://n0tes.fr/2023/02/12/Ansible-Playbook/ Lancer des servicesLancer un service : - name: Start service httpd, if not started ansible.builtin.service: name: httpd state: started Stoper un service : - name: Stop service httpd, if started ansible.builtin.service: name: httpd state: stopped Relancer un service : - name: Restart service httpd, in all cases ansible.buil
Il existe plusieurs façon de monter un volume avec Ansible dans un playbook.Base de création d’un playbook : https://n0tes.fr/2023/02/12/Ansible-Playbook/ Monter un volumeMonter un volume : ---- name: Monter un volume ansible.posix.mount: path: /home/levolume src: data:/vol/leVolume fstype: rw,rsize=32768,wsize=32768 state: mounted- name: Mount DVD read-only ansible.posix.mount: path: /mnt/dvd src: /dev/sr0 fstype: iso9660 opts: ro,noauto state: present- name: Mount up devi
Il existe plusieurs façon de créer un répertoire avec Ansible dans un playbook.Base de création d’un playbook : https://n0tes.fr/2023/02/12/Ansible-Playbook/ Manipuler des fichiersCopieCopier un fichier : - name: Copy file with owner and permissions ansible.builtin.copy: src: /srv/myfiles/john.conf dest: /etc/john.conf- name: Copy file with owner and permissions ansible.builtin.copy: src: /srv/myfiles/john.conf dest: /etc/john.conf owner: john group: john mode: '0644&
Les commandes usuelles pour lancer votre playbook sont : # ansible-playbook playbook.yaml# ansible-playbook -i /chemin/inventory.yaml playbook.yaml# ansible-playbook -b -k playbook.yaml -u ansible -v Tous les playbooks doivent commencer de la façon suivante : ---- name: <Titre> hosts: <Nom_groupe_hosts_dans_inventory> <options> // exemple become:true tasks: La suite contient les tâches à déployer : [...] // les tâches à déployer sur les n
Pour pouvoir lancer certains playbooks, Ansible a besoin d’appeler des modules ou des plugins. Liste des modules et pluginsAnsible BuiltinLa collection “ansible.builtin” est un ensemble de modules/plugins propres à Ansible. https://docs.ansible.com/ansible/latest/collections/ansible/builtin/ Autres collectionsD’autre modules/plugins existent et permettent d’interférer avec d’autres solutions comme Windows, NetApp, Docker, Google, Amazon, Cisco, Graphana, mysql, etc. https://docs.ansible.com/ansi
Le fichier se place dans /etc/ansible/hosts et référence tous les noeuds que doit traiter Ansible. Il est possible selon la configuration, d’utiliser directement des sous-dossiers en fonction des groupes ou des variables attribuées. Commandes pour l’inventairePour vérifier l’inventaire, la commande ping d’Ansible peut-être utilisée : # ansible all -m ping# ansible all:\&prod -m ping# ansible chimie:\!prod -m ping Pattern Résultat all Tous les hosts de l’inventaire host1 Un seul host
Pour fonctionner correctement, Ansible a besoin d’un fichier hosts spécifique et d’un playbook (plans d’automatisation) écrits en YAML (ou INI pour l’inventory). Fichier hostsLe fichier se place dans /etc/ansible/hosts et référence tous les noeuds que doit traiter Ansible. Liste des hostsFormat INIFichier au format INI : mail.mondomaine.fr[webservers]intranet.mondomaine.frwiki.mondomaine.fr[prod]cluster01.mondomaine.fr:cluster02.mondomaine.fr:[testNode]LINUX-444.mondomaine.fr:LINUX-666.mondomain
Sous Ansible, le principe de fonctionnement tourne autours de 3 choses essentielles : L’inventaire (les machines, clientes ou serveurs) Les playbooks (Syntaxe YAML définissant les tâches à déployer) Les modules (appel de modules spécifiques en fonction de la tâche demandée) L’inventaireIl se trouve dans /etc/ansible/hosts et contient la définition de tous les noeuds (hosts+serveurs) du parc. Il est possible de définir l’inventaire dans un autre dossier et de le préciser lorsque vous lancer vos
Ansible est un outils de déploiement multinoeuds. Le déploiement sur les noeuds/serveurs/hôtes se fait en SSH (ne nécessite donc pas d’installation de logiciels supplémentaires sur ces derniers). Accessoirement, un ansible est un dispositif fictif (imaginé en 1966 par Ursula K. Le Guin) permettant de communiquer à une vitesse supraluminique (vitesse supérieure à celle de la lumière). Principes de baseAnsible automatise la gestion des systèmes distants et contrôle leur état souhaité. Un environn