Dans AWX (Ansible Tower), chaque tâche s’exécute dans un environnement d’exécution isolé pour assurer la sécurité et la stabilité des playbooks. Cet environnement restreint limite l’accès aux ressources du système hôte, y compris la création ou la modification de fichiers locaux. Pour y remédier il est possible d’utiliser le module ansible delegate_to en précisant le nom de la machibe hôte où s’exécute le playbook. Il est possible de préciser directement localhost, l‘@IP du localhost ou son DNS.
[ CATEGORIE ] : Automatisation
The ability to backup and restore your system is integrated into the platform setup playbook. TL;DRSummary: # ./setup.sh -b // backup# ./setup.sh -r // restore# ./setup.sh -e 'backup_dest=/path/to/backup_dir/' -b // backup in a specific folder# ./setup.sh -e 'restore_backup_file=/path/to/nondefault/backup.tar.gz' -r // restore from a speficic file Make a backupSimple BackupYou make a backup using the same setup.sh script that you use to in
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
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:
Exemple d’un workflow complet : création d’un inventory, d’un projets, d’un job template, d’un playbook et d’un job sous Git. (On considère ici que votre organisation existe déjà ainsi que vos utilisateurs/groupes et que votre Tower communique bien avec vos machines clients) WorkflowCréation d’un Job (git)Sous Git, créer un projet TEST et cette arboressence : TEST |- playbooks/ | |- Create-a-file-in-directory.yml |- ansible.cfg Ainsi qu’un fichier Create-a-file-in-directory.yml qui c
An Organization is a logical collection of Inventories, Teams (and users), Projects, and Jobs, and is the highest level in the Tower object hierarchy. Access the Organizations page by clicking the Organizations icon from the left navigation bar. The Organizations page displays all of the existing organizations for your installation of Tower. Organizations can be searched by Name or Description. Modify and remove organizations using the Edit and Delete buttons. InventoriesAn Inventory is a coll
Ansible is an IT automation solution and an open-source configuration, deployment, and orchestration tool that integrates with much of technology stack: networking, security, application deployment, storage, software development lifecycle processes, etc. Ansible Tower is the enterprise version of Ansible, and offers more control than the free version and is a great platform for breaking down silos, as it can be used cross-functionally in an efficient manner. Documentationhttps://docs.ansible.co
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