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 :
-
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épertoireansible/hosts. -
Création du playbook : Créez un fichier nommé
site.ymldans le répertoireansible/playbooks/. -
É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.
-
Exécuter la playbook : Lancez la playbook avec cette commande :
ansible-playbook -i ansible/hosts playbooks/site.yml -
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 :
-
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/
-
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.