Modules essentiels 18 min de lecture

Modules copy, template et lineinfile

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.