@installdoc/ansible-gas-station
Version:
An Ansible playbook that provisions your network with software from GitHub Awesome lists, developed with disaster recovery in mind ⛽🔥🤤
77 lines (65 loc) • 2.7 kB
YAML
- name: Ensure Megabyte Labs configuration directory exists
ansible.windows.win_file:
path: '%USERPROFILE%\.config\megabytelabs'
state: directory
- name: "Check if tdm-gcc has configuration stored in '%USERPROFILE%/.config/megabytelabs/tdm_gcc'"
ansible.windows.win_stat:
path: '%USERPROFILE%\.config\megabytelabs\tdm_gcc'
register: tdm_gcc_config
- name: Detect previously installed tdm-gcc version
ansible.windows.win_shell: type tdm_gcc
args:
chdir: '%USERPROFILE%\.config\megabytelabs'
changed_when: false
register: current_tdm_gcc_version
when: tdm_gcc_config.stat.exists
- name: Detect the latest tdm-gcc version
ansible.windows.win_uri:
url: https://api.github.com/repos/jmeubank/tdm-gcc/releases
return_content: true
register: tdm_gcc_releases
- name: Detect URL of the latest tdm-gcc version
set_fact:
tdm_gcc_latest_version_url: "{{ (tdm_gcc_releases.json | map(attribute='assets') | \
flatten | selectattr('browser_download_url','match','.*\\d.exe$'))[0].browser_download_url }}"
- name: Detect the latest tdm-gcc version
set_fact:
tdm_gcc_latest_version: "{{ tdm_gcc_latest_version_url | regex_search('(((\\d+\\.)*\\d+)(-\\d)*)') }}"
- name: Determine whether or not the latest version of tdm-gcc is already installed
set_fact:
install_tdm_gcc: "{{ (current_tdm_gcc_version.skipped | default(false)) or \
((not current_tdm_gcc_version.skipped | default(false)) and (current_tdm_gcc_version.stdout | trim != tdm_gcc_latest_version)) }}"
- name: Ensure tdm-gcc is installed
ansible.windows.win_package:
path: "{{ tdm_gcc_latest_version_url }}"
when: install_tdm_gcc
- name: Save meta information about the version of tdm-gcc that was installed
ansible.windows.win_copy:
dest: '%USERPROFILE%\.config\megabytelabs\tdm_gcc'
content: |
{{ tdm_gcc_latest_version }}
when: install_tdm_gcc
- name: "Ensure {{ app_name }} is installed"
ansible.windows.win_command: go get -u github.com/wailsapp/wails/cmd/wails
args:
creates: "{{ wails_goroot }}/bin/wails"
environment:
GOPATH: "{{ wails_goroot }}"
- name: "Ensure {{ app_name }} is added to PATH"
ansible.windows.win_path:
elements:
- "{{ wails_goroot }}/bin/wails"
- name: "Ensure {{ app_name }} is setup"
become_user: "{{ user.username }}"
ansible.windows.win_template:
src: wails.json.j2
dest: '%USERPROFILE%\.wails\wails.json'
loop: "{{ user_configs }}"
loop_control:
label: "{{ user.username }}"
loop_var: user
when:
- (user.system is not defined) or ((user.system is defined) and (not user.system))
- user.wails_name is defined
- user.wails_email is defined