From 9d44c18172da99b2e0e405e8355c105af6409f6a Mon Sep 17 00:00:00 2001 From: sylvainar Date: Thu, 24 Aug 2017 22:39:58 +0200 Subject: [PATCH] Refactor app managment, add domains --- README.md | 14 +++++++++----- default/main.yml | 12 ++---------- tasks/app.yml | 8 -------- tasks/apps.yml | 13 +++++++++++++ tasks/domains.yml | 13 +++++++++++++ tasks/main.yml | 11 +++++++---- 6 files changed, 44 insertions(+), 27 deletions(-) delete mode 100644 tasks/app.yml create mode 100644 tasks/apps.yml create mode 100644 tasks/domains.yml diff --git a/README.md b/README.md index 0908f42..701f181 100644 --- a/README.md +++ b/README.md @@ -16,17 +16,21 @@ Example of Variables: yunohost: # Link to the install script install_script_url: https://raw.githubusercontent.com/YunoHost/install_script/master/install_yunohost - # The main domain + # The main domain, then a list of other domains. domain: example.com + extra_domains: + - example2.com + - example3.com # Yunohost admin password password: MYINSECUREPWD_PLZ_OVERRIDE_THIS # If you don't want to use a noho.st url ignore_dyndns: False # The list of apps you want to install. apps: - - link: ttrss # It can be the name of an official app or a github link - args: # Provide here args. Path and domain are mandatory, other args depend of the app. - path: /var/www/ttrss + - label: Tiny Tiny RSS # Label is important, it's a reference for the Playbook. + link: ttrss # It can be the name of an official app or a github link + args: # Provide here args. Path and domain are mandatory, other args depend of the app (cf manifest.json of app). + path: /ttrss domain: example.com ``` @@ -48,7 +52,7 @@ Example Playbook update_cache: yes roles: - - { role: ansible-yunohost } + - { role: sylvainar.yunohost } ``` License diff --git a/default/main.yml b/default/main.yml index bb6a7d4..f344a86 100644 --- a/default/main.yml +++ b/default/main.yml @@ -1,15 +1,7 @@ yunohost: - # Link to the install script install_script_url: https://raw.githubusercontent.com/YunoHost/install_script/master/install_yunohost - # The main domain domain: example.com - # Yunohost admin password + extra_domains: ~ password: MYINSECUREPWD_PLZ_OVERRIDE_THIS - # If you don't want to use a noho.st url ignore_dyndns: False - # The list of apps you want to install. - apps: - - link: ttrss # It can be the name of an official app or a github link - args: # Provide here args. Path and domain are mandatory, other args depend of the app. - path: /var/www/ttrss - domain: example.com + apps: ~ diff --git a/tasks/app.yml b/tasks/app.yml deleted file mode 100644 index 6978056..0000000 --- a/tasks/app.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -- name: Test if this app is already installed - stat: path={{ app.args.path }} - register: yunohost_app_installed - -- name: Install app - shell: yunohost app install {{ app.link }} --args "{% for key, value in app.args.items() %}{{key}}={{value}}{% if not loop.last %}&{% endif %}{% endfor %}" - when: yunohost_app_installed.stat.exists == False diff --git a/tasks/apps.yml b/tasks/apps.yml new file mode 100644 index 0000000..45a1f8b --- /dev/null +++ b/tasks/apps.yml @@ -0,0 +1,13 @@ +--- +- name: List currently installed apps + shell: yunohost app map --output-as json + register: yunohost_installed_apps_raw + changed_when: False + +- name: Format json of apps + set_fact: yunohost_installed_apps="{{ yunohost_installed_apps_raw.stdout | from_json }}" + +- name: Install apps + shell: 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: "{{ yunohost.apps }}" + when: item.label not in yunohost_installed_apps.values() diff --git a/tasks/domains.yml b/tasks/domains.yml new file mode 100644 index 0000000..ea261c9 --- /dev/null +++ b/tasks/domains.yml @@ -0,0 +1,13 @@ +--- +- name: List currently installed domains + shell: yunohost domain list --output-as json + register: yunohost_installed_domains_raw + changed_when: False + +- name: Format json of domains + set_fact: yunohost_installed_domains="{{ yunohost_installed_domains_raw.stdout | from_json }}" + +- name: Create domains + shell: yunohost domain add {{ item }} --admin-password {{ yunohost.password }} + with_items: "{{ yunohost.extra_domains }}" + when: item not in yunohost_installed_domains.domains diff --git a/tasks/main.yml b/tasks/main.yml index b3b6f5a..bdaf213 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -30,11 +30,14 @@ " when: yunohost_file_install.stat.exists == False +- name: Create domains + include: domains.yml + when: yunohost.extra_domains + - name: Install certificates - shell: "yunohost domain cert-install" - when: yunohost_file_install.stat.exists == False + shell: yunohost domain cert-install + changed_when: False - name: Install apps - include: app.yml app={{item}} - with_items: "{{ yunohost.apps }}" + include: apps.yml when: yunohost.apps