diff --git a/playbooks/1password.yaml b/playbooks/1password.yaml new file mode 100644 index 0000000..dfbdd52 --- /dev/null +++ b/playbooks/1password.yaml @@ -0,0 +1,4 @@ +--- +- hosts: localhost + roles: + - 1password diff --git a/roles/1password/tasks/RedHat.yaml b/roles/1password/tasks/RedHat.yaml new file mode 100644 index 0000000..4f37387 --- /dev/null +++ b/roles/1password/tasks/RedHat.yaml @@ -0,0 +1,22 @@ +--- +- name: add yum repository key + become: true + rpm_key: + key: https://downloads.1password.com/linux/keys/1password.asc + +- name: add yum repository + become: true + yum_repository: + name: 1password + description: 1Password Stable Channel + baseurl: https://downloads.1password.com/linux/rpm/stable/$basearch + enabled: true + gpgcheck: true + repo_gpgcheck: true + gpgkey: ['https://downloads.1password.com/linux/keys/1password.asc'] + +- name: install yum package + become: true + yum: + name: 1password + state: latest diff --git a/roles/ag/tasks/RedHat.yaml b/roles/ag/tasks/RedHat.yaml new file mode 100644 index 0000000..1b7cd0c --- /dev/null +++ b/roles/ag/tasks/RedHat.yaml @@ -0,0 +1,6 @@ +--- +- name: install yum package + become: true + yum: + name: the_silver_searcher + state: latest diff --git a/roles/bat/tasks/Debian.yaml b/roles/bat/tasks/Debian.yaml index 0b66ecf..fe293b8 100644 --- a/roles/bat/tasks/Debian.yaml +++ b/roles/bat/tasks/Debian.yaml @@ -4,7 +4,6 @@ ansible_distribution == "Ubuntu" and ansible_distribution_version == "18.04" }}' -- debug: msg={{use_github}} - when: use_github include_tasks: deb.yaml diff --git a/roles/bat/tasks/RedHat.yaml b/roles/bat/tasks/RedHat.yaml new file mode 100644 index 0000000..b22e443 --- /dev/null +++ b/roles/bat/tasks/RedHat.yaml @@ -0,0 +1,6 @@ +--- +- name: install yum package + become: true + yum: + name: bat + state: latest diff --git a/roles/curl/tasks/RedHat.yaml b/roles/curl/tasks/RedHat.yaml new file mode 100644 index 0000000..a66b62a --- /dev/null +++ b/roles/curl/tasks/RedHat.yaml @@ -0,0 +1,6 @@ +--- +- name: install yum package + become: true + yum: + name: curl + state: latest diff --git a/roles/fzf/tasks/RedHat.yaml b/roles/fzf/tasks/RedHat.yaml new file mode 100644 index 0000000..7481f9a --- /dev/null +++ b/roles/fzf/tasks/RedHat.yaml @@ -0,0 +1,6 @@ +--- +- name: install yum package + become: true + yum: + name: fzf + state: latest diff --git a/roles/gh/tasks/RedHat.yaml b/roles/gh/tasks/RedHat.yaml new file mode 100644 index 0000000..337e33b --- /dev/null +++ b/roles/gh/tasks/RedHat.yaml @@ -0,0 +1,12 @@ +--- +- name: add yum repository + become: true + get_url: + url: https://cli.github.com/packages/rpm/gh-cli.repo + dest: /etc/yum.repos.d/gh-cli.repo + +- name: install dnf package + become: true + dnf: + name: gh + state: latest diff --git a/roles/htop/tasks/RedHat.yaml b/roles/htop/tasks/RedHat.yaml new file mode 100644 index 0000000..ec14518 --- /dev/null +++ b/roles/htop/tasks/RedHat.yaml @@ -0,0 +1,6 @@ +--- +- name: install dnf package + become: true + dnf: + name: htop + state: latest diff --git a/roles/jp/tasks/RedHat.yaml b/roles/jp/tasks/RedHat.yaml new file mode 100644 index 0000000..1ce1bdb --- /dev/null +++ b/roles/jp/tasks/RedHat.yaml @@ -0,0 +1,51 @@ +--- +- name: stat executable + stat: + path: '{{ansible_env.HOME}}/.local/bin/jp' + register: jp_stat + +- name: get installed version + when: jp_stat.stat.exists + command: jp --version + changed_when: false + register: jp_version + +- name: extract installed version + when: jp_stat.stat.exists + set_fact: + jp_installed_version: + '{{jp_version.stdout.strip() | regex_replace("^.*(\d+\.\d+\.\d+).*$", "\1")}}' + +- name: get latest release + uri: + url: 'https://api.github.com/repos/jmespath/jp/releases/latest' + register: latest + +- name: determine if jp needs installed + set_fact: + jp_needs_installed: + '{{not jp_stat.stat.exists or jp_installed_version != latest.json.tag_name}}' + arch_dict: {x86_64: amd64, arm64: arm64} + +- name: select asset name + when: jp_needs_installed + set_fact: + asset_query: + '[?contains(name, `jp-linux-{{arch_dict[ansible_architecture]}}`)] | [0]' +- name: select asset + when: jp_needs_installed + set_fact: + asset: '{{latest.json.assets | to_json | from_json | json_query(asset_query)}}' + +- name: create directory + when: jp_needs_installed + file: + path: '{{ansible_env.HOME}}/.local/bin' + state: directory + +- name: install executable + when: jp_needs_installed + get_url: + url: '{{asset.browser_download_url}}' + dest: '{{ansible_env.HOME}}/.local/bin/jp' + mode: '0755' diff --git a/roles/jq/tasks/RedHat.yaml b/roles/jq/tasks/RedHat.yaml new file mode 100644 index 0000000..38b45b5 --- /dev/null +++ b/roles/jq/tasks/RedHat.yaml @@ -0,0 +1,6 @@ +--- +- name: install dnf package + become: true + dnf: + name: jq + state: latest diff --git a/roles/llvm/tasks/Fedora.yaml b/roles/llvm/tasks/Fedora.yaml new file mode 100644 index 0000000..054e883 --- /dev/null +++ b/roles/llvm/tasks/Fedora.yaml @@ -0,0 +1,10 @@ +--- +- name: install dnf packages + become: true + dnf: + name: + - clang + - clang-tools-extra + - git-clang-format + - llvm + state: latest diff --git a/roles/neovim/tasks/RedHat.yaml b/roles/neovim/tasks/RedHat.yaml new file mode 100644 index 0000000..d7f5d58 --- /dev/null +++ b/roles/neovim/tasks/RedHat.yaml @@ -0,0 +1,8 @@ +--- +- name: install yum package + become: true + yum: + name: neovim + state: latest + +- include_tasks: Unix.yaml diff --git a/roles/nodejs/tasks/RedHat.yaml b/roles/nodejs/tasks/RedHat.yaml new file mode 100644 index 0000000..68ac9cd --- /dev/null +++ b/roles/nodejs/tasks/RedHat.yaml @@ -0,0 +1,6 @@ +--- +- name: install yum package + become: true + yum: + name: nodejs + state: latest diff --git a/roles/python/tasks/Debian.yaml b/roles/python/tasks/Debian.yaml index 97c9c87..625de2c 100644 --- a/roles/python/tasks/Debian.yaml +++ b/roles/python/tasks/Debian.yaml @@ -8,3 +8,4 @@ - python3-pip - python3-venv - python3-virtualenv + state: latest diff --git a/roles/python/tasks/RedHat.yaml b/roles/python/tasks/RedHat.yaml new file mode 100644 index 0000000..8dcc82b --- /dev/null +++ b/roles/python/tasks/RedHat.yaml @@ -0,0 +1,9 @@ +--- +- name: install yum packages + become: true + yum: + name: + - python3 + - python3-pip + - python3-virtualenv + state: latest diff --git a/roles/sudo/vars/RedHat.yaml b/roles/sudo/vars/RedHat.yaml new file mode 100644 index 0000000..fd6e3b0 --- /dev/null +++ b/roles/sudo/vars/RedHat.yaml @@ -0,0 +1,3 @@ +--- +sudo_owner: root +sudo_group: wheel diff --git a/roles/system-info/tasks/Debian.yaml b/roles/system-info/tasks/Debian.yaml index fbbda02..10f3eb2 100644 --- a/roles/system-info/tasks/Debian.yaml +++ b/roles/system-info/tasks/Debian.yaml @@ -3,34 +3,10 @@ become: true apt: name: + - acpi - gawk + - lm-sensors - sysstat state: latest -- name: create systemd user unit directory - file: - state: directory - dest: ~/.config/systemd/user - -- set_fact: - SYSTEM_INFO_SCRIPT_DIR: '{{ansible_env.HOME}}/.config/tmux/system-info' - -- when: '"WSL" not in ansible_kernel' - set_fact: - SYSTEM_INFO_SCRIPT: '{{SYSTEM_INFO_SCRIPT_DIR}}/system-info-Linux.sh' -- when: '"WSL" in ansible_kernel' - set_fact: - SYSTEM_INFO_SCRIPT: '{{SYSTEM_INFO_SCRIPT_DIR}}/system-info-WSL.sh' - -- name: install system-info systemd unit - template: - src: templates/system-info.service.j2 - dest: ~/.config/systemd/user/system-info.service - notify: restart system-info - -- name: enable system-info service - systemd: - name: system-info - scope: user - enabled: true - state: started +- include_tasks: Linux.yaml diff --git a/roles/system-info/tasks/Linux.yaml b/roles/system-info/tasks/Linux.yaml new file mode 100644 index 0000000..2ae9d7d --- /dev/null +++ b/roles/system-info/tasks/Linux.yaml @@ -0,0 +1,28 @@ +--- +- name: create systemd user unit directory + file: + state: directory + dest: ~/.config/systemd/user + +- set_fact: + SYSTEM_INFO_SCRIPT_DIR: '{{ansible_env.HOME}}/.config/tmux/system-info' + +- when: '"WSL" not in ansible_kernel' + set_fact: + SYSTEM_INFO_SCRIPT: '{{SYSTEM_INFO_SCRIPT_DIR}}/system-info-Linux.sh' +- when: '"WSL" in ansible_kernel' + set_fact: + SYSTEM_INFO_SCRIPT: '{{SYSTEM_INFO_SCRIPT_DIR}}/system-info-WSL.sh' + +- name: install system-info systemd unit + template: + src: templates/system-info.service.j2 + dest: ~/.config/systemd/user/system-info.service + notify: restart system-info + +- name: enable system-info service + systemd: + name: system-info + scope: user + enabled: true + state: started diff --git a/roles/system-info/tasks/RedHat.yaml b/roles/system-info/tasks/RedHat.yaml new file mode 100644 index 0000000..d3946d4 --- /dev/null +++ b/roles/system-info/tasks/RedHat.yaml @@ -0,0 +1,11 @@ +--- +- name: install dnf packages + become: true + dnf: + name: + - acpi + - lm_sensors + - sysstat + state: latest + +- include_tasks: Linux.yaml diff --git a/roles/tidy/tasks/RedHat.yaml b/roles/tidy/tasks/RedHat.yaml new file mode 100644 index 0000000..0d447ae --- /dev/null +++ b/roles/tidy/tasks/RedHat.yaml @@ -0,0 +1,6 @@ +--- +- name: install dnf package + become: true + dnf: + name: tidy + state: latest diff --git a/roles/tmux/tasks/RedHat.yaml b/roles/tmux/tasks/RedHat.yaml new file mode 100644 index 0000000..161be5f --- /dev/null +++ b/roles/tmux/tasks/RedHat.yaml @@ -0,0 +1,10 @@ +--- +- name: install yum packages + become: true + yum: + name: + - tmux + - sysstat + - urlview + - xsel + state: latest diff --git a/roles/tree/tasks/RedHat.yaml b/roles/tree/tasks/RedHat.yaml new file mode 100644 index 0000000..7f62685 --- /dev/null +++ b/roles/tree/tasks/RedHat.yaml @@ -0,0 +1,6 @@ +--- +- name: install dnf package + become: true + dnf: + name: tree + state: latest diff --git a/roles/yq/tasks/RedHat.yaml b/roles/yq/tasks/RedHat.yaml new file mode 100644 index 0000000..0605f1d --- /dev/null +++ b/roles/yq/tasks/RedHat.yaml @@ -0,0 +1,51 @@ +--- +- name: stat executable + stat: + path: '{{ansible_env.HOME}}/.local/bin/yq' + register: yq_stat + +- name: get installed version + when: yq_stat.stat.exists + command: yq --version + changed_when: false + register: yq_version + +- name: extract installed version + when: yq_stat.stat.exists + set_fact: + yq_installed_version: + '{{yq_version.stdout.strip() | regex_replace("^.*(\d+\.\d+\.\d+).*$", "\1")}}' + +- name: get latest release + uri: + url: 'https://api.github.com/repos/mikefarah/yq/releases/latest' + register: latest + +- name: determine if yq needs installed + set_fact: + yq_needs_installed: + '{{not yq_stat.stat.exists or yq_installed_version != latest.json.tag_name}}' + arch_dict: {x86_64: amd64, arm64: arm64} + +- name: select asset name + when: yq_needs_installed + set_fact: + asset_query: + '[?contains(name, `yq_linux_{{arch_dict[ansible_architecture]}}`)] | [0]' +- name: select asset + when: yq_needs_installed + set_fact: + asset: '{{latest.json.assets | to_json | from_json | json_query(asset_query)}}' + +- name: create directory + when: yq_needs_installed + file: + path: '{{ansible_env.HOME}}/.local/bin' + state: directory + +- name: install executable + when: yq_needs_installed + get_url: + url: '{{asset.browser_download_url}}' + dest: '{{ansible_env.HOME}}/.local/bin/yq' + mode: '0755' diff --git a/roles/zsh/tasks/RedHat.yaml b/roles/zsh/tasks/RedHat.yaml new file mode 100644 index 0000000..6abe806 --- /dev/null +++ b/roles/zsh/tasks/RedHat.yaml @@ -0,0 +1,8 @@ +--- +- name: install yum packages + become: true + yum: + name: + - zsh + - pinentry-tty + state: latest