Ceci est une ancienne révision du document !
Lien vers l'accueil
On va utiliser un playbook pour exécuter toutes les tâches. C'est un fichier qui contient toutes les actions à effectuer (un peu comme un script shell).
Voir cette page.
Attention, pour que les logs soient récupérés correctement, veillez à ce que le serveur de logs soit correctement configuré
Chaque rôle peut être exécuté en l'appelant. Il contient une suite d'instructions, un peu comme une fonction d'un programme.
On crée l'arborescence suivante
Le fichier ansible.retry est créé automatiquement et ne doit donc pas être créé par vous, tout comme access_point_one_file.yml.
.
├── access_point_one_file.yml
├── access_point.retry
├── access_point.yml
└── roles
├── configure_interfaces
│ ├── files
│ │ ├── interface_ap
│ │ └── interfaces
│ └── tasks
│ └── main.yml
├── dnsmasq
│ ├── files
│ │ └── dnsmasq.conf
│ └── tasks
│ └── main.yml
├── hostapd
│ ├── files
│ │ └── hostapd.conf
│ └── tasks
│ └── main.yml
├── iptables
│ ├── files
│ │ ├── iptables_access_point.service
│ │ └── iptables_access_point.sh
│ └── tasks
│ └── main.yml
├── logs
│ ├── files
│ │ └── rsyslog.conf
│ └── tasks
│ └── main.yml
├── ntp
│ └── tasks
│ └── main.yml
├── reboot
│ └── tasks
│ └── main.yml
├── tor
│ ├── files
│ │ └── torrc
│ └── tasks
│ └── main.yml
├── update_upgrade
│ └── tasks
│ └── main.yml
└── wifi_tools
└── tasks
└── main.yml
Le dossier roles contient les dossiers suivants :
Qui contiennent eux-mêmes les dossiers suivant :
Nous n'utilisons que le dossier tasks (d'autres répertoires peuvent être utilisés comme var, template…). Attention, il faut faire attention à échapper les quote avec un antislash : par exemple “ devient \”.
À la racine, le fichier access_point.yml contient le code suivant
---
- hosts: bpi
vars:
"wifi_driver": "nl80211"
"wlan_interface": "wlx503eaa3d7d6c"
ansible_connection: ssh
ansible_ssh_user: user
ansible_ssh_pass: bonjour
ansible_become_method: su
ansible_become_user: root
ansible_become_pass: bonjour
ansible_become: yes
roles:
- update_upgrade
- wifi_tools
- hostapd
- tor
- ntp
- configure_interfaces
- dnsmasq
- iptables
- logs
- reboot
On va maintenant créer un fichier main.yml dans le dossier tasks de chacun des dossiers créés dans rôle (comme dans l'arborescence plus haut). C'est à dire :
Voici le contenu de chaque fichier main.yml de chaque dossier
On reprend simplement le code du playbook simple du début
---
- name: Suppression du fichier de configuration /etc/network/interfaces
file:
path: /etc/network/interfaces
state: absent
- name: Création du fichier de configuration /etc/network/interfaces.d/interfaces
copy:
src: "{{ role_path }}/files/interfaces"
dest: /etc/network/interfaces
- name: Création du fichier de configuration /etc/network/interfaces.d/interface_ap
copy:
src: "{{ role_path }}/files/interface_ap"
dest: /etc/network/interfaces.d/interface_ap
Dans le dossier /configure_interfaces/files/ créez un fichier interface_ap et collez-y le contenu suivant
auto wlx503eaa3d7d6c iface wlx503eaa3d7d6c inet static hostapd /etc/hostapd/hostapd.conf address 10.255.255.254 netmask 255.0.0.0
Dans le dossier /configure_interfaces/files/ créez un fichier interfaces et collez-y le contenu suivant
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet dhcp # This is an autoconfigured IPv6 interface iface eth0 inet6 auto
---
- name: Installation du paquet hostapd
apt: pkg=hostapd state=installed update_cache=true
- name: Suppression du fichier de configuration /etc/hostapd/hostapd.conf
file:
path: /etc/hostapd/hostapd.conf
state: absent
- name: Création du fichier de configuration /etc/hostapd/hostapd.conf
copy:
src: "{{ role_path }}/files/hostapd.conf"
dest: /etc/hostapd/hostapd.conf
Dans le dossier /hostapd/files/ créez un fichier hostapd.conf et collez-y le contenu suivant
#L'interface wifi interface=wlx503eaa3d7d6c #Le SSID (le nom du point d'accès wifi) ssid=🐧 OPEN WIFI 🐧 #Le driver wifi driver=nl80211 #On choisit le channel channel=6 #Mettre le paramètre à "g" pour la bande à 2.4Ghz, et à "a" pour la bande à 5Ghz hw_mode=g #Vous pouvez décommenter les paramètres suivants pour utiliser l'authentification #wpa=2 #wpa_passphrase=votre_mot_de_passe #wpa_key_mgmt=WPA-PSK #wpa_pairwise=CCMP #rsn_pairwise=CCMP #Pour nous permettre d'obtenir la liste des stations connectées ctrl_interface=/var/run/hostapd ctrl_interface_group=0 #On log le trafic logger_syslog=-1 logger_syslog_level=1 logger_stdout=-1 logger_stdout_level=2 # Levels (minimum value for logged events): # 0 = verbose debugging # 1 = debugging # 2 = informational messages # 3 = notification # 4 = warning # -1 = all
---
- name: Install Tor
apt: pkg=tor state=installed update_cache=true
- name: Suppression du fichier de configuration /etc/tor/torrc
file:
path: /etc/tor/torrc
state: absent
- name: Création du fichier de configuration /etc/tor/torrc
copy:
src: "{{ role_path }}/files/torrc"
dest: /etc/tor/torrc
--- - name: Installation du paquet wireless-tools apt: pkg=wireless-tools state=installed update_cache=true - name: Installation du paquet wpasupplicant apt: pkg=wpasupplicant state=installed update_cache=true
---
- name: Installation du paquet dnsmasq
apt: pkg=dnsmasq state=installed update_cache=true
- name: Suppression du fichier de configuration /etc/dnsmasq.conf
file:
path: /etc/dnsmasq.conf
state: absent
- name: Création du fichier de configuration /etc/dnsmasq.conf
copy:
src: "{{ role_path }}/files/dnsmasq.conf"
dest: /etc/dnsmasq/dnsmasq.conf
---
- name: Création du script iptables
copy:
src: "{{ role_path }}/files/iptables_access_point.sh"
dest: /usr/local/sbin/iptables_access_point.sh
- name: Création du fichier service iptables
copy:
src: "{{ role_path }}/files/iptables_access_point.service"
dest: /etc/systemd/system/iptables_access_point.service
- name: Activation du service iptables
systemd:
name: iptables
enabled: yes
masked: no
--- - name: Redémarrage des hosts become: yes shell: sleep 2 && /sbin/shutdown -r now async: 1 poll: 0
---
- name: Installation du paquet rsyslog-relp
apt: pkg=rsyslog-relp state=installed update_cache=true
- name: Suppression du fichier de configuration /etc/rsyslog.conf
file:
path: /etc/rsyslog.conf
state: absent
- name: Création du fichier de configuration /etc/rsyslog.conf
copy:
src: "{{ role_path }}/files/rsyslog.conf"
dest: /etc/rsyslog.conf
--- - name: Installation du paquet ntp apt: pkg=ntp state=installed update_cache=true
---
- name: Suppression du fichier sources.list
file:
path: /etc/apt/sources.list
state: absent
- name: Création du fichier sources.list
copy:
src: "{{ role_path }}/files/sources.list"
dest: /etc/apt/sources.list
- name: Installation du paquet aptitude
apt: pkg=aptitude state=installed update_cache=true
- name: Mise à jour de la liste des paquets
apt: update_cache=yes
- name: Mise à jour des paquets
apt: upgrade=yes
Puis comme précédemment, on exécute le fichier ansible
ansible-playbook access_point.yml