ajout playbook creation site
[lhc/ansible.git] / creation_nouveau_site.yml
diff --git a/creation_nouveau_site.yml b/creation_nouveau_site.yml
new file mode 100644 (file)
index 0000000..cd2f0f2
--- /dev/null
@@ -0,0 +1,117 @@
+# commande pour lancer le playbook: ansible-playbook creation_nouveau_site.yml
+# attention - Par défaut ce scipt se lancer vers ligatures
+
+- name: Promp pour définir les variables du nouveau ite
+  hosts: vm_debian11 # test avec un nom de vm
+  become: true # toutes les tâches seront pas défaut éxécuter en tant que root
+
+  vars:
+#    config_nginx: true  à l'avenir on pourrait demander à l'utilisateur de choisir si il veut configurer nginx
+    php_version: 8.0
+    postgres_version: 15
+    nouvelle_version: 27.1.6 # nextcloud
+    ancienne_version: 27.1.5 # nextcloud
+
+  vars_prompt:
+
+    - name: SITE
+      prompt: 'quel type de site?(ex: nuage, www, wiki, paheko)'
+      private: false
+      default: "paheko"
+
+    - name: TLD
+      prompt: 'TLD du site à mettre à jour?(ex: org)'
+      private: false
+      default: "org"
+
+    - name: DOMAIN
+      prompt: 'Domaine du site à mettre à jour?(ex: heureux-cyclage)'
+      private: false
+      default: "heureux-cyclage"
+
+    - name: SIGLE
+      prompt: 'Sigle du site à mettre à jour?(ex: lhc)'
+      private: false
+      default: "lhc"
+
+    - name: config_php
+      prompt: 'Faut-il configurer un pool PHP?(ex: oui/non)'
+      private: false
+      default: "non"
+
+    - name: besoin_https
+      prompt: 'Faut-il configurer un certificat ssl pour le HTTPS?(ex: oui/non)'
+      private: false
+      default: "non"
+
+    - name: sftp
+      prompt: 'besoin de configurer un accès SFTP pour ce compte (ex: oui/non)'
+      private: false
+      default: "non"
+
+    - name: sftp_key
+      prompt: "Entrer la clé publique à autoriser pour l'acces SFTP (si nécessaire)"
+      private: false
+      default: "non"
+
+  pre_tasks:
+
+    - name: Vérifier le sigle n'est pas déjà utilisé
+      ansible.builtin.lineinfile:
+        dest: /etc/passwd
+        search_string: "site_{{ SIGLE }}"
+        state: absent
+      check_mode: true
+      changed_when: false
+      register: presence_sigle
+      failed_when: presence_sigle.changed
+
+  tasks:
+
+    - name: Inclure la configuration d'un site web basique
+      ansible.builtin.include_tasks: tasks/config_www.yml
+
+    - name: Bloc permettant de générer les certificats SSL
+      when: besoin_https == 'oui'
+      block:
+        - name: Inclure la configuration nginx http
+          ansible.builtin.include_tasks: tasks/config_nginx.yml
+          vars:
+            template_site: 'http'
+
+        - name: Générer un certififat avec certbot # noqa : command-instead-of-module
+          become: true
+          ansible.builtin.command: 'certbot certonly -i nginx -d {{ SITE }}.{{ DOMAIN }}.{{ TLD }}'
+          register: certbot_log
+          changed_when: false
+
+        - name: Afficher les logs certbot
+          ansible.builtin.debug:
+            var: certbot_log
+          when: certbot_log is defined
+
+
+    - name: Inclure la configuration nginx
+      ansible.builtin.include_tasks: tasks/config_nginx.yml
+      vars:
+        template_site: "{{ SITE }}"
+
+    - name: Inclure la configuration d'un pool PHP
+      ansible.builtin.include_tasks: tasks/config_pool_php.yml
+      when: config_php == 'oui' or SITE == 'paheko' or SITE == 'nuage'
+
+    - name: Inclure la configuration nextcloud si besoin
+      ansible.builtin.include_tasks: tasks/config_nuage.yml
+      when: SITE == 'nuage'
+
+    - name: Inclure la configuration paheko si besoin
+      ansible.builtin.include_tasks: tasks/config_paheko.yml
+      when: SITE == 'paheko'
+
+      # MAJ borgmatic conf
+## Mettre à jour la conf de borgmatic pour intégrer les dossiers du nouveau nuage dans 'source_directories'
+
+    # vim /etc/borgmatic/config.yaml
+
+    # - /home/sites/data/${TLD}/${DOMAIN}/${SITE}/config
+    # - /home/sites/data/${TLD}/${DOMAIN}/${SITE}/data
\ No newline at end of file