Automatisation : Bash robuste et Ansible 25 min de lecture

Bash robuste et Ansible

Bash robuste

#!/bin/bash
set -euo pipefail    # e=exit on error, u=undefined vars, o pipefail

LOG="/var/log/audit_$(date +%Y%m%d).log"

log() { echo "[$(date +%H:%M:%S)] $*" | tee -a "$LOG"; }

log "Debut de l'audit"
log "Utilisateurs avec shell bash :"
grep "/bin/bash" /etc/passwd | cut -d: -f1 | tee -a "$LOG"
log "Ports en ecoute :"
ss -tlnp | tee -a "$LOG"
log "Espace disque :"
df -h | tee -a "$LOG"
log "Audit termine"

Idempotence

Un script idempotent produit le meme resultat qu'il soit execute 1 ou 100 fois. C'est le principe fondamental d'Ansible.

Ansible — Bases

# inventory.ini
[webservers]
web1 ansible_host=192.168.1.10
web2 ansible_host=192.168.1.11

# playbook.yml
- hosts: webservers
  become: yes
  tasks:
    - name: Installer nginx
      apt: name=nginx state=present
    - name: Demarrer nginx
      service: name=nginx state=started enabled=yes
ansible-playbook -i inventory.ini playbook.yml