maj creation_nuage
[lhc/ansible.git] / tasks / config_nuage.yml
diff --git a/tasks/config_nuage.yml b/tasks/config_nuage.yml
new file mode 100644 (file)
index 0000000..112d408
--- /dev/null
@@ -0,0 +1,311 @@
+- name: Install required packages
+  ansible.builtin.apt:
+    name:
+#      - php-ctype
+      - php-curl
+#      - php-dom
+#      - php-fileinfo
+      - php-gd
+      - php-json
+      - "php{{ php_version }}-xml"
+      - php-mbstring
+#      - php-openssl
+#      - php-posix
+#      - php-session
+#      - php-simplexml
+#      - php-xmlreader
+#      - php-xmlwriter
+      - php-zip
+#      - php-zlib
+#      - php-pdo_pgsql
+      - "php{{ php_version }}-pgsql"
+      - php-pgsql
+      - php-intl
+      - php-bz2
+#      - php-sodium
+      - php-gmp
+#      - php-exif
+      - php-redis
+      - php-imagick
+    state: present
+
+- name: Boucle d'ajout du user php dans plusieurs groupe
+  ansible.builtin.user:
+    name: "php_{{ SIGLE }}_{{ SITE }}"
+    groups: "{{ item }}"
+    append: true
+  loop:
+    - nextcloud
+    - postgres-data
+    - redis
+    - "site_{{ SIGLE }}_{{ SITE }}"
+
+- name: Bloc nextcloud_version
+  when: nouvelle_version is undefined
+  block:
+    - name: Demande la version de nextcloud à installer
+      ansible.builtin.pause:
+        prompt: "Quelle version de nextcloud doit être utilisée"
+        echo: true
+      register: nextcloud_version_prompt
+
+    - name: Definir nouvelle_version
+      ansible.builtin.set_fact:
+        nouvelle_version: "{{ nextcloud_version.user_input }}"
+
+    - name: Demande la version de nextcloud déjà installer
+      ansible.builtin.pause:
+        prompt: "Quelle version de nextcloud déjà installée"
+        echo: true
+      register: ancienne_version_prompt
+
+    - name: Definir ancienne_version
+      ansible.builtin.set_fact:
+        ancienne_version: "{{ ancienne_version.user_input }}"
+
+- name: Inclure la verif de l'install nextcloud
+  ansible.builtin.include_tasks: tasks/verif_installation_nextcloud.yml
+
+- name: "[PostgreSQL] - {{ nextcloud_php_user }} role is created."
+  become_user: postgres
+  become: true
+  community.postgresql.postgresql_user:
+    name: "{{ nextcloud_php_user }}"
+    state: present
+    role_attr_flags: CREATEDB
+
+- name: "[PostgreSQL] - {{ nextcloud_db_name }} database is created."
+  become_user: postgres
+  become: true
+  community.postgresql.postgresql_db:
+    name: "{{ nextcloud_db_name }}"
+    state: "{{ item }}"
+    owner: "{{ nextcloud_php_user }}"
+  loop:
+    - absent
+    - present
+
+- name: Pour chaque base, ajouter les droits suivants à l'utilisateur php
+  become_user: postgres
+  become: true
+  community.postgresql.postgresql_privs:
+    db: "{{ item.db }}"
+    privs: "{{ item.privs }}"
+    type: "{{ item.type |default(omit)}}"
+    objs: "{{ item.objs }}"
+    role: "{{ item.role }}"
+    grant_option: "{{ item.grant_option |default(omit) }}"
+  loop_control:
+    label: "{{ item.name }}"
+  loop:
+    - db: "{{ nextcloud_db_name }}"
+      privs: "ALL"
+      type: "schema"
+      objs: "public"
+      role: "{{ nextcloud_php_user }}"
+      grant_option: true
+      name: "GRANT ALL ON SCHEMA public TO php_{{ SIGLE }}_nuage WITH GRANT OPTION;"
+
+- name: Autoriser l'utilisateur php à se connecter à la bdd nextcloud
+  community.postgresql.postgresql_pg_hba:
+    dest: "/etc/postgresql/{{ postgres_version }}/main/pg_hba.conf"
+    contype: local
+    users: "php_{{ SIGLE}}_{{SITE}}"
+    databases: "php_{{ SIGLE}}_{{SITE}}"
+    method: peer
+    keep_comments_at_rules: true
+    comment: "autoriser le user php_{{ SIGLE}}_{{SITE}} à se connecter à la bdd du meme nom"
+
+- name: Boucle création des répertoires app, config et data nextcloud
+  ansible.builtin.file:
+    path: "{{ item.path }}"
+    state: "{{ item.state }}"
+    owner: "{{ item.owner }}"
+    group: "{{ item.group }}"
+    mode: "{{ item.mode }}"
+  loop_control:
+    label: "{{ item.path }}"
+  loop:
+    - path: "{{ nextcloud_source }}/apps"
+      state: directory
+      owner: "{{ nextcloud_php_user }}"
+      group: "{{ nextcloud_websrv_user }}"
+      mode: '2750'
+    - path: "{{ nextcloud_source }}/config"
+      state: directory
+      owner: "{{ nextcloud_php_user }}"
+      group: "{{ nextcloud_websrv_user }}"
+      mode: '2750'
+    - path: "{{ nextcloud_source }}/data"
+      state: directory
+      owner: "{{ nextcloud_php_user }}"
+      group: "{{ nextcloud_websrv_user }}"
+      mode: '2750'
+
+- name: Create nextcloud root dir symbolic link
+  ansible.builtin.file:
+    src: "{{ nextcloud_source }}"
+    dest: "{{ nextcloud_webroot }}/nextcloud"
+    owner: nextcloud
+    group: nextcloud
+    state: link
+    follow: false
+
+- name: Create nextcloud common app dir symbolic link
+  ansible.builtin.file:
+    src: "{{ nextcloud_common }}"
+    dest: "{{ nextcloud_webroot }}/common"
+    owner: nextcloud
+    group: nextcloud
+    state: link
+    follow: false
+
+- name: créer les fichiers spécifiques nextcloud
+  ansible.builtin.template:
+    src: "templates/{{ item.src }}"
+    dest: "{{ nextcloud_webroot }}/{{ item.dest }}"
+    owner: "{{ item.owner }}"
+    group: "{{ item.group}}"
+    mode: "{{ item.mode }}"
+  loop:
+    - src: "nextcloud_cron.j2"
+      dest: "cron"
+      owner: "{{ nextcloud_php_user }}"
+      group: "{{ nextcloud_websrv_user }}"
+      mode: '750'
+    - src: "nextcloud_console.j2"
+      dest: "console"
+      owner: "{{ nextcloud_websrv_user }}"
+      group: "{{ nextcloud_websrv_user }}"
+      mode: '750'
+    - src: "nextcloud_install_config.j2"
+      dest: "config/config.php"
+      owner: "{{ nextcloud_php_user }}"
+      group: "{{ nextcloud_websrv_user }}"
+      mode: '640'
+
+# - name: Lancement du script d'installation nextcloud # noqa : command-instead-of-module
+#   become_user: "{{ nextcloud_php_user }}"
+#   become: true
+#   ansible.builtin.command: >
+#           ./console maintenance:install
+#           --database='pgsql'
+#           --database-name="php_{{ SIGLE }}_{{ SITE }}"
+#           --database-user="php_{{ SIGLE }}_{{ SITE }}/data/"
+#           --database-host="/var/run/postgresql/"
+#           --admin-user='admin'
+#           --admin-pass='ckoideja'
+#           --data-dir="/home/sites/data/$TLD/{{ DOMAIN }}/{{ SITE }}/data/"
+#   args:
+#     chdir: "{{ nextcloud_webroot }}"
+#   register: install_result
+
+# - name: créer les fichiers spécifiques nextcloud
+#   ansible.builtin.template:
+#     src: "templates/{{ item.src }}"
+#     dest: "{{ nextcloud_webroot }}/{{ item.dest }}"
+#     owner: "{{ item.owner }}"
+#     group: "{{ item.group}}"
+#     mode: "{{ item.mode }}"
+#   loop:
+#     - src: "nextcloud_sigle_config.j2"
+#       dest: "config/{{ SIGLE }}.config.php"
+#       owner: "{{ nextcloud_php_user }}"
+#       group: "{{ nextcloud_websrv_user }}"
+#       mode: '640'
+
+# - name: Creation d'un lien symbolique vers le configuration nextcloud commun
+#   ansible.builtin.file:
+#     src: "../../../../nextcloud/common/common.config.php"
+#     dest: "config/common.config.php"
+#     owner: nextcloud
+#     group: nextcloud
+#     state: link
+#     follow: false
+
+# - name: Create sigle nextcloud config
+#   become_user: "{{ nextcloud_php_user }}"
+#   become: true
+#   ansible.builtin.template:
+#     src: templates/sigle.config.php.j2
+#     dest: "{{ nextcloud_webroot }}/config/sigle.config.php"
+#     owner: "{{ nextcloud_php_user }}"
+#     group: "{{ nextcloud_websrv_user }}"
+#     mode: '640' # or u=rwx,g=r,o=
+
+# - name: Pour chaque base, ajouter les droits suivants à l'utilisateur php
+#   become_user: postgres
+#   become: true
+#   community.postgresql.postgresql_privs:
+#     db: "{{ item.db }}"
+#     privs: "{{ item.privs }}"
+#     type: "{{ item.type |default(omit)}}"
+#     objs: "{{ item.objs }}"
+#     role: "{{ item.role }}"
+#     grant_option: "{{ item.grant_option |default(omit) }}"
+#   loop_control:
+#     label: "{{ item.name }}"
+#   loop:
+#     - db: "{{ nextcloud_db_name }}"
+#       privs: "USAGE,CREATE"
+#       type: "schema"
+#       objs: "public"
+#       role: "{{ nextcloud_php_user }}"
+#       name: "GRANT USAGE,CREATE ON SCHEMA public TO php_{{ SIGLE }}_nuage;"
+#     - db: "{{ nextcloud_db_name }}"
+#       privs: "SELECT"
+#       type: "table"
+#       objs: "pg_namespace"
+#       role: "{{ nextcloud_php_user }}"
+#       name: "GRANT SELECT ON TABLE pg_namespace TO php_{{ SIGLE }}_nuage;"
+#     - db: "{{ nextcloud_db_name }}"
+#       privs: "SELECT"
+#       type: "table"
+#       objs: "pg_collation"
+#       role: "{{ nextcloud_php_user }}"
+#       name: "GRANT SELECT ON TABLE pg_collation TO php_{{ SIGLE }}_nuage;"
+#     - db: "{{ nextcloud_db_name }}"
+#       privs: "SELECT"
+#       type: "table"
+#       objs: "pg_index"
+#       role: "{{ nextcloud_php_user }}"
+#       name: "GRANT SELECT ON TABLE pg_index TO php_{{ SIGLE }}_nuage;"
+#     - db: "{{ nextcloud_db_name }}"
+#       privs: "SELECT"
+#       type: "table"
+#       objs: "pg_attrdef"
+#       role: "{{ nextcloud_php_user }}"
+#       name: "GRANT SELECT ON TABLE pg_attrdef TO php_{{ SIGLE }}_nuage;"
+#     - db: "{{ nextcloud_db_name }}"
+#       privs: "SELECT"
+#       type: "table"
+#       objs: "pg_description"
+#       role: "{{ nextcloud_php_user }}"
+#       name: "GRANT SELECT ON TABLE pg_description TO php_{{ SIGLE }}_nuage;"
+#     - db: "{{ nextcloud_db_name }}"
+#       privs: "SELECT"
+#       type: "table"
+#       objs: "pg_settings"
+#       role: "{{ nextcloud_php_user }}"
+#       name: "GRANT SELECT ON TABLE pg_settings TO php_{{ SIGLE }}_nuage;"
+#     - db: "{{ nextcloud_db_name }}"
+#       privs: "SELECT"
+#       objs: "pg_database"
+#       role: "{{ nextcloud_php_user }}"
+#       name: "GRANT SELECT ON pg_database TO php_{{ SIGLE }}_nuage;"
+
+# - name: Creation d'un fichier cron pour  /etc/cron.d
+#   ansible.builtin.cron:
+#     name: "nextcloud {{ SIGLE }}_{{ SITE }} taches d'arriere plan "
+#     minute: "5"
+#     user: "php_{{ SIGLE}}_{{SITE}}"
+#     job: "{{ nextcloud_source }}/cron"
+
+# - name: Recharger plusieurs services
+#   ansible.builtin.service:
+#     name: "{{ item }}"
+#     state: reloaded
+#   loop:
+#     - "postgresql"
+#     - "php{{ php_version }}-fpm"
+#     - "nginx"