@installdoc/ansible-gas-station
Version:
An Ansible playbook that provisions your network with software from GitHub Awesome lists, developed with disaster recovery in mind ⛽🔥🤤
82 lines (76 loc) • 3.77 kB
YAML
- name: "Ensure {{ software_item }}'s Homebrew Tap is installed"
become: false
community.general.homebrew_tap:
name: "{{ software_package[software_item]['brew_tap'] }}"
state: present
when: software_package[software_item]['brew_tap'] is defined
# @action Ensures software is installed
# Installs software on MacOS Systems using `Homebrew`
- name: "Ensure {{ software_item }} is installed (Homebrew)"
become: false
community.general.homebrew:
name: "{{ software_package[software_item]['brew'] }}"
state: present
when: "'brew' in available_methods"
register: brew_result
failed_when: "'No available formula or cask with the name' not in brew_result.msg and 'already installed' not in brew_result.msg and \
'Package installed' not in brew_result.msg"
- name: "Ensure {{ software_item }} is installed (go)" # noqa 301 305
shell: |
{%- if software_package[software_item]['go'] | regex_search('go (?i)(install|build|get)') -%}
{{ software_package[software_item]['go'] }}
{%- else -%}
go get {{ software_package[software_item]['go'] }}
{%- endif -%}
environment:
GOPATH: "{{ '/home/' + ansible_user + '/.local/go' }}"
register: go_result
when:
- "'go' in available_methods"
- "'No available formula or cask with the name' in brew_result.msg or brew_result.skipped is defined or \
((brew_result.changed and brew_result.failed) and (not brew_result.changed))"
failed_when: false
- name: "Ensure {{ software_item }} is installed (cargo)" # noqa 301 305
shell: |
{%- if 'cargo install' in "software_package[software_item]['cargo']" -%}
{{ software_package[software_item]['cargo'] }}
{%- else -%}
cargo install {{ software_package[software_item]['cargo'] }}
{%- endif -%}
args:
executable: /bin/bash
register: cargo_result
when:
- "'cargo' in available_methods"
- "'No available formula or cask with the name' in brew_result.msg or brew_result.skipped is defined or \
((brew_result.changed and brew_result.failed) and (not brew_result.changed))"
- "go_result.rc is defined and go_result.rc != 0"
failed_when: false
- name: "Ensure {{ software_item }} is installed (Binary)"
get_url:
url: "{{ software_package[software_item]['binary'] }}"
dest: "/usr/local/bin/{{ software_item }}"
mode: 0755
when:
- "'binary' in available_methods"
- "'No available formula or cask with the name' in brew_result.msg or brew_result.skipped is defined or \
((brew_result.changed and brew_result.failed) and (not brew_result.changed))"
- "go_result.rc is defined and go_result.rc != 0"
- "'is already installed' not in cargo_result.stderr or 'Installed package' not in cargo_result.stderr or 'error: could not find' in cargo_result.stderr"
register: binary_result
failed_when: "binary_result.status_code != 200 and 'Request failed' not in binary_result.msg"
- name: "Ensure {{ software_item }} is installed (GitHub)"
include_role:
name: githubbinary
vars:
github_binaries:
- "{{ software_package[software_item]['github'] }}"
when:
- "'github' in available_methods"
- "'No available formula or cask with the name' in brew_result.msg or brew_result.skipped is defined or \
((brew_result.changed and brew_result.failed) and (not brew_result.changed))"
- "go_result.rc is defined and go_result.rc != 0"
- "'is already installed' not in cargo_result.stderr or 'Installed package' not in cargo_result.stderr or 'error: could not find' in cargo_result.stderr"
- "binary_result.msg is defined and 'Request failed' in binary_result.msg or binary_result.skipped is defined or \
((binary_result.changed and binary_result.failed) and (not binary_result.changed))"