feat: cron task to autoupdate Yunohost daily
This commit is contained in:
parent
2e8dacdd1c
commit
2281bedd22
7 changed files with 115 additions and 6 deletions
32
README-FR.md
32
README-FR.md
|
@ -111,14 +111,14 @@ ynh_apps:
|
||||||
- `label` permet de donner un nom personnalisé à l'application sur l'interface utilisateur.
|
- `label` permet de donner un nom personnalisé à l'application sur l'interface utilisateur.
|
||||||
- `link` correspond au nom de l'application Yunohost qu'on veut installer.
|
- `link` correspond au nom de l'application Yunohost qu'on veut installer.
|
||||||
|
|
||||||
#### Concernant les arguments :
|
#### Concernant les arguments
|
||||||
- `domain` est indispensable. Il faut choisir un des domaines de son instance Yunohost.
|
- `domain` est obligatoire. Il faut choisir un des domaines de son instance Yunohost.
|
||||||
- `path` est indispensable. Il faut choisir une URL pour accéder à son application comme `domain.tld/my_app`. Utilisez juste `/` si l'application doit s'installer sur un sous-domaine.
|
- `path` est obligatoire. Il faut choisir une URL pour accéder à son application comme `domain.tld/my_app`. Utilisez juste `/` si l'application doit s'installer sur un sous-domaine.
|
||||||
- `is_public` est un argument qu'on retrouve souvent. Paramétré sur `yes`, l'application sera accessible à tout le monde, même sans authentification sur le portail SSO Yunohost. Paramétré sur `no`, l'application ne sera accessible qu'après authentification.
|
- `is_public` est un argument qu'on retrouve souvent. Paramétré sur `yes`, l'application sera accessible à tout le monde, même sans authentification sur le portail SSO Yunohost. Paramétré sur `no`, l'application ne sera accessible qu'après authentification.
|
||||||
|
|
||||||
Pour les autres arguments, il faut se référer au `manifest.json` disponible dans le dépôt de l'application Yunohost qu'on installe. Vous pouvez en apprendre plus sur cette partie [ici](https://yunohost.org/fr/packaging_apps_manifest).
|
Pour les autres arguments, il faut se référer au `manifest.json` disponible dans le dépôt de l'application Yunohost qu'on installe. Vous pouvez en apprendre plus sur cette partie [ici](https://yunohost.org/fr/packaging_apps_manifest).
|
||||||
|
|
||||||
#### Concernant la post-installation :
|
#### Concernant la post-installation
|
||||||
Il est possible de compléter l'installation des applications par l'ajout de templates jinja de configuration ou de scripts que vous aurez écrit de votre côté.
|
Il est possible de compléter l'installation des applications par l'ajout de templates jinja de configuration ou de scripts que vous aurez écrit de votre côté.
|
||||||
Pour activer cette fonctionnalité, définissez la variable `post_install` qui correspond à la liste des fichiers de post-installation de votre application.
|
Pour activer cette fonctionnalité, définissez la variable `post_install` qui correspond à la liste des fichiers de post-installation de votre application.
|
||||||
Cette tâche utilisant le module template, vous pouvez tout à fait utiliser vos propres variables et les appeler dans vos fichiers de template. Pour en savoir sur ce module, cliquez [ici](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/template_module.html).
|
Cette tâche utilisant le module template, vous pouvez tout à fait utiliser vos propres variables et les appeler dans vos fichiers de template. Pour en savoir sur ce module, cliquez [ici](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/template_module.html).
|
||||||
|
@ -131,6 +131,30 @@ Cette tâche utilisant le module template, vous pouvez tout à fait utiliser vos
|
||||||
|
|
||||||
Pour `owner` et `group`, par défaut le fichier va prendre comme utilisateur propriétaire le nom de l'application et comme groupe propriétaire www-data (groupe NGINX). Vous pouvez les changer en précisant des valeurs différentes.
|
Pour `owner` et `group`, par défaut le fichier va prendre comme utilisateur propriétaire le nom de l'application et comme groupe propriétaire www-data (groupe NGINX). Vous pouvez les changer en précisant des valeurs différentes.
|
||||||
|
|
||||||
|
### Concernant les mises à jour
|
||||||
|
|
||||||
|
```yml
|
||||||
|
# Autoupdate Yunohost and its apps
|
||||||
|
ynh_autoupdate:
|
||||||
|
scheduled: True
|
||||||
|
special_time: "daily" #Choices are [annually,daily,hourly,monthly,reboot,weekly,yearly]
|
||||||
|
apps: True
|
||||||
|
system: True
|
||||||
|
dest_script: "/usr/bin/"
|
||||||
|
```
|
||||||
|
|
||||||
|
Une tâche cron peut être mise en place pour automatiser la vérification des mises à jour système et applications suivant la périodicité de votre choix.
|
||||||
|
- `ynh_autoupdate.scheduled` : activez la tâche cron en mettant la valeur à `True`.
|
||||||
|
- `ynh_autoupdate.special_time`: est obligatoire. Elle permet de préciser quand vous souhaitez que cette tâche soit exécutée. Valeurs possibles : (`annually`,`daily`,`hourly`,`monthly`,`reboot`,`weekly`,`yearly`).
|
||||||
|
Pour en savoir plus sur les _special times_, cliquez [ici](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/cron_module.html).
|
||||||
|
- `ynh_autoupdate.apps` : est obligatoire. Activez la mise à jour automatique des applications Yunohost en mettant la valeur à `True`.
|
||||||
|
- `ynh_autoupdate.system` : est obligatoire. Activez la mise à jour automatique du système Yunohost en mettant la valeur à `True`.
|
||||||
|
- `ynh_autoupdate.dest_script` : c'est le chemin du répertoire où le script de mise à jour sera installé sur le serveur. La valeur par défaut est `/usr/local/bin`. Le script s'appelle `ynh_autoupdate.sh`.
|
||||||
|
|
||||||
|
Si des mises à jour sont disponibles, elles sont faites automatiquement. En cas de problème suite à la mise à jour d'une application, vous pouvez lire les logs qui sont disponibles ici `/var/log/yunohost/categories/operation`. Vous avez aussi la possibilité de revenir à la version précédente car Yunohost fait toujours une sauvegarde automatique d'une application lorsqu'elle est mise à jour.
|
||||||
|
|
||||||
|
Pour en savoir plus sur le fonctionnement des mises à jour dans Yunohost vous pouvez vous rendre [ici](https://yunohost.org/fr/update). Le changelog des versions de Yunohost est aussi disponible [ici](https://forum.yunohost.org/tag/ynh_release).
|
||||||
|
|
||||||
## Dépendances
|
## Dépendances
|
||||||
|
|
||||||
Aucune.
|
Aucune.
|
||||||
|
|
27
README.md
27
README.md
|
@ -111,14 +111,14 @@ ynh_apps:
|
||||||
- `label` allows you to give a custom name to the application on the user interface.
|
- `label` allows you to give a custom name to the application on the user interface.
|
||||||
- `link` is the name of the Yunohost application to install.
|
- `link` is the name of the Yunohost application to install.
|
||||||
|
|
||||||
#### About the arguments:
|
#### About the arguments
|
||||||
- `domain` is essential. You have to choose one of the domains of your Yunohost instance.
|
- `domain` is essential. You have to choose one of the domains of your Yunohost instance.
|
||||||
- `path` is required. You have to choose a URL to access your application like `domain.tld/my_app`. Just use `/` if the application is to be installed on a subdomain.
|
- `path` is required. You have to choose a URL to access your application like `domain.tld/my_app`. Just use `/` if the application is to be installed on a subdomain.
|
||||||
- `is_public` argument is a common one. Set to `yes`, the application will be accessible to everyone, even without authentication to the Yunohost SSO portal. Set to `no`, the application will be accessible only after authentication.
|
- `is_public` argument is a common one. Set to `yes`, the application will be accessible to everyone, even without authentication to the Yunohost SSO portal. Set to `no`, the application will be accessible only after authentication.
|
||||||
|
|
||||||
For the other arguments, you have to refer to the `manifest.json` available in the repository of the Yunohost application you install. You can learn more about this part [here](https://yunohost.org/fr/packaging_apps_manifest).
|
For the other arguments, you have to refer to the `manifest.json` available in the repository of the Yunohost application you install. You can learn more about this part [here](https://yunohost.org/fr/packaging_apps_manifest).
|
||||||
|
|
||||||
#### About the post-installation:
|
#### About the post-installation
|
||||||
It is possible to complete the installation of applications by adding jinja template configuration files or scripts written by yourself.
|
It is possible to complete the installation of applications by adding jinja template configuration files or scripts written by yourself.
|
||||||
To enable this feature, define the `post_install` variable which corresponds to the list of post-installation files of your applications.
|
To enable this feature, define the `post_install` variable which corresponds to the list of post-installation files of your applications.
|
||||||
Because this task uses the template module, you can use your own variables and call them in your template files. To know more about this module, click [here](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/template_module.html).
|
Because this task uses the template module, you can use your own variables and call them in your template files. To know more about this module, click [here](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/template_module.html).
|
||||||
|
@ -131,6 +131,29 @@ Because this task uses the template module, you can use your own variables and c
|
||||||
|
|
||||||
For `owner` and `group`, by default the file will take as owner the name of the application and as owner www-data(NGINX group). You can change them by specifying different values.
|
For `owner` and `group`, by default the file will take as owner the name of the application and as owner www-data(NGINX group). You can change them by specifying different values.
|
||||||
|
|
||||||
|
### About the updates
|
||||||
|
|
||||||
|
```yml
|
||||||
|
# Autoupdate Yunohost and its apps
|
||||||
|
ynh_autoupdate:
|
||||||
|
scheduled: True
|
||||||
|
special_time: "daily" #Choices are [annually,daily,hourly,monthly,reboot,weekly,yearly]
|
||||||
|
apps: True
|
||||||
|
system: True
|
||||||
|
dest_script: "/usr/bin/"
|
||||||
|
```
|
||||||
|
|
||||||
|
A cron job can been set up to automate the check for system and application updates on a schedule of your choice.
|
||||||
|
- `ynh_autoupdate.scheduled` : enables the cron job by setting the value to `True`.
|
||||||
|
- `ynh_autoupdate.special_time`: it is mandatory. It allows you to specify when you want this task to be executed. Possible values: (`annually`,`daily`,`hourly`,`monthly`,`reboot`,`weekly`,`yearly`). To learn more about special times, click [here](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/cron_module.html).
|
||||||
|
- `ynh_autoupdate.apps`: is mandatory. Enable automatic updating of Yunohost applications by setting the value to `True`.
|
||||||
|
- `ynh_autoupdate.system`: is mandatory. Enable automatic updating of the Yunohost system by setting the value to `True`.
|
||||||
|
- `ynh_autoupdate.dest_script`: it is the path to the directory where the update script will be installed on the server. The default value is `/usr/local/bin`. The script is named `ynh_autoupdate.sh`.
|
||||||
|
|
||||||
|
If available, updates are done automatically. In case of problems following an application update, you can read logs located in `/var/log/yunohost/categories/operation` . You also have the possibility to rollback to the previous version since Yunohost always makes an automatic backup of an application when it is updated.
|
||||||
|
|
||||||
|
To learn more about how updates work in Yunohost you can go [here](https://yunohost.org/fr/update). The changelog of Yunohost versions is also available [here](https://forum.yunohost.org/tag/ynh_release).
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
||||||
None.
|
None.
|
||||||
|
|
|
@ -63,3 +63,10 @@ ynh_apps: null
|
||||||
# owner: ttrss # Only provide if different from app name
|
# owner: ttrss # Only provide if different from app name
|
||||||
# group: ttrss # Only provide if different from www-data
|
# group: ttrss # Only provide if different from www-data
|
||||||
|
|
||||||
|
# Autoupdate Yunohost and its apps
|
||||||
|
ynh_autoupdate:
|
||||||
|
scheduled: False
|
||||||
|
# special_time: "daily" #Choices are [annually,daily,hourly,monthly,reboot,weekly,yearly]
|
||||||
|
# apps: True
|
||||||
|
# system: True
|
||||||
|
# dest_script: "/usr/local/bin/"
|
||||||
|
|
|
@ -32,3 +32,4 @@
|
||||||
loop_control:
|
loop_control:
|
||||||
loop_var: ynh_app
|
loop_var: ynh_app
|
||||||
when: ynh_app.label not in ynh_installed_apps.values()
|
when: ynh_app.label not in ynh_installed_apps.values()
|
||||||
|
|
||||||
|
|
36
tasks/autoupdate.yml
Normal file
36
tasks/autoupdate.yml
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
---
|
||||||
|
#-----------------------------------------------------------------------------#
|
||||||
|
# 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/>. #
|
||||||
|
# #
|
||||||
|
#-----------------------------------------------------------------------------#
|
||||||
|
|
||||||
|
- name: Creates Yunohost autoupdate script
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: "templates/ynh_autoupdate.sh.j2"
|
||||||
|
dest: "{{ ynh_autoupdate.dest_script | default('/usr/local/bin/') }}ynh_autoupdate.sh"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: '0740'
|
||||||
|
|
||||||
|
- name: Creates cron task under /etc/cron.d to auto-update Yunohost
|
||||||
|
ansible.builtin.cron:
|
||||||
|
name: "auto-update Yunohost
|
||||||
|
Logs can be found in /var/log/yunohost/categories/operation"
|
||||||
|
special_time: "{{ ynh_autoupdate.special_time }}"
|
||||||
|
user: root
|
||||||
|
job: "{{ ynh_autoupdate.dest_script | default('/usr/local/bin/') }}ynh_autoupdate.sh"
|
||||||
|
cron_file: ynh_autoupdate_cron
|
|
@ -72,3 +72,7 @@
|
||||||
- name: Install Yunohost apps
|
- name: Install Yunohost apps
|
||||||
ansible.builtin.include_tasks: apps.yml
|
ansible.builtin.include_tasks: apps.yml
|
||||||
when: ynh_apps
|
when: ynh_apps
|
||||||
|
|
||||||
|
- name: Configures Yunohost autoupdate
|
||||||
|
ansible.builtin.include_tasks: autoupdate.yml
|
||||||
|
when: ynh_autoupdate.scheduled
|
||||||
|
|
14
templates/ynh_autoupdate.sh.j2
Normal file
14
templates/ynh_autoupdate.sh.j2
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
yunohost tools update
|
||||||
|
{% if ynh_autoupdate.system %}
|
||||||
|
yunohost tools upgrade system
|
||||||
|
{% endif %}
|
||||||
|
{% if ynh_autoupdate.apps %}
|
||||||
|
yunohost tools upgrade apps
|
||||||
|
{% endif %}
|
||||||
|
{% if ynh_autoupdate.system is false and ynh_autoupdate.apps is false %}
|
||||||
|
echo "Read the readme to know more about ynh_autoupdate.apps and ynh_autoupdate.system"
|
||||||
|
echo "https://lab.frogg.it/lydra/yunohost/ansible-yunohost/-/blob/main/README.md"
|
||||||
|
exit 1
|
||||||
|
{% endif %}
|
Loading…
Reference in a new issue