mirror of
https://bitbucket.org/atlassian/dc-deployments-automation.git
synced 2025-12-13 08:23:06 -06:00
221 lines
7.3 KiB
YAML
221 lines
7.3 KiB
YAML
---
|
|
|
|
- name: Check for alternate obr download url
|
|
set_fact:
|
|
atl_source_obr_from_marketplace: false
|
|
when:
|
|
- atl_obr_download_url is defined
|
|
|
|
- name: Source jira-servicedesk obr from marketplace
|
|
block:
|
|
|
|
- name: Marketplace OBR - Get the installer product version info
|
|
uri:
|
|
url: "{{ atl_mpac_products }}/key/jira/versions/name/{{ atl_product_version }}"
|
|
return_content: yes
|
|
register: atl_product_version_info
|
|
|
|
- name: Marketplace OBR - Show the returned build number
|
|
debug:
|
|
msg="buildNumber={{ atl_product_version_info.json.buildNumber }}"
|
|
|
|
- name: Marketplace OBR - Get the JSD build version info
|
|
uri:
|
|
url: "{{ atl_mpac_products }}/key/jira-servicedesk/versions/latest?application=\
|
|
jira&applicationBuild={{ atl_product_version_info.json.buildNumber }}"
|
|
return_content: yes
|
|
register: atl_jsd_build_info
|
|
|
|
- name: Marketplace OBR - Show the returned obr binary href
|
|
debug:
|
|
msg="obr_ref={{ atl_jsd_build_info.json._embedded.artifact._links.binary.href }}"
|
|
|
|
- name: Marketplace OBR - Set atl_obr_download_url
|
|
set_fact:
|
|
atl_obr_download_url: "{{ atl_jsd_build_info.json._embedded.artifact._links.binary.href }}"
|
|
|
|
- name: Marketplace OBR - Set atl_jsd_build
|
|
set_fact:
|
|
atl_jsd_build: "{{ atl_jsd_build_info.json.name }}"
|
|
|
|
- name: Marketplace OBR - Show the obr filename
|
|
debug:
|
|
msg="obr_name=jira-servicedesk-application-{{ atl_jsd_build }}.obr"
|
|
|
|
- name: Marketplace OBR - Set the obr filename
|
|
set_fact:
|
|
atl_obr_filename: "jira-servicedesk-application-{{ atl_jsd_build }}.obr"
|
|
|
|
when:
|
|
- atl_source_obr_from_marketplace | bool
|
|
|
|
# When sourcing jira-servicedesk from marketplace the atl_jsd_build is source by querying api.
|
|
# In this case atl_jsd_build must be passed manually by flag
|
|
|
|
- name: Source jira-servicedesk obr from alternate url
|
|
block:
|
|
|
|
- name: Alternate URL OBR - Show the obr filename
|
|
debug:
|
|
msg="obr_name=jira-servicedesk-application-{{ atl_jsd_build }}.obr"
|
|
|
|
- name: Alternate OBR - Set the obr filename
|
|
set_fact:
|
|
atl_obr_filename: "jira-servicedesk-application-{{ atl_jsd_build }}.obr"
|
|
|
|
when:
|
|
- not atl_source_obr_from_marketplace | bool
|
|
|
|
- name: is shared_home set ?
|
|
debug:
|
|
msg="atl_product_home_shared_download_dir={{ atl_product_home_shared_download_dir }}"
|
|
|
|
# For the first run a temp obr should be downloaded but moved to
|
|
# shared home to ensure all subsequent nodes have access
|
|
# to the same specific version binary.
|
|
# To prevent a race condition with multiple downloads at the same time
|
|
# a directory is used as a lockfile (atomic operation) when moving obr.
|
|
|
|
- name: Set assumptions to avoid race condition
|
|
set_fact:
|
|
download_obr: true
|
|
move_obr: false
|
|
atl_obr_download: "{{ atl_installer_temp }}/{{ atl_obr_filename }}"
|
|
atl_obr_shared_download: "{{ atl_product_home_shared_download_dir }}/{{ atl_obr_filename }}"
|
|
atl_obr_moving_lock: "{{ atl_product_home_shared_download_dir }}/{{ atl_obr_filename }}_moving"
|
|
atl_obr_completed_lock: "{{ atl_product_home_shared_download_dir }}/{{ atl_obr_filename }}_completed"
|
|
|
|
# Check for pre-downloaded obr on shared_home and completed lock dir.
|
|
- name: Check for completed lock directory
|
|
stat:
|
|
path: "{{ atl_obr_completed_lock }}"
|
|
register: completed_lock
|
|
|
|
- name: Check for obr in home_shared
|
|
stat:
|
|
path: "{{ atl_obr_shared_download }}"
|
|
register: home_shared_download
|
|
|
|
# If obr exists and lockdir exists use this obr instead
|
|
- name: Check lock directory and obr exists on shared_home
|
|
set_fact:
|
|
download_obr: false
|
|
atl_obr_download: "{{ atl_obr_shared_download }}"
|
|
when:
|
|
- home_shared_download.stat.exists
|
|
- completed_lock.stat.isdir is defined
|
|
- completed_lock.stat.isdir
|
|
|
|
# Fetch obr if required
|
|
- name: download_obr is true so fetch and do all the things
|
|
block:
|
|
- debug:
|
|
var: atl_obr_download_url
|
|
- debug:
|
|
var: atl_obr_download
|
|
|
|
# Fetch obr and copy to temp
|
|
- name: Fetch obr
|
|
get_url:
|
|
url: "{{ atl_obr_download_url }}"
|
|
dest: "{{ atl_obr_download }}"
|
|
mode: 0755
|
|
force: false
|
|
register: atl_obr_completed
|
|
|
|
# If obr was fetched make the lock directory
|
|
- name: Create moving_lock.
|
|
file:
|
|
path: "{{ atl_obr_moving_lock }}"
|
|
state: directory
|
|
when:
|
|
- atl_obr_completed is succeeded
|
|
register: moving_lock_created
|
|
|
|
# Directory lock was created by this run?
|
|
# If so, then set a fact intending to move obr
|
|
- name: Move obr Scenario - lock created by this run
|
|
set_fact:
|
|
move_obr: true
|
|
when:
|
|
- moving_lock_created is succeeded
|
|
- moving_lock_created.changed
|
|
# Otherwise directory lock was either already created or
|
|
# could not be created. Fall back is to continue and install from temp
|
|
|
|
when: download_obr
|
|
|
|
# If the intention is to move obr to home_shared
|
|
- name: Move obr to home_shared
|
|
block:
|
|
|
|
- name: Copy temp installer to home_shared
|
|
copy:
|
|
src: "{{ atl_obr_download }}"
|
|
dest: "{{ atl_obr_shared_download }}"
|
|
remote_src: true
|
|
register: copied
|
|
|
|
- name: Create completed_lock once obr downloaded and copied
|
|
file:
|
|
path: "{{ atl_obr_completed_lock }}"
|
|
state: directory
|
|
when: copied is succeeded
|
|
register: completed_lock_created
|
|
|
|
- name: Remove moving_lock to show that obr is completed
|
|
file:
|
|
path: "{{ atl_obr_moving_lock }}"
|
|
state: absent
|
|
when:
|
|
- completed_lock_created is succeeded
|
|
- copied is succeeded
|
|
register: moving_lock_removed
|
|
|
|
- name: Delete old temp installer
|
|
file:
|
|
path: "{{ atl_obr_download }}"
|
|
state: absent
|
|
when: moving_lock_removed is succeeded
|
|
register: temp_deleted
|
|
|
|
- name: Set install to home_shared location
|
|
set_fact:
|
|
atl_obr_download: "{{ atl_obr_shared_download }}"
|
|
when: temp_deleted is succeeded
|
|
|
|
when: move_obr
|
|
|
|
# At this point the binary is in {{ atl_obr_download }}
|
|
# (which is either on home_shared or temp)
|
|
|
|
- name: Ensure instaled-plugins dir exists
|
|
file:
|
|
path: "{{ atl_product_home_shared }}/plugins/installed-plugins"
|
|
state: directory
|
|
mode: 0750
|
|
owner: "{{ atl_product_user }}"
|
|
group: "{{ atl_product_user }}"
|
|
|
|
# Note as ansible unarchive cant handle "-j junk paths" we need to ignore errors to bypass the path verify
|
|
- name: Unpack the obr into the installed-plugins dir
|
|
unarchive:
|
|
remote_src: true
|
|
src: "{{ atl_obr_download }}"
|
|
dest: "{{ atl_product_home_shared }}/plugins/installed-plugins"
|
|
creates: "{{ atl_product_home_shared }}/plugins/installed-plugins/jira-servicedesk-application-{{ atl_jsd_build }}.jar"
|
|
list_files: no
|
|
exclude:
|
|
- M*
|
|
owner: "{{ atl_product_user }}"
|
|
group: "{{ atl_product_user }}"
|
|
mode: 0750
|
|
register: obr_unpack
|
|
ignore_errors: yes
|
|
|
|
- name: Move JSD dependency jars into the installed-plugins dir # noqa 503 - ignore lint info about when changed
|
|
shell:
|
|
cmd: "mv {{ atl_product_home_shared }}/plugins/installed-plugins/dependencies/*.jar {{ atl_product_home_shared }}/plugins/installed-plugins"
|
|
creates: "{{ atl_product_home_shared }}/plugins/installed-plugins/servicedesk-core-ui-plugin-{{ atl_jsd_build }}-*.jar"
|
|
when: obr_unpack.changed
|