--- # file: roles/sqlpage/tasks/main.yml - name: "check if /usr/local/src/sqlpage exists" stat: path: "/usr/local/src/sqlpage" register: install_sqlpage check_mode: false tags: sqlpage - name: "check version of sqlpage" slurp: src: "/usr/local/src/sqlpage/VERSION" register: current_version check_mode: false when: install_sqlpage.stat.exists tags: sqlpage - name: "set fact current_version" set_fact: current_version: "{{ current_version['content'] | b64decode | trim }}" when: install_sqlpage.stat.exists tags: sqlpage - name: "set fact needed_version" set_fact: needed_version: "{{ sqlpage_version }}" when: sqlpage_version != "latest" tags: sqlpage - name: "get the latest version from github" uri: url: https://api.github.com/repos/lovasoa/SQLpage/tags return_content: true check_mode: false register: sqlpage_github_tags delegate_to: localhost become: false run_once: true when: sqlpage_version == "latest" tags: sqlpage - name: "set fact needed_version" set_fact: needed_version: "{{ sqlpage_github_tags.json | json_query('[0].name') }}" when: - sqlpage_github_tags.json is defined - sqlpage_version == "latest" tags: sqlpage - name: "do we need to update sqlpage?" debug: msg: "Update needed for sqlpage, from {{ current_version }} to {{ needed_version }} (use: --extra-vars '{ \"sqlpage_update_now\" : true }')" when: - install_sqlpage.stat.exists - current_version != needed_version tags: sqlpage - name: "install_or_update.yml" import_tasks: install_or_update.yml when: - (sqlpage_update_now) or (global_update_now) or (not install_sqlpage.stat.exists) - not install_sqlpage.stat.exists or current_version != needed_version - not ansible_check_mode tags: sqlpage - name: "for each project, check if sqlpage is installed" stat: path: "/srv/{{ item['name'] }}/sqlpage" loop: "{{ sqlpage_project_list }}" register: sqlpage_installation_state tags: sqlpage - name: "for each project, deploy sqlpage if needed" command: "rsync -a --exclude='sqlpage.json' /usr/local/src/sqlpage/ /srv/{{ item.item['name'] }}/" loop: "{{ sqlpage_installation_state.results }}" when: not item.stat.exists tags: sqlpage - name: "sqlpage.json" template: src: sqlpage.json dest: "/srv/{{ item['name'] }}/sqlpage/sqlpage.json" loop: "{{ sqlpage_project_list }}" register: sqlpage_json notify: restart sqlpage@ tags: sqlpage - name: "env_vars" template: src: env_vars.j2 dest: "/srv/{{ item['name'] }}/env_vars" loop: "{{ sqlpage_project_list }}" when: item.environment_list is defined register: env_vars notify: restart sqlpage@ tags: sqlpage - name: "combine sqlpage_json and env_vars results" set_fact: combined_results: "{{ sqlpage_json.results + env_vars.results }}" tags: sqlpage - name: "/etc/systemd/system/sqlpage.service" copy: src: "sqlpage.service" dest: "/etc/systemd/system/sqlpage.service" register: systemd_service_target tags: sqlpage - name: "/etc/systemd/system/sqlpage@.service" template: src: "sqlpage@.service" dest: "/etc/systemd/system/sqlpage@.service" register: systemd_service tags: sqlpage - name: "systemctl daemon-reload" command: "systemctl daemon-reload" when: systemd_service_target.changed or systemd_service.changed tags: sqlpage - name: "systemd enabled and started for each individual sqlpage services" systemd: name: "sqlpage@{{ item['name'] }}.service" state: started enabled: true loop: "{{ sqlpage_project_list }}" tags: sqlpage