From b14b458d80d74cba27420dc963160d211f36a59a Mon Sep 17 00:00:00 2001 From: Arthur BOUDREAULT <boudreaultarthur@ik.me> Date: Fri, 29 Oct 2021 15:32:00 +0200 Subject: [PATCH] draft: feature for app post-install (to correct) --- defaults/main.yml | 3 +++ tasks/app.yml | 39 +++++++++++++++++++++++++++++++++++++++ tasks/apps.yml | 32 +++++++++++++++++++++++++------- tasks/main.yml | 8 +++++++- templates/file.sh.j2 | 3 +++ templates/file.yml.j2 | 7 +++++++ 6 files changed, 84 insertions(+), 8 deletions(-) create mode 100644 tasks/app.yml create mode 100644 templates/file.sh.j2 create mode 100644 templates/file.yml.j2 diff --git a/defaults/main.yml b/defaults/main.yml index 14b42ca..682633e 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -56,3 +56,6 @@ ynh_apps: null # args: # domain: domain.tld # path: /ttrss + +ynh_apps_postinstall: null + diff --git a/tasks/app.yml b/tasks/app.yml new file mode 100644 index 0000000..a23bd1e --- /dev/null +++ b/tasks/app.yml @@ -0,0 +1,39 @@ +--- +#-----------------------------------------------------------------------------# +# ansible-yunohost allows to deploy Yunohost using Ansible # +# Copyright 2021-2021 Lydra https://www.lydra.fr/ # +# # +# this program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# this program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see <http://www.gnu.org/licenses/>. # +# # +#-----------------------------------------------------------------------------# + +# Installation part + +- name: Install yunohost apps (you are inside app.yml) + ansible.builtin.command: yunohost app install {{ item.link }} \ + --label "{{ item.label }}" \ + --args "{% for key, value in item.args.items() %}{{ key }}={{ value }}{% if not loop.last %}&{% endif %}{% endfor %}" + when: item.label not in ynh_installed_apps.values() + tags: apps + +- name: Transfer template to node (can be a config file or a script) + ansible.builtin.template: + src: "{{ item.post_install.src }}" + dest: "{{ item.post_install.dest }}" + type: "{{ item.post_install.type }}" + owner: "{{ item.post_install.owner }}" + group: "{{ item.post_install.group }}" + mode: "{{ item.post_install.mode }}" + when: item.post_install is defined + tags: apps diff --git a/tasks/apps.yml b/tasks/apps.yml index 525f81b..d4c0812 100644 --- a/tasks/apps.yml +++ b/tasks/apps.yml @@ -18,17 +18,35 @@ # # #-----------------------------------------------------------------------------# -- name: List currently installed apps +- name: List currently installed apps (you are inside apps.yml) ansible.builtin.command: yunohost app map --output-as json register: ynh_installed_apps_raw changed_when: False + tags: apps -- name: Format json of apps +- name: Format json of apps (you are inside apps.yml) ansible.builtin.set_fact: ynh_installed_apps="{{ ynh_installed_apps_raw.stdout | from_json }}" + tags: apps -- name: Install yunohost apps - ansible.builtin.command: yunohost app install {{ item.link }} \ - --label "{{ item.label }}" \ - --args "{% for key, value in item.args.items() %}{{ key }}={{ value }}{% if not loop.last %}&{% endif %}{% endfor %}" - with_items: "{{ ynh_apps }}" +- name: Install yunohost apps and perform post-install (you are inside apps.yml) + ansible.builtin.include_tasks: app.yml + loop: "{{ ynh_apps }}" when: item.label not in ynh_installed_apps.values() + tags: apps + +- name: debug (you are in apps.yml) + debug: + msg: "Voici le résultat :{{ item.post_install.0.src }}" + loop: "{{ ynh_apps.post_install.key }}" + when: ynh_apps.post_install is defined + tags: apps +## post-install: + +# boucler sur les apps et inclure ce fichier de tasks +# install app puis post install puis app puis post-install + +# quand dans fichier apps +# command remplacée par include app.yml +# command à l'intérieur du fichier de tache app +# dans app il faudra boucler sur app pour +# item.post_installl diff --git a/tasks/main.yml b/tasks/main.yml index 0480221..42307bb 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -69,6 +69,12 @@ ansible.builtin.include_tasks: users.yml when: ynh_users -- name: Install Yunohost apps +- name: Install Yunohost apps (you are in main.yml) ansible.builtin.include_tasks: apps.yml when: ynh_apps + tags: apps + +# - name: Launch post-install for apps +# ansible.builtin.include_tasks: postinstall.yml +# loop: "{{ post_install | dict2items }}" +# when: post_install diff --git a/templates/file.sh.j2 b/templates/file.sh.j2 new file mode 100644 index 0000000..4f0467b --- /dev/null +++ b/templates/file.sh.j2 @@ -0,0 +1,3 @@ +#!/bin/bash + +touch toto_{{ ynh_main_domain }}.txt diff --git a/templates/file.yml.j2 b/templates/file.yml.j2 new file mode 100644 index 0000000..16c03e2 --- /dev/null +++ b/templates/file.yml.j2 @@ -0,0 +1,7 @@ +--- +title: {{ ynh_discourse_settings.title }} +site_description: {{ ynh_discourse_settings.site_description }} +contact_email: {{ ynh_discourse_settings.contact_email }} +invite_only: {{ ynh_discourse_settings.invite_only }} +backup_frequency: {{ ynh_discourse_settings.backup_frequency }} +maximum_backups: {{ ynh_discourse_settings.maximum_backups }} -- GitLab