Skip to content

synchronize

Pour synchroniser un site Web HTML sur un serveur distant avec Ansible, vous pourrez utiliser les outils de gestion de fichiers tels que file, copy et stat. Voici comment le faire en quelques étapes clés :

  1. Créer un inventaire Ansible : D'abord, créez un inventaire Ansible contenant les informations nécessaires sur votre serveur distant (exemple : host_ip ansible_user=my_username my_server). Vous pouvez créer l'inventaire dans le répertoire ansible/hosts.

  2. Création du playbook : Créez un fichier nommé site.yml dans le répertoire ansible/playbooks/.

  3. Écriture de la playbook : Ecrivez une playbook Ansible qui définit les tâches à effectuer sur votre serveur distant. Voici un exemple de playbook simple pour synchroniser un site Web HTML :

    • hosts: my_server gather_facts: yes tasks:

      • name: Ensure www directory exists file: path: "/var/www" state: directory

      • name: Copy local website files to server copy: src: /path/to/my/website dest: "/var/www/" owner: www-data group: www-data mode: '0755'

Cette playbook définit deux tâches : - La première tâche crée le répertoire /var/www si nécessaire. - La deuxième tâche copie les fichiers de votre site Web local vers le serveur distant dans le répertoire /var/www.

  1. Exécuter la playbook : Lancez la playbook avec cette commande : ansible-playbook -i ansible/hosts playbooks/site.yml

  2. Mise en place de l'exécution automatique des playbooks : Pour exécuter automatiquement les playbooks, vous pouvez utiliser Git et GitHub pour travailler sur votre playbook localement puis pousser vers un dépôt Git qui peut être accédé par Ansible à l'aide du module git.

autres possibilités

Le module copy d'Ansible ne prend pas en charge la copie récursive de répertoires entiers. Pour copier un répertoire entier de manière récursive, vous devez utiliser le module synchronize ou le module unarchive.

Utilisation du module synchronize

Le module synchronize utilise rsync pour copier des répertoires entiers de manière récursive. Voici un exemple de playbook utilisant synchronize :

---
- name: Copy directory to target machine
  hosts: webservers
  become: yes
  tasks:
    - name: Ensure rsync is installed
      apt:
        name: rsync
        state: present

    - name: Synchronize directory to target machine
      synchronize:
        src: /path/to/your/local/directory/
        dest: /path/to/your/remote/directory/
        recursive: yes

Utilisation du module unarchive

Le module unarchive peut être utilisé pour copier et extraire un répertoire compressé (par exemple, un fichier tar.gz) sur la machine cible. Voici un exemple de playbook utilisant unarchive :

  1. Compress the directory : Compress the directory you want to copy into a tar.gz file.

    tar -czvf my_directory.tar.gz /path/to/your/local/directory/

  2. Create the playbook : Create an Ansible playbook to copy and extract the compressed file.


    • name: Copy and extract directory to target machine hosts: webservers become: yes tasks:

      • name: Copy compressed directory to target machine copy: src: /path/to/your/local/my_directory.tar.gz dest: /tmp/my_directory.tar.gz

      • name: Extract the compressed directory unarchive: src: /tmp/my_directory.tar.gz dest: /path/to/your/remote/directory/ remote_src: yes

Exécution du playbook

Exécutez le playbook avec la commande ansible-playbook :

ansible-playbook -i inventory.ini your_playbook.yml

Ces méthodes vous permettent de copier un répertoire entier de manière récursive sur une machine cible en utilisant Ansible.