@installdoc/ansible-gas-station
Version:
An Ansible playbook that provisions your network with software from GitHub Awesome lists, developed with disaster recovery in mind ⛽🔥🤤
86 lines (75 loc) • 2.64 kB
YAML
- name: "Ensure {{ app_name }}'s dependencies are installed"
package:
name:
- zip
- unzip
state: "{{ app_state | default('present') }}"
when: ansible_system == 'Linux'
- name: Ensure Megabyte Labs configuration directory exists
file:
mode: 0700
path: '{{ item }}'
state: directory
loop:
- ~/.config
- ~/.config/megabytelabs
- name: 'Check if {{ app_name }} has configuration stored in ~/.config/megabytelabs/sdkman'
stat:
path: ~/.config/megabytelabs/sdkman
register: sdkman_config
- name: 'Detect previously installed {{ app_name }} version'
command: cat sdkman
args:
chdir: ~/.config/megabytelabs
changed_when: false
register: current_sdkman_version
when: sdkman_config.stat.exists
- name: 'Detect the latest {{ app_name }} version'
uri:
url: https://api.github.com/repos/sdkman/sdkman-cli/releases/latest
register: sdkman_latest_release_tag
- name: 'Determine whether or not the latest version of {{ app_name }} is already installed'
set_fact:
install_sdkman: "{{ (current_sdkman_version.skipped | default(false)) or \
((not current_sdkman_version.skipped | default(false)) and (current_sdkman_version.stdout != sdkman_latest_release_tag.json.tag_name)) }}"
# @action Installs SDKMAN
# Removes older version of SDKMAN if it is already present
- name: 'Ensure older version of {{ app_name }} is uninstalled'
file:
path: ~/.sdkman/bin/sdkman-init.sh
state: absent
when: install_sdkman
# @action Installs SDKMAN
# Installs SDKMAN by running `curl -s "https://get.sdkman.io" | bash`
- name: 'Ensure {{ app_name }} is installed' # noqa 303
shell: |
set -o pipefail && curl -s "https://get.sdkman.io" | bash
args:
creates: ~/.sdkman/bin/sdkman-init.sh
executable: /bin/bash
when: install_sdkman
- name: 'Save meta information about the version of {{ app_name }} that was installed'
copy:
dest: ~/.config/megabytelabs/sdkman
mode: 0600
content: |
{{ sdkman_latest_release_tag.json.tag_name }}
when: install_sdkman
# @action Configures SDKMAN
# Sets `sdkman_auto_answer` to true in the SDKMAN configuration
- name: Ensure sdkman is configured
lineinfile:
path: ~/.sdkman/etc/config
regexp: ^sdkman_auto_answer
line: sdkman_auto_answer=true
# @action Configures SDKMAN
# Ensures user-specified SDKs are installed
- name: Ensure SDKs are installed
shell: |
source ~/.sdkman/bin/sdkman-init.sh
sdk install {{ sdk }}
when: sdk_installs is defined or user.sdk_installs is defined
loop: '{{ user.sdk_installs | default(sdk_installs) }}'
loop_control:
loop_var: sdk