--- - name: Fetch and cache latest version when no override block: - name: Fetch the latest version from URL set_fact: atl_product_version_json: "{{ lookup('url', '{{ atl_product_latest_version_url }}') }}" - name: Set the local var to fetched version set_fact: atl_product_version: "{{ atl_product_version_json.version }}" when: atl_product_version is undefined or atl_product_version == "latest" - name: Write override cached version when specified template: src: version.j2 dest: "{{ atl_product_version_cache }}" force: false - name: Use version for product version command: "cat {{ atl_product_version_cache }}" register: atl_product_version_file changed_when: false # Note: We don't cache this in the shared drive to the complexity # around download race-conditions if multiple nodes are starting at # the same time. When downloading from product-downloads.atlassian.com # (which is a CDN) takes seconds anyway. - name: Fetch product installer get_url: url: "{{ atl_product_download_url }}" dest: "{{ atl_product_download }}" mode: 0644 force: false - name: Create target version directory file: path: "{{ atl_product_installation_base }}/{{ atl_product_version_file.stdout }}" state: directory owner: "{{ atl_product_user }}" - name: Unpack the product packages unarchive: remote_src: true src: "{{ atl_product_download }}" dest: "{{ atl_product_installation_base }}/{{ atl_product_version_file.stdout }}" creates: "{{ atl_product_installation_base }}/{{ atl_product_version_file.stdout }}/bin/catalina.sh" owner: "{{ atl_product_user }}" group: "{{ atl_product_user }}" mode: 0755 # Strip off the lead product/version specific directory to normaise naming extra_opts: - "--strip-components=1" - name: Symlink the installed version to current file: src: "{{ atl_product_installation_base }}/{{ atl_product_version_file.stdout }}" dest: "{{ atl_product_installation_target }}" state: link force: true