From 333ee4c3f50305ae2c031498207ef4c69444d4bb Mon Sep 17 00:00:00 2001 From: Matthew Stobbs Date: Sat, 18 Jan 2025 09:24:11 -0700 Subject: [PATCH] make the packages role more generic --- files/caddy/caddy.yml | 104 ++++++++++++++++++ meta/argument_spec.yml | 43 ++++++++ tasks/Darwin/alacritty.yml | 8 ++ tasks/Darwin/ansible.yml | 8 ++ tasks/Darwin/btop.yml | 8 ++ tasks/Darwin/carapace.yml | 9 ++ tasks/Darwin/cmake.yml | 8 ++ tasks/Darwin/editorconfig.yml | 8 ++ tasks/Darwin/firefox.yml | 9 ++ tasks/Darwin/fzf.yml | 8 ++ tasks/Darwin/ghostty.yml | 9 ++ tasks/Darwin/git.yml | 20 ++++ tasks/Darwin/go.yml | 35 ++++++ tasks/Darwin/hugo.yml | 8 ++ tasks/Darwin/iterm2.yml | 4 + tasks/Darwin/jq.yml | 8 ++ tasks/Darwin/neovide.yml | 4 + tasks/Darwin/neovim.yml | 8 ++ tasks/Darwin/nerdfonts.yml | 16 +++ tasks/Darwin/nodejs.yml | 8 ++ tasks/Darwin/nushell.yml | 9 ++ tasks/Darwin/pandoc.yml | 8 ++ tasks/Darwin/pipx.yml | 8 ++ tasks/Darwin/python3-pip.yml | 8 ++ tasks/Darwin/ripgrep.yml | 8 ++ tasks/Darwin/rust.yml | 8 ++ tasks/Darwin/stow.yml | 8 ++ tasks/Darwin/terminal.yml | 11 ++ tasks/Darwin/terraform.yml | 4 + tasks/Darwin/tidy.yml | 8 ++ tasks/Darwin/tmux.yml | 8 ++ tasks/Darwin/vivaldi.yml | 4 + tasks/Darwin/zoxide.yml | 8 ++ tasks/Darwin/zsh.yml | 8 ++ tasks/Darwin_do_install.yml | 45 ++++++++ tasks/Debian/alacritty.yml | 26 +++++ tasks/Debian/ansible.yml | 14 +++ tasks/Debian/btop.yml | 11 ++ tasks/Debian/cmake.yml | 10 ++ tasks/Debian/editorconfig.yml | 11 ++ tasks/Debian/firefox.yml | 9 ++ tasks/Debian/fzf.yml | 10 ++ tasks/Debian/git.yml | 15 +++ tasks/Debian/go.yml | 4 + tasks/Debian/hugo.yml | 11 ++ tasks/Debian/jq.yml | 11 ++ tasks/Debian/neovide.yml | 29 +++++ tasks/Debian/neovim.yml | 12 ++ tasks/Debian/nerdfonts.yml | 3 + tasks/Debian/nodejs.yml | 13 +++ tasks/Debian/nushell.yml | 11 ++ tasks/Debian/pandoc.yml | 11 ++ tasks/Debian/pipx.yml | 11 ++ tasks/Debian/python3-pip.yml | 11 ++ tasks/Debian/ripgrep.yml | 11 ++ tasks/Debian/rust.yml | 13 +++ tasks/Debian/stow.yml | 11 ++ tasks/Debian/terminal.yml | 11 ++ tasks/Debian/tidy.yml | 11 ++ tasks/Debian/tmux.yml | 11 ++ tasks/Debian/vivaldi.yml | 6 + tasks/Debian/zoxide.yml | 11 ++ tasks/Debian/zsh.yml | 11 ++ tasks/Linux/alacritty.yml | 13 +++ tasks/Linux/files/neovide/icon.png | Bin 0 -> 19446 bytes tasks/Linux/files/neovide/neovide.desktop | 8 ++ tasks/Linux/gitea.yml | 128 ++++++++++++++++++++++ tasks/Linux/go.yml | 41 +++++++ tasks/Linux/neovide.yml | 17 +++ tasks/Linux/nerdfonts.yml | 22 ++++ tasks/Linux/nushell.yml | 21 ++++ tasks/RedHat/alacritty.yml | 25 +++++ tasks/RedHat/ansible.yml | 7 ++ tasks/RedHat/btop.yml | 5 + tasks/RedHat/carapace.yml | 7 ++ tasks/RedHat/cmake.yml | 9 ++ tasks/RedHat/consul.yml | 9 ++ tasks/RedHat/editorconfig.yml | 8 ++ tasks/RedHat/firefox.yml | 9 ++ tasks/RedHat/fzf.yml | 10 ++ tasks/RedHat/ghostty.yml | 15 +++ tasks/RedHat/git.yml | 10 ++ tasks/RedHat/go.yml | 5 + tasks/RedHat/hashicorp_repo.yml | 27 +++++ tasks/RedHat/hugo.yml | 10 ++ tasks/RedHat/jq.yml | 10 ++ tasks/RedHat/konsole.yml | 9 ++ tasks/RedHat/neovide.yml | 19 ++++ tasks/RedHat/neovim.yml | 22 ++++ tasks/RedHat/nerdfonts.yml | 4 + tasks/RedHat/nodejs.yml | 10 ++ tasks/RedHat/nomad.yml | 9 ++ tasks/RedHat/nushell.yml | 16 +++ tasks/RedHat/packer.yml | 8 ++ tasks/RedHat/pandoc.yml | 10 ++ tasks/RedHat/pipx.yml | 9 ++ tasks/RedHat/python3-pip.yml | 10 ++ tasks/RedHat/ripgrep.yml | 10 ++ tasks/RedHat/rust.yml | 14 +++ tasks/RedHat/stow.yml | 10 ++ tasks/RedHat/terminal.yml | 12 ++ tasks/RedHat/terra_repo.yml | 22 ++++ tasks/RedHat/terraform.yml | 8 ++ tasks/RedHat/tidy.yml | 10 ++ tasks/RedHat/tmux.yml | 10 ++ tasks/RedHat/vault.yml | 9 ++ tasks/RedHat/vivaldi.yml | 14 +++ tasks/RedHat/zfs.yml | 65 +++++++++++ tasks/RedHat/zoxide.yml | 17 +++ tasks/RedHat_do_install.yml | 33 ++++++ tasks/main.yml | 18 ++- vars/main.yml | 4 + 112 files changed, 1610 insertions(+), 3 deletions(-) create mode 100644 files/caddy/caddy.yml create mode 100644 meta/argument_spec.yml create mode 100644 tasks/Darwin/alacritty.yml create mode 100644 tasks/Darwin/ansible.yml create mode 100644 tasks/Darwin/btop.yml create mode 100644 tasks/Darwin/carapace.yml create mode 100644 tasks/Darwin/cmake.yml create mode 100644 tasks/Darwin/editorconfig.yml create mode 100644 tasks/Darwin/firefox.yml create mode 100644 tasks/Darwin/fzf.yml create mode 100644 tasks/Darwin/ghostty.yml create mode 100644 tasks/Darwin/git.yml create mode 100644 tasks/Darwin/go.yml create mode 100644 tasks/Darwin/hugo.yml create mode 100644 tasks/Darwin/iterm2.yml create mode 100644 tasks/Darwin/jq.yml create mode 100644 tasks/Darwin/neovide.yml create mode 100644 tasks/Darwin/neovim.yml create mode 100644 tasks/Darwin/nerdfonts.yml create mode 100644 tasks/Darwin/nodejs.yml create mode 100644 tasks/Darwin/nushell.yml create mode 100644 tasks/Darwin/pandoc.yml create mode 100644 tasks/Darwin/pipx.yml create mode 100644 tasks/Darwin/python3-pip.yml create mode 100644 tasks/Darwin/ripgrep.yml create mode 100644 tasks/Darwin/rust.yml create mode 100644 tasks/Darwin/stow.yml create mode 100644 tasks/Darwin/terminal.yml create mode 100644 tasks/Darwin/terraform.yml create mode 100644 tasks/Darwin/tidy.yml create mode 100644 tasks/Darwin/tmux.yml create mode 100644 tasks/Darwin/vivaldi.yml create mode 100644 tasks/Darwin/zoxide.yml create mode 100644 tasks/Darwin/zsh.yml create mode 100644 tasks/Darwin_do_install.yml create mode 100644 tasks/Debian/alacritty.yml create mode 100644 tasks/Debian/ansible.yml create mode 100644 tasks/Debian/btop.yml create mode 100644 tasks/Debian/cmake.yml create mode 100644 tasks/Debian/editorconfig.yml create mode 100644 tasks/Debian/firefox.yml create mode 100644 tasks/Debian/fzf.yml create mode 100644 tasks/Debian/git.yml create mode 100644 tasks/Debian/go.yml create mode 100644 tasks/Debian/hugo.yml create mode 100644 tasks/Debian/jq.yml create mode 100644 tasks/Debian/neovide.yml create mode 100644 tasks/Debian/neovim.yml create mode 100644 tasks/Debian/nerdfonts.yml create mode 100644 tasks/Debian/nodejs.yml create mode 100644 tasks/Debian/nushell.yml create mode 100644 tasks/Debian/pandoc.yml create mode 100644 tasks/Debian/pipx.yml create mode 100644 tasks/Debian/python3-pip.yml create mode 100644 tasks/Debian/ripgrep.yml create mode 100644 tasks/Debian/rust.yml create mode 100644 tasks/Debian/stow.yml create mode 100644 tasks/Debian/terminal.yml create mode 100644 tasks/Debian/tidy.yml create mode 100644 tasks/Debian/tmux.yml create mode 100644 tasks/Debian/vivaldi.yml create mode 100644 tasks/Debian/zoxide.yml create mode 100644 tasks/Debian/zsh.yml create mode 100644 tasks/Linux/alacritty.yml create mode 100644 tasks/Linux/files/neovide/icon.png create mode 100644 tasks/Linux/files/neovide/neovide.desktop create mode 100644 tasks/Linux/gitea.yml create mode 100644 tasks/Linux/go.yml create mode 100644 tasks/Linux/neovide.yml create mode 100644 tasks/Linux/nerdfonts.yml create mode 100644 tasks/Linux/nushell.yml create mode 100644 tasks/RedHat/alacritty.yml create mode 100644 tasks/RedHat/ansible.yml create mode 100644 tasks/RedHat/btop.yml create mode 100644 tasks/RedHat/carapace.yml create mode 100644 tasks/RedHat/cmake.yml create mode 100644 tasks/RedHat/consul.yml create mode 100644 tasks/RedHat/editorconfig.yml create mode 100644 tasks/RedHat/firefox.yml create mode 100644 tasks/RedHat/fzf.yml create mode 100644 tasks/RedHat/ghostty.yml create mode 100644 tasks/RedHat/git.yml create mode 100644 tasks/RedHat/go.yml create mode 100644 tasks/RedHat/hashicorp_repo.yml create mode 100644 tasks/RedHat/hugo.yml create mode 100644 tasks/RedHat/jq.yml create mode 100644 tasks/RedHat/konsole.yml create mode 100644 tasks/RedHat/neovide.yml create mode 100644 tasks/RedHat/neovim.yml create mode 100644 tasks/RedHat/nerdfonts.yml create mode 100644 tasks/RedHat/nodejs.yml create mode 100644 tasks/RedHat/nomad.yml create mode 100644 tasks/RedHat/nushell.yml create mode 100644 tasks/RedHat/packer.yml create mode 100644 tasks/RedHat/pandoc.yml create mode 100644 tasks/RedHat/pipx.yml create mode 100644 tasks/RedHat/python3-pip.yml create mode 100644 tasks/RedHat/ripgrep.yml create mode 100644 tasks/RedHat/rust.yml create mode 100644 tasks/RedHat/stow.yml create mode 100644 tasks/RedHat/terminal.yml create mode 100644 tasks/RedHat/terra_repo.yml create mode 100644 tasks/RedHat/terraform.yml create mode 100644 tasks/RedHat/tidy.yml create mode 100644 tasks/RedHat/tmux.yml create mode 100644 tasks/RedHat/vault.yml create mode 100644 tasks/RedHat/vivaldi.yml create mode 100644 tasks/RedHat/zfs.yml create mode 100644 tasks/RedHat/zoxide.yml create mode 100644 tasks/RedHat_do_install.yml diff --git a/files/caddy/caddy.yml b/files/caddy/caddy.yml new file mode 100644 index 0000000..4f3241b --- /dev/null +++ b/files/caddy/caddy.yml @@ -0,0 +1,104 @@ +# Install and configure caddy reverse proxy +--- +- name: create caddy group + become: true + ansible.builtin.group: + name: "{{ caddy.group | default('caddy') }}" + state: present + system: true + tags: + - http + - caddy + - proxy + - user_group + +- name: create caddy user + become: true + ansible.builtin.user: + comment: caddy server user + create_home: true + group: "{{ caddy.group | default('caddy') }}" + name: "{{ caddy.user | default('caddy') }}" + state: present + system: true + password_lock: true + shell: /sbin/nologin + tags: + - http + - caddy + - proxy + - user_group + +- name: install caddy binary + become: true + ansible.builtin.copy: + dest: /usr/local/bin/caddy + group: root + owner: root + mode: '0755' + setype: bin_t + src: caddy/caddy + tags: + - http + - caddy + - proxy + - binary + +- name: install caddy systemd service + become: true + ansible.builtin.template: + backup: true + dest: /etc/systemd/system/caddy.service + group: root + owner: root + mode: '0640' + setype: systemd_unit_file_t + src: caddy/caddy.service.j2 + vars: + domain_name: "{{ nextcloud.domain_name }}" + user: "{{ caddy.user | default('caddy') }}" + group: "{{ caddy.group | default('caddy') }}" + envfile: "{{ caddy.envfile | default(omit) }}" + cmdpath: /usr/local/bin/caddy + extra_args: --environ + configfile: "{{ caddy.configfile | default('/etc/caddy/Caddyfile') }}" + timeout: 5s + capabilities: CAP_NET_ADMIN CAP_NET_BIND_SERVICE + tags: + - http + - caddy + - proxy + - service + - config + +- name: install Caddyfile + become: true + ansible.builtin.template: + backup: true + dest: /etc/caddy/Caddyfile + group: "{{ caddy.group | default('caddy') }}" + owner: "{{ caddy.user | default('caddy') }}" + mode: '0640' + setype: etc_t + src: caddy/Caddyfile.j2 + tags: + - http + - caddy + - proxy + - config + +- name: install .env file + become: true + when: + - caddy.env_vars is defined + - caddy.envfile is defined + ansible.builtin.copy: + dest: "{{ caddy.envfile }}" + group: root + owner: root + mode: '0600' + setype: etc_t + content: | + {{ caddy.env_vars }} + tags: + - caddy diff --git a/meta/argument_spec.yml b/meta/argument_spec.yml new file mode 100644 index 0000000..6aa26e5 --- /dev/null +++ b/meta/argument_spec.yml @@ -0,0 +1,43 @@ +--- +argument_specs: + main: + short_description: install software easily + description: + - Make the installation of packages consistent on each platform. + - Installs for RedHat, Debian or Darwin based systems. + author: + - Matthew Stobbs + options: + packages: + type: "list" + elements: "str" + required: true + description: | + The list of packages to install by name. + syspkglist: + type: "list" + elements: "str" + required: false + description: | + Additional packages to install via the system + default package manager. Is combined with the + completed list of packages to install. + Only use this if you a package isn't available to the role. + install_state: + type: "str" + choices: + - "present" + - "latest" + - "absent" + required: false + default: present + description: | + Desired state of the packages to install. + full_upgrade: + type: "bool" + required: false + default: false + description: | + Do a full system upgrade before installing + additional packages. This does not handle + rebooting a machine that has been upgraded. diff --git a/tasks/Darwin/alacritty.yml b/tasks/Darwin/alacritty.yml new file mode 100644 index 0000000..f60a4d6 --- /dev/null +++ b/tasks/Darwin/alacritty.yml @@ -0,0 +1,8 @@ +--- +- name: append alacritty to caskpkgs + set_fact: + caskpkgs: "{{ (caskpkgs | default([])) + [ 'alacritty' ] }}" + tags: + - MacOS + - brew + - package diff --git a/tasks/Darwin/ansible.yml b/tasks/Darwin/ansible.yml new file mode 100644 index 0000000..ff4df0d --- /dev/null +++ b/tasks/Darwin/ansible.yml @@ -0,0 +1,8 @@ +--- +- name: append ansible to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'ansible' ]}}" + tags: + - MacOS + - homebrew + - package diff --git a/tasks/Darwin/btop.yml b/tasks/Darwin/btop.yml new file mode 100644 index 0000000..2aeca30 --- /dev/null +++ b/tasks/Darwin/btop.yml @@ -0,0 +1,8 @@ +--- +- name: append btop to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'btop' ]}}" + tags: + - MacOS + - brew + - package diff --git a/tasks/Darwin/carapace.yml b/tasks/Darwin/carapace.yml new file mode 100644 index 0000000..46a3112 --- /dev/null +++ b/tasks/Darwin/carapace.yml @@ -0,0 +1,9 @@ +--- +- name: append carapace to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'carapace' ] }}" + tags: + - MacOS + - homebrew + - package + - nushell diff --git a/tasks/Darwin/cmake.yml b/tasks/Darwin/cmake.yml new file mode 100644 index 0000000..15c14be --- /dev/null +++ b/tasks/Darwin/cmake.yml @@ -0,0 +1,8 @@ +--- +- name: append cmake to caskpkgs + set_fact: + caskpkgs: "{{ (caskpkgs | default([])) + [ 'homebrew/cask/cmake' ] }}" + tags: + - MacOS + - homebrew + - package diff --git a/tasks/Darwin/editorconfig.yml b/tasks/Darwin/editorconfig.yml new file mode 100644 index 0000000..72b8cd0 --- /dev/null +++ b/tasks/Darwin/editorconfig.yml @@ -0,0 +1,8 @@ +--- +- name: append editorconfig to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'editorconfig' ]}}" + tags: + - MacOS + - homebrew + - package diff --git a/tasks/Darwin/firefox.yml b/tasks/Darwin/firefox.yml new file mode 100644 index 0000000..0cd5db8 --- /dev/null +++ b/tasks/Darwin/firefox.yml @@ -0,0 +1,9 @@ +--- +- name: append firefox to caskpkgs + set_fact: + caskpkgs: "{{ (caskpkgs | default([])) + [ 'firefox' ] }}" + tags: + - packages + - MacOS + - homebrew + - web diff --git a/tasks/Darwin/fzf.yml b/tasks/Darwin/fzf.yml new file mode 100644 index 0000000..965299b --- /dev/null +++ b/tasks/Darwin/fzf.yml @@ -0,0 +1,8 @@ +--- +- name: append fzf to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'fzf' ]}}" + tags: + - MacOS + - homebrew + - package diff --git a/tasks/Darwin/ghostty.yml b/tasks/Darwin/ghostty.yml new file mode 100644 index 0000000..762504a --- /dev/null +++ b/tasks/Darwin/ghostty.yml @@ -0,0 +1,9 @@ +--- +- name: append ghostty to caskpkgs + set_fact: + caskpkgs: "{{ (caskpkgs | default([])) + [ 'ghostty' ] }}" + tags: + - MacOS + - brew + - package + - terminal diff --git a/tasks/Darwin/git.yml b/tasks/Darwin/git.yml new file mode 100644 index 0000000..b0a898f --- /dev/null +++ b/tasks/Darwin/git.yml @@ -0,0 +1,20 @@ +--- +- name: set git_pkgs + set_fact: + git_pkgs: + - git + - git-delta + - git-extras + - git-lfs + tags: + - MacOS + - homebrew + - package + +- name: append git to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + git_pkgs }}" + tags: + - MacOS + - homebrew + - package diff --git a/tasks/Darwin/go.yml b/tasks/Darwin/go.yml new file mode 100644 index 0000000..d13a774 --- /dev/null +++ b/tasks/Darwin/go.yml @@ -0,0 +1,35 @@ +--- +- name: Set go Filename + ansible.builtin.set_fact: + goFilename: "go{{ go.version }}.darwin-{{ arch[ansible_architecture] }}.{{ go.darwin.extension }}" + tags: + - dev + - go + +- name: Download latest go package for MacOS + become: true + ansible.builtin.get_url: + dest: "/tmp/{{ goFilename }}" + url: "https://go.dev/dl/{{ goFilename }}" + checksum: "sha256:{{ go.darwin.sum[ansible_architecture] }}" + decompress: false + tags: + - dev + - go + +- name: Install go MacOS use pkg file + become: true + ansible.builtin.command: + cmd: "installer -pkg /tmp/{{ goFilename }} -target /" + tags: + - dev + - go + +- name: Cleanup go package download + become: true + ansible.builtin.file: + path: "/tmp/{{ goFilename }}" + state: absent + tags: + - dev + - go diff --git a/tasks/Darwin/hugo.yml b/tasks/Darwin/hugo.yml new file mode 100644 index 0000000..eab1b4a --- /dev/null +++ b/tasks/Darwin/hugo.yml @@ -0,0 +1,8 @@ +--- +- name: append hugo to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'hugo' ]}}" + tags: + - MacOS + - homebrew + - package diff --git a/tasks/Darwin/iterm2.yml b/tasks/Darwin/iterm2.yml new file mode 100644 index 0000000..fd8e140 --- /dev/null +++ b/tasks/Darwin/iterm2.yml @@ -0,0 +1,4 @@ +--- +- name: append iterm2 to caskpkgs + set_fact: + caskpkgs: "{{ (caskpkgs | default([])) + [ 'iterm2' ] }}" diff --git a/tasks/Darwin/jq.yml b/tasks/Darwin/jq.yml new file mode 100644 index 0000000..a161487 --- /dev/null +++ b/tasks/Darwin/jq.yml @@ -0,0 +1,8 @@ +--- +- name: append jq to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'jq' ]}}" + tags: + - MacOS + - homebrew + - package diff --git a/tasks/Darwin/neovide.yml b/tasks/Darwin/neovide.yml new file mode 100644 index 0000000..e604d6d --- /dev/null +++ b/tasks/Darwin/neovide.yml @@ -0,0 +1,4 @@ +--- +- name: append neovide to caskpkgs + set_fact: + caskpkgs: "{{ (caskpkgs | default([])) + [ 'neovide' ] }}" diff --git a/tasks/Darwin/neovim.yml b/tasks/Darwin/neovim.yml new file mode 100644 index 0000000..9b3bc59 --- /dev/null +++ b/tasks/Darwin/neovim.yml @@ -0,0 +1,8 @@ +--- +- name: append neovim to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'neovim' ]}}" + tags: + - MacOS + - homebrew + - package diff --git a/tasks/Darwin/nerdfonts.yml b/tasks/Darwin/nerdfonts.yml new file mode 100644 index 0000000..e2d4745 --- /dev/null +++ b/tasks/Darwin/nerdfonts.yml @@ -0,0 +1,16 @@ +--- +- name: MacOS Tap homebrew fonts + community.general.homebrew_tap: + name: homebrew/cask-fonts + state: present + +- name: generate nerdfont cask names + loop: "{{ nerdfonts }}" + loop_control: + loop_var: font + set_fact: + nerdfont_casks: "{{ (nerdfont_casks | default([])) + [ 'homebrew/cask/font-' + font.brew + '-nerd-font' ] }}" + +- name: append nerdfonts to caskpkgs + set_fact: + caskpkgs: "{{ (caskpkgs | default([])) + nerdfont_casks }}" diff --git a/tasks/Darwin/nodejs.yml b/tasks/Darwin/nodejs.yml new file mode 100644 index 0000000..9076057 --- /dev/null +++ b/tasks/Darwin/nodejs.yml @@ -0,0 +1,8 @@ +--- +- name: append node to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'node' ]}}" + tags: + - MacOS + - homebrew + - package diff --git a/tasks/Darwin/nushell.yml b/tasks/Darwin/nushell.yml new file mode 100644 index 0000000..d331d51 --- /dev/null +++ b/tasks/Darwin/nushell.yml @@ -0,0 +1,9 @@ +--- +- name: append nushell to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'nushell' ]}}" + tags: + - MacOS + - homebrew + - package + - shell diff --git a/tasks/Darwin/pandoc.yml b/tasks/Darwin/pandoc.yml new file mode 100644 index 0000000..fb9639d --- /dev/null +++ b/tasks/Darwin/pandoc.yml @@ -0,0 +1,8 @@ +--- +- name: append pandoc to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'pandoc' ]}}" + tags: + - MacOS + - homebrew + - package diff --git a/tasks/Darwin/pipx.yml b/tasks/Darwin/pipx.yml new file mode 100644 index 0000000..aba00a3 --- /dev/null +++ b/tasks/Darwin/pipx.yml @@ -0,0 +1,8 @@ +--- +- name: append pipx to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'pipx' ]}}" + tags: + - MacOS + - homebrew + - package diff --git a/tasks/Darwin/python3-pip.yml b/tasks/Darwin/python3-pip.yml new file mode 100644 index 0000000..7304434 --- /dev/null +++ b/tasks/Darwin/python3-pip.yml @@ -0,0 +1,8 @@ +--- +- name: append python3 to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'python3' ]}}" + tags: + - MacOS + - homebrew + - package diff --git a/tasks/Darwin/ripgrep.yml b/tasks/Darwin/ripgrep.yml new file mode 100644 index 0000000..218123a --- /dev/null +++ b/tasks/Darwin/ripgrep.yml @@ -0,0 +1,8 @@ +--- +- name: append ripgrep to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'ripgrep' ]}}" + tags: + - MacOS + - homebrew + - package diff --git a/tasks/Darwin/rust.yml b/tasks/Darwin/rust.yml new file mode 100644 index 0000000..b00ce16 --- /dev/null +++ b/tasks/Darwin/rust.yml @@ -0,0 +1,8 @@ +--- +- name: append rust to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'rust' ]}}" + tags: + - MacOS + - homebrew + - package diff --git a/tasks/Darwin/stow.yml b/tasks/Darwin/stow.yml new file mode 100644 index 0000000..3e9cda3 --- /dev/null +++ b/tasks/Darwin/stow.yml @@ -0,0 +1,8 @@ +--- +- name: append stow to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'stow' ]}}" + tags: + - MacOS + - homebrew + - package diff --git a/tasks/Darwin/terminal.yml b/tasks/Darwin/terminal.yml new file mode 100644 index 0000000..5972493 --- /dev/null +++ b/tasks/Darwin/terminal.yml @@ -0,0 +1,11 @@ +--- +# default on Linux is alacritty +# edit config/users.yml:users::terminal:os_name:package name +# ie: config/users.yml:users:[name: stobbsm]:terminal:Fedora:konsole +- name: install and configure system terminal emulator + loop: "{{ users }}" + ansible.builtin.include_tasks: + file: "packages/{{ ansible_os_family }}/{{ item.terminal[ansible_distribution] | default('alacritty') }}.yml" + tags: + - package + - Darwin diff --git a/tasks/Darwin/terraform.yml b/tasks/Darwin/terraform.yml new file mode 100644 index 0000000..efd94fc --- /dev/null +++ b/tasks/Darwin/terraform.yml @@ -0,0 +1,4 @@ +--- +- name: append terraform to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'terraform' ]}}" diff --git a/tasks/Darwin/tidy.yml b/tasks/Darwin/tidy.yml new file mode 100644 index 0000000..aed7359 --- /dev/null +++ b/tasks/Darwin/tidy.yml @@ -0,0 +1,8 @@ +--- +- name: append tidy-html5 to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'tidy-html5' ]}}" + tags: + - MacOS + - homebrew + - package diff --git a/tasks/Darwin/tmux.yml b/tasks/Darwin/tmux.yml new file mode 100644 index 0000000..ccc766c --- /dev/null +++ b/tasks/Darwin/tmux.yml @@ -0,0 +1,8 @@ +--- +- name: append tmux to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'tmux' ]}}" + tags: + - MacOS + - homebrew + - package diff --git a/tasks/Darwin/vivaldi.yml b/tasks/Darwin/vivaldi.yml new file mode 100644 index 0000000..834142b --- /dev/null +++ b/tasks/Darwin/vivaldi.yml @@ -0,0 +1,4 @@ +--- +- name: append vivaldi to caskpkgs + set_fact: + caskpkgs: "{{ (caskpkgs | default([])) + [ 'vivaldi' ] }}" diff --git a/tasks/Darwin/zoxide.yml b/tasks/Darwin/zoxide.yml new file mode 100644 index 0000000..df5ee0b --- /dev/null +++ b/tasks/Darwin/zoxide.yml @@ -0,0 +1,8 @@ +--- +- name: append zoxide to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'zoxide' ]}}" + tags: + - MacOS + - homebrew + - package diff --git a/tasks/Darwin/zsh.yml b/tasks/Darwin/zsh.yml new file mode 100644 index 0000000..12196f0 --- /dev/null +++ b/tasks/Darwin/zsh.yml @@ -0,0 +1,8 @@ +--- +- name: append zsh to brewpkgs + set_fact: + brewpkgs: "{{ (brewpkgs | default([])) + [ 'zsh' ]}}" + tags: + - MacOS + - homebrew + - package diff --git a/tasks/Darwin_do_install.yml b/tasks/Darwin_do_install.yml new file mode 100644 index 0000000..95a1ec8 --- /dev/null +++ b/tasks/Darwin_do_install.yml @@ -0,0 +1,45 @@ +--- +- name: full homebrew upgrade if enabled + community.general.homebrew: + update_homebrew: true + upgrade_all: true + when: full_upgrade + tags: + - upgrade + - packages + - Darwin + - macOS + - homebrew + +- name: full cask upgrade if enabled + community.general.homebrew_cask: + upgrade_all: true + when: full_upgrade + tags: + - upgrade + - packages + - Darwin + - macOS + - homebrew + - homebrew_cask + +- name: install homebrew pkgs + community.general.homebrew: + name: "{{ syspkgs | unique }}" + state: "{{ install_state }}" + tags: + - packages + - Darwin + - macOS + - homebrew + +- name: install homebrew casks + community.general.homebrew_cask: + name: "{{ (caskpkgs | default([])) | unique }}" + state: "{{ install_state }}" + tags: + - packages + - Darwin + - macOS + - homebrew + - homebrew_cask diff --git a/tasks/Debian/alacritty.yml b/tasks/Debian/alacritty.yml new file mode 100644 index 0000000..777b26f --- /dev/null +++ b/tasks/Debian/alacritty.yml @@ -0,0 +1,26 @@ +--- +- name: install rust and cargo + ansible.builtin.include_tasks: + file: "packages/{{ ansible_os_family }}/rust.yml" + tags: + - rust + - dependency + +- name: install alacritty dependencies for Debian based distributions + become: true + ansible.builtin.apt: + name: + - cmake + - pkg-config + - libfreetype6-dev + - libfontconfig1-dev + - libxcb-xfixes0-dev + - libxkbcommon-dev + - python3 + state: present + tags: + - dependency + - Debian + +- include_tasks: + file: packages/Linux/alacritty.yml diff --git a/tasks/Debian/ansible.yml b/tasks/Debian/ansible.yml new file mode 100644 index 0000000..405940f --- /dev/null +++ b/tasks/Debian/ansible.yml @@ -0,0 +1,14 @@ +--- +- name: install ansible for Debian based distros + become: true + ansible.builtin.apt: + name: ansible + state: latest + register: ansible_changed + tags: + - Debian + - linux + - package +- name: stop playbook if ansible updated + when: ansible_changed.changed + meta: end_play diff --git a/tasks/Debian/btop.yml b/tasks/Debian/btop.yml new file mode 100644 index 0000000..905e1bc --- /dev/null +++ b/tasks/Debian/btop.yml @@ -0,0 +1,11 @@ +--- +- name: install btop for Debian distros + become: true + when: ansible_os_family == "Debian" + ansible.builtin.apt: + name: btop + state: latest + tags: + - Debian + - linux + - package diff --git a/tasks/Debian/cmake.yml b/tasks/Debian/cmake.yml new file mode 100644 index 0000000..62ab4bc --- /dev/null +++ b/tasks/Debian/cmake.yml @@ -0,0 +1,10 @@ +--- +- name: Install cmake for Debian based distros + become: true + ansible.builtin.apt: + name: cmake + state: latest + tags: + - Debian + - linux + - package diff --git a/tasks/Debian/editorconfig.yml b/tasks/Debian/editorconfig.yml new file mode 100644 index 0000000..515c9be --- /dev/null +++ b/tasks/Debian/editorconfig.yml @@ -0,0 +1,11 @@ +--- +- name: Install editorconfig Debian based distros + become: true + ansible.builtin.apt: + name: editorconfig + state: latest + tags: + - Debian + - linux + - package + diff --git a/tasks/Debian/firefox.yml b/tasks/Debian/firefox.yml new file mode 100644 index 0000000..990d88a --- /dev/null +++ b/tasks/Debian/firefox.yml @@ -0,0 +1,9 @@ +--- +- name: install firefox on Linux distros + ansible.builtin.apt: + name: firefox + state: latest + tags: + - packages + - Debian + - web diff --git a/tasks/Debian/fzf.yml b/tasks/Debian/fzf.yml new file mode 100644 index 0000000..8693622 --- /dev/null +++ b/tasks/Debian/fzf.yml @@ -0,0 +1,10 @@ +--- +- name: Install fzf for Debian based distros + become: true + ansible.builtin.apt: + name: fzf + state: latest + tags: + - Debian + - linux + - package diff --git a/tasks/Debian/git.yml b/tasks/Debian/git.yml new file mode 100644 index 0000000..20f0a9c --- /dev/null +++ b/tasks/Debian/git.yml @@ -0,0 +1,15 @@ +--- +- name: Install git and git extras for Debian based distros + become: true + ansible.builtin.apt: + name: + - git + - git-delta + - git-email + - git-lfs + + state: latest + tags: + - Debian + - linux + - package diff --git a/tasks/Debian/go.yml b/tasks/Debian/go.yml new file mode 100644 index 0000000..9363a7a --- /dev/null +++ b/tasks/Debian/go.yml @@ -0,0 +1,4 @@ +--- +- name: install go for linux + ansible.builtin.include_tasks: + file: "packages/Linux/go.yml" diff --git a/tasks/Debian/hugo.yml b/tasks/Debian/hugo.yml new file mode 100644 index 0000000..6fe005e --- /dev/null +++ b/tasks/Debian/hugo.yml @@ -0,0 +1,11 @@ +--- +- name: Install hugo for Debian based distros + become: true + ansible.builtin.apt: + name: hugo + state: latest + tags: + - Debian + - linux + - package + diff --git a/tasks/Debian/jq.yml b/tasks/Debian/jq.yml new file mode 100644 index 0000000..4ec0070 --- /dev/null +++ b/tasks/Debian/jq.yml @@ -0,0 +1,11 @@ +--- +- name: Install jq for Debian based distros + become: true + ansible.builtin.apt: + name: jq + state: latest + tags: + - Debian + - linux + - package + diff --git a/tasks/Debian/neovide.yml b/tasks/Debian/neovide.yml new file mode 100644 index 0000000..cb91219 --- /dev/null +++ b/tasks/Debian/neovide.yml @@ -0,0 +1,29 @@ +--- +- name: install debian dependencies + when: ansible_architecture != "aarch64" + become: true + ansible.builtin.apt: + name: + - curl + - gnupg + - ca-certificates + - git + - gcc-multilib + - g++-multilib + - cmake + - libssl-dev + - pkg-config + - libfreetyp6-dev + - libasound2-dev + - libexpat1-dev + - libxcb-composite0-dev + - libbz2-dev + - libsndio-dev + - freeglut3-dev + - libxmu-dev + - libxi-dev + - libfontconfig1-dev + - libxcursor-dev + +- ansible.builtin.include_tasks: + file: packages/Linux/neovide.yml diff --git a/tasks/Debian/neovim.yml b/tasks/Debian/neovim.yml new file mode 100644 index 0000000..2753c85 --- /dev/null +++ b/tasks/Debian/neovim.yml @@ -0,0 +1,12 @@ +--- +- name: Install neovim for Debian based distros + become: true + ansible.builtin.apt: + name: + - neovim + - python3-neovim + state: latest + tags: + - Debian + - linux + - package diff --git a/tasks/Debian/nerdfonts.yml b/tasks/Debian/nerdfonts.yml new file mode 100644 index 0000000..75eb9ac --- /dev/null +++ b/tasks/Debian/nerdfonts.yml @@ -0,0 +1,3 @@ +--- +- ansible.builtin.include_tasks: + file: packages/Linux/nerdfonts.yml diff --git a/tasks/Debian/nodejs.yml b/tasks/Debian/nodejs.yml new file mode 100644 index 0000000..9d1a7b1 --- /dev/null +++ b/tasks/Debian/nodejs.yml @@ -0,0 +1,13 @@ +--- +- name: Install nodejs and npm for Debian based distros + become: true + ansible.builtin.apt: + name: + - nodejs + - npm + state: latest + tags: + - Debian + - linux + - package + diff --git a/tasks/Debian/nushell.yml b/tasks/Debian/nushell.yml new file mode 100644 index 0000000..bed09de --- /dev/null +++ b/tasks/Debian/nushell.yml @@ -0,0 +1,11 @@ +--- +- name: install Debian dependencies + become: true + ansible.builtin.apt: + name: + - pkg-config + - libssl-dev + - build-essential + +- ansible.builtin.include_tasks: + file: packages/Linux/nushell.yml diff --git a/tasks/Debian/pandoc.yml b/tasks/Debian/pandoc.yml new file mode 100644 index 0000000..a269abc --- /dev/null +++ b/tasks/Debian/pandoc.yml @@ -0,0 +1,11 @@ +--- +- name: Install pandoc for Debian based distros + become: true + ansible.builtin.apt: + name: pandoc + state: latest + tags: + - Debian + - linux + - package + diff --git a/tasks/Debian/pipx.yml b/tasks/Debian/pipx.yml new file mode 100644 index 0000000..ca912f1 --- /dev/null +++ b/tasks/Debian/pipx.yml @@ -0,0 +1,11 @@ +--- +- name: Install pipx for Debian based distros + become: true + ansible.builtin.apt: + name: pipx + state: latest + tags: + - Debian + - linux + - package + diff --git a/tasks/Debian/python3-pip.yml b/tasks/Debian/python3-pip.yml new file mode 100644 index 0000000..4052904 --- /dev/null +++ b/tasks/Debian/python3-pip.yml @@ -0,0 +1,11 @@ +--- +- name: Install pip for Debian based distros + become: true + ansible.builtin.apt: + name: python3-pip + state: latest + tags: + - Debian + - linux + - package + diff --git a/tasks/Debian/ripgrep.yml b/tasks/Debian/ripgrep.yml new file mode 100644 index 0000000..53f8e7e --- /dev/null +++ b/tasks/Debian/ripgrep.yml @@ -0,0 +1,11 @@ +--- +- name: Install ripgrep for Debian based distros + become: true + ansible.builtin.apt: + name: ripgrep + state: latest + tags: + - Debian + - linux + - package + diff --git a/tasks/Debian/rust.yml b/tasks/Debian/rust.yml new file mode 100644 index 0000000..cf41afa --- /dev/null +++ b/tasks/Debian/rust.yml @@ -0,0 +1,13 @@ +--- +- name: Install rust and cargo for Debian based distros + become: true + ansible.builtin.apt: + name: + - rustc + - cargo + state: latest + tags: + - Debian + - linux + - package + diff --git a/tasks/Debian/stow.yml b/tasks/Debian/stow.yml new file mode 100644 index 0000000..de71c7f --- /dev/null +++ b/tasks/Debian/stow.yml @@ -0,0 +1,11 @@ +--- +- name: Install stow for Debian based distros + become: true + ansible.builtin.apt: + name: stow + state: latest + tags: + - Debian + - linux + - package + diff --git a/tasks/Debian/terminal.yml b/tasks/Debian/terminal.yml new file mode 100644 index 0000000..60c70a8 --- /dev/null +++ b/tasks/Debian/terminal.yml @@ -0,0 +1,11 @@ +--- +# default on Linux is alacritty +# edit config/users.yml:users::terminal:os_name:package name +# ie: config/users.yml:users:[name: stobbsm]:terminal:Fedora:konsole +- name: install and configure system terminal emulator + loop: "{{ users }}" + ansible.builtin.include_tasks: + file: "packages/{{ ansible_os_family }}/{{ item.terminal[ansible_distribution] | default('alacritty') }}.yml" + tags: + - package + - Debian diff --git a/tasks/Debian/tidy.yml b/tasks/Debian/tidy.yml new file mode 100644 index 0000000..c2df76c --- /dev/null +++ b/tasks/Debian/tidy.yml @@ -0,0 +1,11 @@ +--- +- name: Install tidy for Debian based distros + become: true + ansible.builtin.apt: + name: tidy + state: latest + tags: + - Debian + - linux + - package + diff --git a/tasks/Debian/tmux.yml b/tasks/Debian/tmux.yml new file mode 100644 index 0000000..3181e0a --- /dev/null +++ b/tasks/Debian/tmux.yml @@ -0,0 +1,11 @@ +--- +- name: Install tmux for Debian based distros + become: true + ansible.builtin.apt: + name: tmux + state: latest + tags: + - Debian + - linux + - package + diff --git a/tasks/Debian/vivaldi.yml b/tasks/Debian/vivaldi.yml new file mode 100644 index 0000000..174dbc2 --- /dev/null +++ b/tasks/Debian/vivaldi.yml @@ -0,0 +1,6 @@ +--- +- name: install vivaldi debian package + become: true + ansible.builtin.apt: + deb: https://downloads.vivaldi.com/stable/vivaldi-stable_6.7.3329.41-1_amd64.deb + state: present diff --git a/tasks/Debian/zoxide.yml b/tasks/Debian/zoxide.yml new file mode 100644 index 0000000..31650be --- /dev/null +++ b/tasks/Debian/zoxide.yml @@ -0,0 +1,11 @@ +--- +- name: Install zoxide for Debian based distros + become: true + ansible.builtin.apt: + name: zoxide + state: latest + tags: + - Debian + - linux + - package + diff --git a/tasks/Debian/zsh.yml b/tasks/Debian/zsh.yml new file mode 100644 index 0000000..80fc8eb --- /dev/null +++ b/tasks/Debian/zsh.yml @@ -0,0 +1,11 @@ +--- +- name: Install zsh for Debian based distros + become: true + ansible.builtin.apt: + name: zsh + state: latest + tags: + - Debian + - linux + - package + diff --git a/tasks/Linux/alacritty.yml b/tasks/Linux/alacritty.yml new file mode 100644 index 0000000..13042ce --- /dev/null +++ b/tasks/Linux/alacritty.yml @@ -0,0 +1,13 @@ +--- +- name: build and install alacritty + become: true + ansible.builtin.command: + cmd: + - cargo + - install + - --root + - /usr/local + - --git + - https://github.com/alacritty/alacritty.git + - --tag + - v0.13.2 diff --git a/tasks/Linux/files/neovide/icon.png b/tasks/Linux/files/neovide/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3f6da54082da44ac5cb945c2ba421dc83ccb02f2 GIT binary patch literal 19446 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 + become: true + when: + - ansible_distribution == 'Fedora' + - ansible_distribution_major_version|int >= 41 + ansible.builtin.command: + creates: /etc/yum.repos.d/hashicorp.repo + cmd: dnf config-manager addrepo --from-repofile=https://rpm.releases.hashicorp.com/fedora/hashicorp.repo + +- name: enable hashicorp repo for fedora <41 + become: true + when: + - ansible_distribution == 'Fedora' + - ansible_distribution_major_version|int < 41 + ansible.builtin.command: + creates: /etc/yum.repos.d/hashicorp.repo + cmd: dnf config-manager --add-repo https://rpm.releases.hashicorp.com/fedora/hashicorp.repo + +- name: enable hashicorp repo for RHEL like distribution + become: true + when: + - ansible_distribution != 'Fedora' + ansible.builtin.command: + creates: /etc/yum.repos.d/hashicorp.repo + cmd: dnf config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo diff --git a/tasks/RedHat/hugo.yml b/tasks/RedHat/hugo.yml new file mode 100644 index 0000000..c36e354 --- /dev/null +++ b/tasks/RedHat/hugo.yml @@ -0,0 +1,10 @@ +--- + +- name: append to pkgs + set_fact: + syspkgs: "{{ (syspkgs | default([])) + [ 'hugo' ] }}" + tags: + - RedHat + - linux + - package + diff --git a/tasks/RedHat/jq.yml b/tasks/RedHat/jq.yml new file mode 100644 index 0000000..e7ef2e9 --- /dev/null +++ b/tasks/RedHat/jq.yml @@ -0,0 +1,10 @@ +--- + +- name: append to pkgs + set_fact: + syspkgs: "{{ (syspkgs | default([])) + [ 'jq' ] }}" + tags: + - RedHat + - linux + - package + diff --git a/tasks/RedHat/konsole.yml b/tasks/RedHat/konsole.yml new file mode 100644 index 0000000..92f5269 --- /dev/null +++ b/tasks/RedHat/konsole.yml @@ -0,0 +1,9 @@ +--- + +- name: append to pkgs + set_fact: + syspkgs: "{{ (syspkgs | default([])) + [ 'konsole' ] }}" + tags: + - RedHat + - linux + - package diff --git a/tasks/RedHat/neovide.yml b/tasks/RedHat/neovide.yml new file mode 100644 index 0000000..b4337d9 --- /dev/null +++ b/tasks/RedHat/neovide.yml @@ -0,0 +1,19 @@ +--- +- name: set neovide pkg dependencies + set_fact: + neovide_deps: + - cargo + - fontconfig-devel + - freetype-devel + - libX11-xcb + - libX11-devel + - libstdc++-static + - libstdc++-devel + - "@Development Tools" + - "@Development Libraries" + +- name: append to pkgs + when: ansible_architecture != "aarch64" + set_fact: + syspkgs: "{{ (syspkgs | default([])) + neovide_deps }}" + altpkgs: "{{ (altpkgs | default([])) + [ 'packages/Linux/neovide.yml' ] }}" diff --git a/tasks/RedHat/neovim.yml b/tasks/RedHat/neovim.yml new file mode 100644 index 0000000..ae932dd --- /dev/null +++ b/tasks/RedHat/neovim.yml @@ -0,0 +1,22 @@ +--- +- name: append to pkgs + when: ansible_distribution == "Fedora" + set_fact: + syspkgs: "{{ (syspkgs | default([])) + [ 'neovim', 'python3-neovim' ] }}" + tags: + - RedHat + - linux + - package + +- name: Install neovim appimage + when: ansible_distribution != "Fedora" + become: true + ansible.builtin.get_url: + url: https://github.com/neovim/neovim/releases/download/v0.10.0/nvim.appimage + dest: /usr/local/bin/nvim + checksum: sha256:6a021e9465fe3d3375e28c3e94c1c2c4f7d1a5a67e4a78cf52d18d77b1471390 + tags: + - RedHat + - linux + - package + diff --git a/tasks/RedHat/nerdfonts.yml b/tasks/RedHat/nerdfonts.yml new file mode 100644 index 0000000..2d60161 --- /dev/null +++ b/tasks/RedHat/nerdfonts.yml @@ -0,0 +1,4 @@ +--- +- name: append to pkgs + set_fact: + altpkgs: "{{ (altpkgs | default([])) + [ 'packages/Linux/nerdfonts.yml' ] }}" diff --git a/tasks/RedHat/nodejs.yml b/tasks/RedHat/nodejs.yml new file mode 100644 index 0000000..da4b6d9 --- /dev/null +++ b/tasks/RedHat/nodejs.yml @@ -0,0 +1,10 @@ +--- + +- name: append to pkgs + set_fact: + syspkgs: "{{ (syspkgs | default([])) + [ 'nodejs', 'npm' ] }}" + tags: + - RedHat + - linux + - package + diff --git a/tasks/RedHat/nomad.yml b/tasks/RedHat/nomad.yml new file mode 100644 index 0000000..750fa19 --- /dev/null +++ b/tasks/RedHat/nomad.yml @@ -0,0 +1,9 @@ +--- +- name: ensure hashicorp repo is active + ansible.builtin.include_tasks: + file: packages/{{ ansible_os_family }}/hashicorp_repo.yml + +- name: append to pkgs + set_fact: + syspkgs: "{{ (syspkgs | default([])) + [ 'nomad' ] }}" + diff --git a/tasks/RedHat/nushell.yml b/tasks/RedHat/nushell.yml new file mode 100644 index 0000000..927d084 --- /dev/null +++ b/tasks/RedHat/nushell.yml @@ -0,0 +1,16 @@ +--- +- name: install RedHat dependencies + set_fact: + nushell_pkgdeps: + - cargo + - libxcb + - openssl-devel + - libX11-devel + nushell_altdeps: + - packages/Linux/nushell.yml + - packages/{{ ansible_os_family }}/carapace.yml + +- name: append to pkgs + set_fact: + syspkgs: "{{ (syspkgs | default([])) + nushell_pkgdeps }}" + altpkgs: "{{ (altpkgs | default([])) + nushell_altdeps }}" diff --git a/tasks/RedHat/packer.yml b/tasks/RedHat/packer.yml new file mode 100644 index 0000000..70f3fa4 --- /dev/null +++ b/tasks/RedHat/packer.yml @@ -0,0 +1,8 @@ +--- +- name: ensure hashicorp repo is active + ansible.builtin.include_tasks: + file: packages/{{ ansible_os_family }}/hashicorp_repo.yml + +- name: append to pkgs + set_fact: + syspkgs: "{{ (syspkgs | default([])) + [ 'packer' ] }}" diff --git a/tasks/RedHat/pandoc.yml b/tasks/RedHat/pandoc.yml new file mode 100644 index 0000000..5fadb3b --- /dev/null +++ b/tasks/RedHat/pandoc.yml @@ -0,0 +1,10 @@ +--- + +- name: append to pkgs + set_fact: + syspkgs: "{{ (syspkgs | default([])) + [ 'pandoc' ] }}" + tags: + - RedHat + - linux + - package + diff --git a/tasks/RedHat/pipx.yml b/tasks/RedHat/pipx.yml new file mode 100644 index 0000000..ff6ef40 --- /dev/null +++ b/tasks/RedHat/pipx.yml @@ -0,0 +1,9 @@ +--- +- name: append to pkgs + set_fact: + syspkgs: "{{ (syspkgs | default([])) + [ 'pipx' ] }}" + tags: + - RedHat + - linux + - package + diff --git a/tasks/RedHat/python3-pip.yml b/tasks/RedHat/python3-pip.yml new file mode 100644 index 0000000..5b0664f --- /dev/null +++ b/tasks/RedHat/python3-pip.yml @@ -0,0 +1,10 @@ +--- + +- name: append to pkgs + set_fact: + syspkgs: "{{ (syspkgs | default([])) + [ 'python3-pip' ] }}" + tags: + - RedHat + - linux + - package + diff --git a/tasks/RedHat/ripgrep.yml b/tasks/RedHat/ripgrep.yml new file mode 100644 index 0000000..ecd6c26 --- /dev/null +++ b/tasks/RedHat/ripgrep.yml @@ -0,0 +1,10 @@ +--- + +- name: append to pkgs + set_fact: + syspkgs: "{{ (syspkgs | default([])) + [ 'ripgrep' ] }}" + tags: + - RedHat + - linux + - package + diff --git a/tasks/RedHat/rust.yml b/tasks/RedHat/rust.yml new file mode 100644 index 0000000..df1cc4f --- /dev/null +++ b/tasks/RedHat/rust.yml @@ -0,0 +1,14 @@ +--- +- name: set rust_pkgs + set_fact: + rust_pkgs: + - rustc + - cargo +- name: append to pkgs + set_fact: + syspkgs: "{{ (syspkgs | default([])) + rust_pkgs }}" + tags: + - RedHat + - linux + - package + diff --git a/tasks/RedHat/stow.yml b/tasks/RedHat/stow.yml new file mode 100644 index 0000000..f731135 --- /dev/null +++ b/tasks/RedHat/stow.yml @@ -0,0 +1,10 @@ +--- + +- name: append to pkgs + set_fact: + syspkgs: "{{ (syspkgs | default([])) + [ 'stow' ] }}" + tags: + - RedHat + - linux + - package + diff --git a/tasks/RedHat/terminal.yml b/tasks/RedHat/terminal.yml new file mode 100644 index 0000000..a24c243 --- /dev/null +++ b/tasks/RedHat/terminal.yml @@ -0,0 +1,12 @@ +--- + +# default on Linux is alacritty +# edit config/users.yml:users::terminal:os_name:package name +# ie: config/users.yml:users:[name: stobbsm]:terminal:Fedora:konsole +- name: install and configure system terminal emulator + loop: "{{ users }}" + ansible.builtin.include_tasks: + file: "packages/{{ ansible_os_family }}/{{ item.terminal[ansible_distribution] | default('alacritty') }}.yml" + tags: + - package + - RedHat diff --git a/tasks/RedHat/terra_repo.yml b/tasks/RedHat/terra_repo.yml new file mode 100644 index 0000000..8c5ef62 --- /dev/null +++ b/tasks/RedHat/terra_repo.yml @@ -0,0 +1,22 @@ +--- +- name: enable terra repo for fedora >=41 + become: true + when: + - ansible_distribution == 'Fedora' + - ansible_distribution_major_version|int >= 41 + ansible.builtin.command: + creates: /etc/yum.repos.d/terra.repo + cmd: dnf install -y --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' terra-release + +- name: enable terra repo for fedora <41 + when: + - ansible_distribution == 'Fedora' + - ansible_distribution_major_version|int < 41 + block: + - ansible.builtin.command: + creates: /etc/yum.repos.d/terra.repo + cmd: dnf config-manager --add-repo https://terra.fyralabs.com/terra.repo + become: true + - ansible.builtin.dnf: + name: terra-release + state: present diff --git a/tasks/RedHat/terraform.yml b/tasks/RedHat/terraform.yml new file mode 100644 index 0000000..7ecd657 --- /dev/null +++ b/tasks/RedHat/terraform.yml @@ -0,0 +1,8 @@ +--- +- name: ensure hashicorp repo is active + ansible.builtin.include_tasks: + file: packages/{{ ansible_os_family }}/hashicorp_repo.yml + +- name: append to pkgs + set_fact: + syspkgs: "{{ (syspkgs | default([])) + [ 'terraform' ] }}" diff --git a/tasks/RedHat/tidy.yml b/tasks/RedHat/tidy.yml new file mode 100644 index 0000000..d223079 --- /dev/null +++ b/tasks/RedHat/tidy.yml @@ -0,0 +1,10 @@ +--- + +- name: append to pkgs + set_fact: + syspkgs: "{{ (syspkgs | default([])) + [ 'tidy' ] }}" + tags: + - RedHat + - linux + - package + diff --git a/tasks/RedHat/tmux.yml b/tasks/RedHat/tmux.yml new file mode 100644 index 0000000..b574459 --- /dev/null +++ b/tasks/RedHat/tmux.yml @@ -0,0 +1,10 @@ +--- + +- name: append to pkgs + set_fact: + syspkgs: "{{ (syspkgs | default([])) + [ 'tmux' ] }}" + tags: + - RedHat + - linux + - package + diff --git a/tasks/RedHat/vault.yml b/tasks/RedHat/vault.yml new file mode 100644 index 0000000..d68eb60 --- /dev/null +++ b/tasks/RedHat/vault.yml @@ -0,0 +1,9 @@ +# install hashicorp vault for RedHat +--- +- name: ensure hashicorp repo is active + ansible.builtin.include_tasks: + file: packages/{{ ansible_os_family }}/hashicorp_repo.yml + +- name: append to pkgs + set_fact: + syspkgs: "{{ (syspkgs | default([])) + [ 'vault' ] }}" diff --git a/tasks/RedHat/vivaldi.yml b/tasks/RedHat/vivaldi.yml new file mode 100644 index 0000000..3dc071f --- /dev/null +++ b/tasks/RedHat/vivaldi.yml @@ -0,0 +1,14 @@ +--- +- name: Configure RPM Repository + become: true + ansible.builtin.yum_repository: + name: vivaldi + baseurl: "https://repo.vivaldi.com/archive/rpm/{{ ansible_architecture }}" + description: vivaldi browser + gpgcheck: true + gpgkey: https://repo.vivaldi.com/archive/linux_signing_key.pub + state: present + +- name: append to pkgs + set_fact: + syspkgs: "{{ (syspkgs | default([])) + [ 'vivaldi-stable' ] }}" diff --git a/tasks/RedHat/zfs.yml b/tasks/RedHat/zfs.yml new file mode 100644 index 0000000..8f30d1d --- /dev/null +++ b/tasks/RedHat/zfs.yml @@ -0,0 +1,65 @@ +--- +- name: set rpm_dist + ansible.builtin.command: rpm --eval "%{dist}" + register: rpm_dist + tags: + - packages + - RedHat + - config + +- name: set zfs repo facts + set_fact: + zfs_repo_base: https://zfsonlinux.org + zfs_gpg_key: https://raw.githubusercontent.com/zfsonlinux/zfsonlinux.github.com/master/zfs-release/RPM-GPG-KEY-openzfs-key2 + zfs_gpg_key_fingerprint: 7DC7 299D CF7C 7FD9 CD87 701B A599 FD5E 9DB8 4141 + +- name: el9+ specific configuration + block: + - name: set el9+ facts + set_fact: + rh_release: epel + zfs_release: 2-3 + when: + - ansible_distribution != 'Fedora' + # TODO: figure out a better way to identify EPEL based distros + # TODO: Alma, rocky, centos, rhel + tags: + - packages + - RedHat + - config + +- name: Fedora specific configuration + block: + - name: set fedora facts + set_fact: + rh_release: fedora + zfs_release: 2-6 + when: ansible_distribution == 'Fedora' + when: ansible_distribution == 'Fedora' + +- name: add openzfs gpg_key + ansible.builtin.rpm_key: + key: "{{ zfs_gpg_key }}" + fingerprint: "{{ zfs_gpg_key_fingerprint }}" + state: present + become: true + tags: + - packages + - RedHat + +- name: enable openzfs repository + ansible.builtin.dnf: + name: "{{ zfs_repo_base }}{{ rh_release }}/zfs-release-{{ zfs_release }}{{ rpm_dist.stdout }}.noarch.rpm" + state: "{{ install_state }}" + become: true + tags: + - packages + - RedHat + +- name: append to pkgs + set_fact: + syspkgs: "{{ (syspkgs | default([])) + [ 'zfs' ] }}" + become: true + tags: + - RedHat + - packages diff --git a/tasks/RedHat/zoxide.yml b/tasks/RedHat/zoxide.yml new file mode 100644 index 0000000..53dec2e --- /dev/null +++ b/tasks/RedHat/zoxide.yml @@ -0,0 +1,17 @@ +--- +- name: Enable copr repo for zoxide + become: true + when: ansible_distribution != "Fedora" + community.general.copr: + name: atim/zoxide + state: enabled + chroot: "{{ coprChroot[ansible_distribution].chroot | default(omit) }}" + +- name: append to pkgs + set_fact: + syspkgs: "{{ (syspkgs | default([])) + [ 'zoxide' ] }}" + tags: + - RedHat + - linux + - package + diff --git a/tasks/RedHat_do_install.yml b/tasks/RedHat_do_install.yml new file mode 100644 index 0000000..9e23e78 --- /dev/null +++ b/tasks/RedHat_do_install.yml @@ -0,0 +1,33 @@ +--- +- name: full system upgrade if enabled + ansible.builtin.dnf: + name: "*" + state: latest + when: full_upgrade + become: true + tags: + - upgrade + - packages + - asroot + - RedHat + +- name: install packages from system package manager + ansible.builtin.dnf: + name: "{{ syspkgs | unique }}" + state: "{{ install_state }}" + when: syspkgs|length > 0 + become: true + tags: + - packages + - asroot + - os + +- name: install packages from outside system + ansible.builtin.include_tasks: + file: "{{ altpkg }}" + loop: "{{ altpkgs }}" + loop_control: + loop_var: altpkg + tags: + - packages + - altinstall diff --git a/tasks/main.yml b/tasks/main.yml index c57cca9..c3047c9 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,4 +1,16 @@ --- -- name: set list of packages to install - set_fact: - packages: "{{ (packages | default([])) + (common_packages | default([])) }}" +- name: generate package manager installation list + ansible.builtin.include_tasks: + file: "{{ ansible_os_family }}/{{ pkg }}.yml" + loop: "{{ packages }}" + loop_control: + loop_var: pkg + tags: + - config + - packages + +- name: install system package list + ansible.builtin.include_tasks: + file: "{{ ansible_os_family }}_do_install.yml" + tags: + - packages diff --git a/vars/main.yml b/vars/main.yml index e746906..851d821 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -1,3 +1,7 @@ # variables used in ansible_role_package --- packages: [] +syspkgs: [] +altpkgs: [] +install_state: present +full_upgrade: false