Dans le playbook, voici les commandes utiles au fonctionnement de nginx. Nous avons trois roles.
- name : copie de la page web
hosts: webservers
user: root
roles:
- page_web
- name : certif
hosts: webservers
become: yes
roles:
- certificates
- name : nginx
hosts: webservers
become: yes
roles:
- nginx_https
L’objectif de ce rôle est de copier la page html contenant notre site TOP GUN. Il commence par vérifier si le dossier de réception existe (#1). S’il n’existe pas, il le crée (#2) après quoi il copie la page index.html dedans (#3). La dernière étape fut de copier les pages d’erreur personnelle comme 404.html par exemple. Cela nous sera utile pour réduire l’emprunte du site.
# 1
- name: verification si le dossie /var/www/html/pageweb/ exite
stat:
path: /var/www/html/pageweb/
register: stat_result
# 2
- name: creation du dossier si non existant
ansible.builtin.file:
path: /var/www/html/pageweb/
state: directory
owner: root
group: root
when: not stat_result.stat.exists
# 3
- name: copie de la page index.html
template:
src: index.html.j2
dest: /var/www/html/pageweb/index.html
owner: root
group: root
mode: 0644
# 4
- name: copie des erreurs perso
ansible.builtin.copy:
src: errors/
dest: /var/www/html/pageweb/
owner: root
group: root
mode: 0644
Pour commencer nous copions les fichiers .crt et .key qui sont des certificats créés par mini-pki. Nous les avons ajoutés manuellement dans l’architecture d’ansible. Dans une situation professionnelle, un système permettant de faire des demandes directement à la CA. Cela serait plus sécurisé et éviterait de transporter des fichiers manuellement. La troisième étape est l’ajout de la clé publique de la CA, nous en aurons besoin pour l’authentification mutuelle. Finalement, nous générons la clé dhparam.pem qui nous servira pour augmenter la sécurité de notre site.
# 1
- name: copie des fichiers d'indentifiaction nginx.crt
ansible.builtin.copy:
src: nginx.crt
dest: /etc/ssl/nginx.crt
owner: root
group: root
mode: 0644
# 2
- name: copie des fichiers nginx.key
ansible.builtin.copy:
src: nginx.key
dest: /etc/ssl/nginx.key
owner: root
group: root
mode: 0644
# 3
- name: copie des fichiers mutual-authent
ansible.builtin.copy:
src: ca.crt
dest: /etc/ssl/ca.crt
owner: root
group: root
mode: 0644
# 4
- name : dhparam
community.crypto.openssl_dhparam:
path: /etc/ssl/dhparam.pem
size: 2048
force: yes
Ce dernier rôle a pour objectif d’installer nginx pour commencer, après quoi nous allons supprimer les fichier default_vhost qui ne nous servent à rien et vont entrer en conflit avec nos fichiers.
Par la suite, nous installons notre propre fichier de configuration de nginx et créons un lien de celui-ci dans un autre dossier. Pour finir, nous redémarrons nginx.
# 1
- name: install nginx
apt:
name: nginx, nginx-extras
state: present
cache_valid_time: 3600
update_cache: yes
# 2
- name: remove default file
file:
path: "{{ item }}"
state: absent
with_items:
- "/etc/nginx/sites-available/default_vhost.conf"
- "/etc/nginx/sites-enabled/default_vhost.conf"
# 3
- name: install vhost
template:
src: default_vhost.conf.j2
dest: /etc/nginx/sites-available/default_vhost.conf
owner: root
group: root
mode: 0644
notify: restart nginx
# 4
- name: création du lien symbolique
file:
src: /etc/nginx/sites-available/default_vhost.conf
dest: /etc/nginx/sites-enabled/default_vhost.conf
state: link
- name: start nginx
systemd:
name: nginx
state: started
- name: reload nginx
systemd:
name: nginx
state: reloaded
- name: Flush handlers
meta: flush_handlers