Merge branch '34-howto-auto-update-apps' into 'main'
✅Resolve "How to auto update apps" Closes #34 See merge request lydra/yunohost/ansible-yunohost!18
This commit is contained in:
commit
12a76db9a4
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.
|
||||
- `link` correspond au nom de l'application Yunohost qu'on veut installer.
|
||||
|
||||
#### Concernant les arguments :
|
||||
- `domain` est indispensable. 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.
|
||||
#### Concernant les arguments
|
||||
- `domain` est obligatoire. Il faut choisir un des domaines de son instance Yunohost.
|
||||
- `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.
|
||||
|
||||
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é.
|
||||
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).
|
||||
|
@ -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.
|
||||
|
||||
### 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
|
||||
|
||||
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.
|
||||
- `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.
|
||||
- `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.
|
||||
|
||||
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.
|
||||
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).
|
||||
|
@ -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.
|
||||
|
||||
### 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
|
||||
|
||||
None.
|
||||
|
|
|
@ -63,3 +63,10 @@ ynh_apps: null
|
|||
# owner: ttrss # Only provide if different from app name
|
||||
# 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_var: ynh_app
|
||||
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
|
||||
ansible.builtin.include_tasks: apps.yml
|
||||
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