ajout playbook creation site
[lhc/ansible.git] / creation_nouveau_site.yml
1 # commande pour lancer le playbook: ansible-playbook creation_nouveau_site.yml
2 # attention - Par défaut ce scipt se lancer vers ligatures
3
4 - name: Promp pour définir les variables du nouveau ite
5 hosts: vm_debian11 # test avec un nom de vm
6 become: true # toutes les tâches seront pas défaut éxécuter en tant que root
7
8 vars:
9 # config_nginx: true à l'avenir on pourrait demander à l'utilisateur de choisir si il veut configurer nginx
10 php_version: 8.0
11 postgres_version: 15
12 nouvelle_version: 27.1.6 # nextcloud
13 ancienne_version: 27.1.5 # nextcloud
14
15 vars_prompt:
16
17 - name: SITE
18 prompt: 'quel type de site?(ex: nuage, www, wiki, paheko)'
19 private: false
20 default: "paheko"
21
22 - name: TLD
23 prompt: 'TLD du site à mettre à jour?(ex: org)'
24 private: false
25 default: "org"
26
27 - name: DOMAIN
28 prompt: 'Domaine du site à mettre à jour?(ex: heureux-cyclage)'
29 private: false
30 default: "heureux-cyclage"
31
32 - name: SIGLE
33 prompt: 'Sigle du site à mettre à jour?(ex: lhc)'
34 private: false
35 default: "lhc"
36
37 - name: config_php
38 prompt: 'Faut-il configurer un pool PHP?(ex: oui/non)'
39 private: false
40 default: "non"
41
42 - name: besoin_https
43 prompt: 'Faut-il configurer un certificat ssl pour le HTTPS?(ex: oui/non)'
44 private: false
45 default: "non"
46
47 - name: sftp
48 prompt: 'besoin de configurer un accès SFTP pour ce compte (ex: oui/non)'
49 private: false
50 default: "non"
51
52 - name: sftp_key
53 prompt: "Entrer la clé publique à autoriser pour l'acces SFTP (si nécessaire)"
54 private: false
55 default: "non"
56
57 pre_tasks:
58
59 - name: Vérifier le sigle n'est pas déjà utilisé
60 ansible.builtin.lineinfile:
61 dest: /etc/passwd
62 search_string: "site_{{ SIGLE }}"
63 state: absent
64 check_mode: true
65 changed_when: false
66 register: presence_sigle
67 failed_when: presence_sigle.changed
68
69 tasks:
70
71 - name: Inclure la configuration d'un site web basique
72 ansible.builtin.include_tasks: tasks/config_www.yml
73
74 - name: Bloc permettant de générer les certificats SSL
75 when: besoin_https == 'oui'
76 block:
77 - name: Inclure la configuration nginx http
78 ansible.builtin.include_tasks: tasks/config_nginx.yml
79 vars:
80 template_site: 'http'
81
82 - name: Générer un certififat avec certbot # noqa : command-instead-of-module
83 become: true
84 ansible.builtin.command: 'certbot certonly -i nginx -d {{ SITE }}.{{ DOMAIN }}.{{ TLD }}'
85 register: certbot_log
86 changed_when: false
87
88 - name: Afficher les logs certbot
89 ansible.builtin.debug:
90 var: certbot_log
91 when: certbot_log is defined
92
93
94 - name: Inclure la configuration nginx
95 ansible.builtin.include_tasks: tasks/config_nginx.yml
96 vars:
97 template_site: "{{ SITE }}"
98
99 - name: Inclure la configuration d'un pool PHP
100 ansible.builtin.include_tasks: tasks/config_pool_php.yml
101 when: config_php == 'oui' or SITE == 'paheko' or SITE == 'nuage'
102
103 - name: Inclure la configuration nextcloud si besoin
104 ansible.builtin.include_tasks: tasks/config_nuage.yml
105 when: SITE == 'nuage'
106
107 - name: Inclure la configuration paheko si besoin
108 ansible.builtin.include_tasks: tasks/config_paheko.yml
109 when: SITE == 'paheko'
110
111 # MAJ borgmatic conf
112 ## Mettre à jour la conf de borgmatic pour intégrer les dossiers du nouveau nuage dans 'source_directories'
113
114 # vim /etc/borgmatic/config.yaml
115
116 # - /home/sites/data/${TLD}/${DOMAIN}/${SITE}/config
117 # - /home/sites/data/${TLD}/${DOMAIN}/${SITE}/data