Module copy
# Copier un fichier local vers les hotes
- name: Copier la configuration
copy:
src: files/app.conf
dest: /etc/app/app.conf
owner: root
group: root
mode: "0644"
backup: yes # Creer une sauvegarde avant ecrasement
# Creer un fichier avec du contenu inline
- name: Creer le fichier motd
copy:
content: |
=============================
Serveur gere par Ansible
Ne pas modifier manuellement
=============================
dest: /etc/motd
Module template (Jinja2)
# Utiliser un template Jinja2
- name: Deployer la config Nginx depuis un template
template:
src: templates/nginx.conf.j2
dest: /etc/nginx/nginx.conf
owner: root
group: root
mode: "0644"
validate: "nginx -t -c %s" # Valider avant d'appliquer
notify: Redemarrer Nginx
Module lineinfile
Le module lineinfile modifie une ligne specifique dans un fichier existant.
# Ajouter ou modifier une ligne
- name: Configurer le timezone
lineinfile:
path: /etc/environment
regexp: "^TZ="
line: "TZ=Europe/Paris"
# S'assurer qu'une ligne est presente
- name: Activer le forwarding IP
lineinfile:
path: /etc/sysctl.conf
regexp: "^net.ipv4.ip_forward"
line: "net.ipv4.ip_forward = 1"
notify: Recharger sysctl
# Supprimer une ligne
- name: Supprimer une entree obsolete
lineinfile:
path: /etc/hosts
regexp: "^192.168.1.100"
state: absent
Module blockinfile
# Inserer un bloc de texte
- name: Ajouter un bloc dans sshd_config
blockinfile:
path: /etc/ssh/sshd_config
block: |
Match Group sftp-users
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
marker: "# {mark} ANSIBLE MANAGED BLOCK - SFTP"
notify: Redemarrer SSH
Quand utiliser quoi : copy pour des fichiers statiques, template pour des fichiers dynamiques avec variables, lineinfile pour modifier une seule ligne.