lot's of standardizing with the refacto
This commit is contained in:
181
tasks/main.yml
181
tasks/main.yml
@@ -1,35 +1,56 @@
|
||||
# vim: set filetype=yaml.ansible :
|
||||
---
|
||||
# create all the facts used throughout the role, but shouldn't be touched
|
||||
# by the user
|
||||
- name: Set installation facts
|
||||
ansible.builtin.set_fact:
|
||||
paths: "{% if use_local %}{{ localpaths }}{% else %}{{ syspaths }}{% endif %}"
|
||||
appimages: [] # appimages to install
|
||||
cargopkgs: [] # rust packages from cargo
|
||||
cargoversioned: [] # versioned rust packages from cargo
|
||||
caskpkgs: [] # homebrew casks
|
||||
flatpkgs: [] # flatpaks
|
||||
gopkgs: [] # go applications
|
||||
npmpkgs: [] # npm commands
|
||||
pipxpkgs: [] # pipx packages
|
||||
srcpkgs: [] # packages built from source
|
||||
syspkgs: [] # system package manager packages
|
||||
tappkgs: [] # homebrew tap packages
|
||||
brewtaps: [] # homebrew taps
|
||||
fpremotes: # flatpak remotes
|
||||
app_images: [] # app_images to install
|
||||
cargo_pkgs: [] # rust packages from cargo
|
||||
cask_pkgs: [] # homebrew casks
|
||||
flatpaks: [] # flatpaks
|
||||
go_pkgs: [] # go applications
|
||||
npm_pkgs: [] # npm commands
|
||||
pipx_pkgs: [] # pipx packages
|
||||
src_pkgs: [] # packages built from source
|
||||
sys_pkgs: [] # system package manager packages
|
||||
tap_pkgs: [] # homebrew tap packages
|
||||
brew_taps: [] # homebrew taps
|
||||
flatpak_remotes: # flatpak remotes, includes flathub by default
|
||||
- name: flathub
|
||||
url: https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||
|
||||
- name: Set facts based on use_local == true
|
||||
when:
|
||||
- use_local
|
||||
ansible.builtin.set_fact:
|
||||
paths: "{{ local_paths }}"
|
||||
flatpak_method: user
|
||||
|
||||
- name: Set facts based on use_local == false
|
||||
when:
|
||||
- not use_local
|
||||
ansible.builtin.set_fact:
|
||||
paths: "{{ sys_paths }}"
|
||||
flatpak_method: system
|
||||
|
||||
- name: Set macOS specific facts
|
||||
when:
|
||||
- ansible_distribution == 'MacOSX'
|
||||
ansible.builtin.set_fact:
|
||||
pipx_exec: /opt/homebrew/bin/pipx
|
||||
|
||||
|
||||
- name: Determine OS and set facts for it
|
||||
block:
|
||||
- name: Set macOS facts
|
||||
when: ansible_os_family == 'Darwin'
|
||||
ansible.builtin.set_fact:
|
||||
syspkg_become: false
|
||||
sys_pkg_become: false
|
||||
|
||||
- name: Set Linux facts
|
||||
when: ansible_system == 'Linux'
|
||||
ansible.builtin.set_fact:
|
||||
syspkg_become: true
|
||||
sys_pkg_become: true
|
||||
|
||||
- name: Generate package installation lists
|
||||
ansible.builtin.include_tasks:
|
||||
@@ -38,10 +59,10 @@
|
||||
loop_control:
|
||||
loop_var: pkg
|
||||
|
||||
- name: Install syspkgs list
|
||||
become: "{{ syspkg_become }}"
|
||||
- name: Install sys_pkgs list
|
||||
become: "{{ sys_pkg_become }}"
|
||||
ansible.builtin.package:
|
||||
name: "{{ syspkgs | unique }}"
|
||||
name: "{{ sys_pkgs | unique }}"
|
||||
state: present
|
||||
|
||||
- name: Redhat based OS
|
||||
@@ -50,9 +71,9 @@
|
||||
- name: Install dnf packages
|
||||
become: true
|
||||
when:
|
||||
- syspkgs|length > 0
|
||||
- sys_pkgs|length > 0
|
||||
ansible.builtin.dnf:
|
||||
name: "{{ syspkgs | unique }}"
|
||||
name: "{{ sys_pkgs | unique }}"
|
||||
state: present
|
||||
|
||||
- name: Debian based OS
|
||||
@@ -60,11 +81,11 @@
|
||||
block:
|
||||
- name: Install apt packages
|
||||
ansible.builtin.apt:
|
||||
name: "{{ syspkgs | unique }}"
|
||||
name: "{{ sys_pkgs | unique }}"
|
||||
state: "{{ install_state }}"
|
||||
become: true
|
||||
when:
|
||||
- syspkgs|length > 0
|
||||
- sys_pkgs|length > 0
|
||||
|
||||
- name: Darwin/macOS based OS
|
||||
when: ansible_os_family == 'Darwin'
|
||||
@@ -77,62 +98,62 @@
|
||||
|
||||
- name: Tap homebrew taps
|
||||
community.general.homebrew_tap:
|
||||
name: "{{ brewtaps | unique }}"
|
||||
name: "{{ brew_taps | unique }}"
|
||||
state: present
|
||||
when: brewtaps|length > 0
|
||||
when: brew_taps|length > 0
|
||||
|
||||
- name: Install homebrew packages
|
||||
community.general.homebrew:
|
||||
name: "{{ syspkgs | unique }}"
|
||||
name: "{{ sys_pkgs | unique }}"
|
||||
state: "{{ install_state }}"
|
||||
when: syspkgs|length > 0
|
||||
when: sys_pkgs|length > 0
|
||||
|
||||
- name: Install homebrew casks
|
||||
community.general.homebrew_cask:
|
||||
name: "{{ caskpkgs | unique }}"
|
||||
name: "{{ cask_pkgs | unique }}"
|
||||
state: "{{ install_state }}"
|
||||
when: caskpkgs|length > 0
|
||||
when: cask_pkgs|length > 0
|
||||
|
||||
- name: Workaround to install homebrew taps
|
||||
ansible.builtin.command:
|
||||
cmd: "brew install {{ tappkg }}"
|
||||
loop: "{{ tappkgs | unique }}"
|
||||
cmd: "brew install {{ tap_pkg }}"
|
||||
loop: "{{ tap_pkgs | unique }}"
|
||||
loop_control:
|
||||
loop_var: tappkg
|
||||
loop_var: tap_pkg
|
||||
# TODO: fix the need to have this workaround
|
||||
|
||||
- name: Install flatpaks on Linux Systems
|
||||
when:
|
||||
- ansible_system == 'Linux'
|
||||
- flatpkgs|length > 0
|
||||
- flatpaks|length > 0
|
||||
block:
|
||||
- name: Add flatpak repos
|
||||
become: true
|
||||
loop: "{{ fpremotes | unique }}"
|
||||
when:
|
||||
- flatpak_remotes|length > 0
|
||||
- flatpaks|length > 0
|
||||
become: "{{ not use_local }}"
|
||||
loop: "{{ flatpak_remotes | unique }}"
|
||||
loop_control:
|
||||
loop_var: remote
|
||||
when:
|
||||
- fpremotes|length > 0
|
||||
- flatpkgs|length > 0
|
||||
community.general.flatpak_remote:
|
||||
enabled: true
|
||||
method: system
|
||||
method: "{{ flatpak_method }}"
|
||||
state: present
|
||||
flatpakrepo_url: "{{ remote.url }}"
|
||||
name: "{{ remote.name }}"
|
||||
|
||||
- name: Install flatpaks
|
||||
become: true
|
||||
loop: "{{ flatpkgs | unique }}"
|
||||
loop: "{{ flatpaks | unique }}"
|
||||
loop_control:
|
||||
loop_var: flatpkg
|
||||
loop_var: flatpak
|
||||
when:
|
||||
- flatpkgs|length > 0
|
||||
- flatpaks|length > 0
|
||||
community.general.flatpak:
|
||||
state: latest
|
||||
method: system
|
||||
name: "{{ flatpkg.name }}"
|
||||
remote: "{{ flatpkg.remote | default('flathub') }}"
|
||||
method: "{{ flatpak_method }}"
|
||||
name: "{{ flatpak.name }}"
|
||||
remote: "{{ flatpak.remote | default('flathub') }}"
|
||||
|
||||
- name: Ensure /usr/local/bin exists
|
||||
ansible.builtin.file:
|
||||
@@ -142,64 +163,56 @@
|
||||
mode: '0755'
|
||||
become: true
|
||||
|
||||
- name: Install srcpkgs
|
||||
- name: Install src_pkgs
|
||||
ansible.builtin.include_tasks:
|
||||
file: "src/{{ srcpkg }}.yml"
|
||||
loop: "{{ srcpkgs | unique }}"
|
||||
file: "src/{{ src_pkg }}.yml"
|
||||
loop: "{{ src_pkgs | unique }}"
|
||||
loop_control:
|
||||
loop_var: srcpkg
|
||||
when: srcpkgs|length > 0
|
||||
loop_var: src_pkg
|
||||
when: src_pkgs|length > 0
|
||||
|
||||
- name: Install cargo packages at specific version
|
||||
community.general.cargo:
|
||||
name: "{{ cargopkg.name }}"
|
||||
version: "{{ cargopkg.version }}"
|
||||
path: "{{ cargopkg.path | default(default_install_prefix) }}"
|
||||
locked: "{{ cargopkg.locked | default(false) }}"
|
||||
become: true
|
||||
when: cargoversioned|length > 0
|
||||
loop: "{{ cargoversioned | unique }}"
|
||||
when:
|
||||
- cargo_pkgs|length > 0
|
||||
become: "{{ not use_local }}"
|
||||
loop: "{{ cargo_pkgs | unique }}"
|
||||
loop_control:
|
||||
loop_var: cargopkg
|
||||
|
||||
- name: Install cargo packages at latest version
|
||||
loop_var: cargo_pkg
|
||||
community.general.cargo:
|
||||
name: "{{ cargopkg }}"
|
||||
state: latest
|
||||
locked: "{{ cargopkg.locked | default(false) }}"
|
||||
when: cargopkgs|length > 0
|
||||
loop: "{{ cargopkgs | unique }}"
|
||||
loop_control:
|
||||
loop_var: cargopkg
|
||||
name: "{{ cargo_pkg.cargo.pkg }}"
|
||||
version: "{{ cargo_pkg.ver }}"
|
||||
path: "{{ paths.cargo }}"
|
||||
locked: "{{ cargo_pkg.cargo.locked }}"
|
||||
|
||||
- name: Install local go packages
|
||||
loop: "{{ gopkgs | unique }}"
|
||||
when:
|
||||
- go_pkgs|length > 0
|
||||
loop: "{{ go_pkgs | unique }}"
|
||||
loop_control:
|
||||
loop_var: gopkg
|
||||
when: gopkgs|length > 0
|
||||
loop_var: go_pkg
|
||||
environment:
|
||||
GOROOT: /usr/local/go
|
||||
PATH: /usr/local/go/bin:$PATH
|
||||
GOROOT: "{{ paths.install }}/go"
|
||||
PATH: "{{ paths.install }}/go/bin:$PATH"
|
||||
ansible.builtin.command:
|
||||
cmd: "go install {{ gopkg }}"
|
||||
#TODO: figure out how to check if the gopkg is already installed
|
||||
cmd: "go install {{ go_pkg }}"
|
||||
# TODO: figure out how to check if the go_pkg is already installed
|
||||
|
||||
- name: Install local npm packages
|
||||
loop: "{{ npmpkgs | unique }}"
|
||||
loop: "{{ npm_pkgs | unique }}"
|
||||
loop_control:
|
||||
loop_var: npmpkg
|
||||
when: npmpkgs|length > 0
|
||||
loop_var: npm_pkg
|
||||
when: npm_pkgs|length > 0
|
||||
community.general.npm:
|
||||
global: true
|
||||
name: "{{ npmpkg }}"
|
||||
name: "{{ npm_pkg }}"
|
||||
state: latest
|
||||
|
||||
- name: Install python pipx packages for user
|
||||
loop: "{{ pipxpkgs | unique }}"
|
||||
loop: "{{ pipx_pkgs | unique }}"
|
||||
loop_control:
|
||||
loop_var: pipxpkg
|
||||
when: pipxpkgs|length > 0
|
||||
loop_var: pipx_pkg
|
||||
when: pipx_pkgs|length > 0
|
||||
community.general.pipx:
|
||||
executable: "{% if ansible_os_family == 'Darwin' %}/opt/homebrew/bin/pipx{% else %}/usr/bin/pipx{% endif %}"
|
||||
name: "{{ pipxpkg }}"
|
||||
executable: "{{ pipx_exec }}"
|
||||
name: "{{ pipx_pkg }}"
|
||||
state: latest
|
||||
|
||||
Reference in New Issue
Block a user