Add initial Ansible configuration and package management setup
- Create .gitignore to exclude .vscode directory
- Add ansible.cfg for Ansible configuration
- Define inventory for new machine
- Create playbook.yml for orchestrating tasks
- Set up common role with default variables, handlers, and tasks
- Implement package management tasks for installing packages from various sources
- Include appimage and flatpak package lists
This commit is contained in:
1
ansible/.gitignore
vendored
Normal file
1
ansible/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.vscode/
|
||||
138
ansible/README.md
Normal file
138
ansible/README.md
Normal file
@@ -0,0 +1,138 @@
|
||||
# Ansible Playbooks for Machine Setup
|
||||
|
||||
This repository contains Ansible playbooks and roles for setting up a new machine, including common configurations, package installations, and user management.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Requirements](#requirements)
|
||||
- [Inventory](#inventory)
|
||||
- [Playbooks](#playbooks)
|
||||
- [Roles](#roles)
|
||||
- [Common Role](#common-role)
|
||||
- [Packages Role](#packages-role)
|
||||
- [Usage Examples](#usage-examples)
|
||||
- [Sensitive Data](#sensitive-data)
|
||||
|
||||
## Requirements
|
||||
|
||||
To run these Ansible playbooks, you need:
|
||||
|
||||
* **Ansible:** Version 2.10 or higher is recommended.
|
||||
* **Python:** Python 3 on both the control machine and target hosts.
|
||||
* **SSH Access:** Password-less SSH access (or password-based with `--ask-pass`) to your target machines.
|
||||
|
||||
## Inventory
|
||||
|
||||
The `inventory` file defines the hosts and groups that Ansible will manage. A typical `inventory` file might look like this:
|
||||
|
||||
```ini
|
||||
[new_machine]
|
||||
192.168.153.117 ansible_user=your_ssh_user ansible_ssh_pass=your_ssh_password
|
||||
|
||||
[all:vars]
|
||||
ansible_python_interpreter=/usr/bin/python3
|
||||
```
|
||||
|
||||
**Note:** Replace `192.168.153.117` with your target machine's IP address or hostname, `your_ssh_user` with your SSH username, and `your_ssh_password` with the SSH password if not using SSH keys.
|
||||
|
||||
## Playbooks
|
||||
|
||||
### `playbook.yml`
|
||||
|
||||
This is the main playbook that orchestrates the setup of a new machine by applying the `common` and `packages` roles.
|
||||
|
||||
To run the playbook:
|
||||
|
||||
```bash
|
||||
ansible-playbook -i inventory playbook.yml --ask-become-pass
|
||||
```
|
||||
|
||||
To perform a dry-run (check what changes would be made without applying them):
|
||||
|
||||
```bash
|
||||
ansible-playbook -i inventory playbook.yml --check
|
||||
```
|
||||
|
||||
## Roles
|
||||
|
||||
### Common Role
|
||||
|
||||
The `common` role (`roles/common/`) sets up basic system configurations, including:
|
||||
|
||||
* Setting the hostname.
|
||||
* Configuring network interfaces (WiFi and Ethernet).
|
||||
* Managing user accounts (e.g., `will` and root password).
|
||||
* Configuring SSH daemon settings.
|
||||
|
||||
**Variables:**
|
||||
|
||||
Default variables for this role are defined in `roles/common/defaults/main.yml`. You can override these variables in your inventory, group_vars, or by passing them via the command line.
|
||||
|
||||
**Tags:**
|
||||
|
||||
Tasks in the `common` role are tagged for selective execution:
|
||||
|
||||
* `hostname`: For tasks related to hostname configuration.
|
||||
* `network`: For tasks related to network configuration (includes `wifi` and `ethernet`).
|
||||
* `wifi`: Specifically for WiFi configuration.
|
||||
* `ethernet`: Specifically for Ethernet configuration.
|
||||
* `users`: For tasks related to user and password management.
|
||||
* `sshd`: For tasks related to SSH daemon configuration.
|
||||
|
||||
Example: To only run network-related tasks:
|
||||
|
||||
```bash
|
||||
ansible-playbook -i inventory playbook.yml --tags "network" --ask-become-pass
|
||||
```
|
||||
|
||||
### Packages Role
|
||||
|
||||
The `packages` role (`roles/packages/`) handles the installation of various software packages:
|
||||
|
||||
* Ensuring `yay` (AUR helper for Arch Linux) is installed.
|
||||
* Installing packages from `pkglist.txt` (using `pacman`).
|
||||
* Installing AUR packages from `aur_pkglist.txt` (using `yay`).
|
||||
* Installing Flatpak packages from `flatpak_pkglist.txt`.
|
||||
* Downloading AppImages from `appimage_pkglist.txt`.
|
||||
|
||||
**Variables:**
|
||||
|
||||
Default variables for this role, primarily file paths for package lists, are defined in `roles/packages/defaults/main.yml`.
|
||||
|
||||
**Tags:**
|
||||
|
||||
Tasks in the `packages` role are tagged for selective execution:
|
||||
|
||||
* `yay`: For tasks related to `yay` installation.
|
||||
* `pacman`: For tasks installing packages via `pacman`.
|
||||
* `aur`: For tasks installing packages via `yay` (AUR).
|
||||
* `flatpak`: For tasks installing Flatpak packages.
|
||||
* `appimage`: For tasks downloading AppImages.
|
||||
|
||||
Example: To only install Flatpak packages:
|
||||
|
||||
```bash
|
||||
ansible-playbook -i inventory playbook.yml --tags "flatpak" --ask-become-pass
|
||||
```
|
||||
|
||||
## Sensitive Data
|
||||
|
||||
This project contains sensitive information such as passwords. It is highly recommended to use **Ansible Vault** to encrypt sensitive variables and files. For example, you can encrypt `roles/common/defaults/main.yml` or specific variables within it.
|
||||
|
||||
To encrypt a file:
|
||||
|
||||
```bash
|
||||
ansible-vault encrypt roles/common/defaults/main.yml
|
||||
```
|
||||
|
||||
To view or edit an encrypted file:
|
||||
|
||||
```bash
|
||||
ansible-vault edit roles/common/defaults/main.yml
|
||||
```
|
||||
|
||||
When running playbooks with encrypted files, you will need to provide the vault password:
|
||||
|
||||
```bash
|
||||
ansible-playbook -i inventory playbook.yml --ask-vault-pass --ask-become-pass
|
||||
```
|
||||
2
ansible/ansible.cfg
Normal file
2
ansible/ansible.cfg
Normal file
@@ -0,0 +1,2 @@
|
||||
[defaults]
|
||||
inventory = inventory
|
||||
2
ansible/inventory
Normal file
2
ansible/inventory
Normal file
@@ -0,0 +1,2 @@
|
||||
[new_machine]
|
||||
192.168.153.117 ansible_user=will
|
||||
15
ansible/playbook.yml
Normal file
15
ansible/playbook.yml
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
- hosts: new_machine
|
||||
become: yes
|
||||
vars:
|
||||
# Define playbook-level variables here
|
||||
ansible_user: ansible_user
|
||||
|
||||
pre_tasks:
|
||||
- name: Display a message before roles run
|
||||
debug:
|
||||
msg: "Starting playbook for {{ ansible_user }} on {{ inventory_hostname }}"
|
||||
|
||||
roles:
|
||||
- common
|
||||
- packages
|
||||
26
ansible/roles/common/defaults/main.yml
Normal file
26
ansible/roles/common/defaults/main.yml
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
# Default variables for the 'common' role
|
||||
|
||||
# Hostname
|
||||
common_hostname: "willlaptop"
|
||||
|
||||
# WiFi Configuration
|
||||
common_wifi_ssid: "Skips new wifi"
|
||||
common_wifi_password: "04251992#04291962#"
|
||||
common_wifi_connection_name: "theden"
|
||||
|
||||
# Ethernet Configuration
|
||||
common_ethernet_ifname: "eth0"
|
||||
common_ethernet_con_name: "Ethernet"
|
||||
common_ethernet_ipv4_address: "192.168.153.117/24"
|
||||
common_ethernet_ipv4_gateway: "192.168.153.1"
|
||||
common_ethernet_ipv4_dns: "8.8.8.8,1.1.1.1"
|
||||
|
||||
# User Configuration
|
||||
common_user_name: "will"
|
||||
common_user_password: "$6$SQB4NRF/A4OI6oSq$Oe9DwyIpNo9CUobOU67kJri4OA91/o3bUWV3SFZmOWamxidShZjLDCG29hFw3f5Ta0uPfjKtQMVdY0ToPM0e71" # This should ideally be hashed or managed by vault
|
||||
|
||||
# SSHD Configuration
|
||||
common_sshd_permit_root_login: "yes"
|
||||
common_sshd_password_authentication: "yes"
|
||||
common_sshd_permit_empty_passwords: "no"
|
||||
7
ansible/roles/common/handlers/main.yml
Normal file
7
ansible/roles/common/handlers/main.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
# Handlers for the 'common' role
|
||||
|
||||
- name: Restart sshd
|
||||
ansible.builtin.service:
|
||||
name: sshd
|
||||
state: restarted
|
||||
72
ansible/roles/common/tasks/main.yml
Normal file
72
ansible/roles/common/tasks/main.yml
Normal file
@@ -0,0 +1,72 @@
|
||||
---
|
||||
# Add common tasks here
|
||||
|
||||
- name: Set hostname to '{{ common_hostname }}'
|
||||
ansible.builtin.hostname:
|
||||
name: "{{ common_hostname }}"
|
||||
tags: [ 'common', 'hostname' ]
|
||||
|
||||
- name: Configure WiFi connection '{{ common_wifi_connection_name }}'
|
||||
become: true
|
||||
ansible.builtin.command:
|
||||
cmd: >
|
||||
nmcli dev wifi connect "{{ common_wifi_ssid }}"
|
||||
password "{{ common_wifi_password }}"
|
||||
name "{{ common_wifi_connection_name }}"
|
||||
args:
|
||||
creates: "/etc/NetworkManager/system-connections/{{ common_wifi_connection_name }}.nmconnection"
|
||||
ignore_errors: true
|
||||
tags: [ 'common', 'network', 'wifi' ]
|
||||
|
||||
- name: Configure ethernet connection '{{ common_ethernet_con_name }}' with static IP, gateway, and DNS
|
||||
become: true
|
||||
ansible.builtin.command:
|
||||
cmd: >
|
||||
nmcli con add type ethernet ifname {{ common_ethernet_ifname }} con-name "{{ common_ethernet_con_name }}" ipv4.method manual ipv4.addresses {{ common_ethernet_ipv4_address }} ipv4.gateway {{ common_ethernet_ipv4_gateway }} ipv4.dns "{{ common_ethernet_ipv4_dns }}"
|
||||
args:
|
||||
creates: "/etc/NetworkManager/system-connections/{{ common_ethernet_con_name }}.nmconnection"
|
||||
ignore_errors: true
|
||||
tags: [ 'common', 'network', 'ethernet' ]
|
||||
- name: Ensure user '{{ common_user_name }}' exists with specified password
|
||||
ansible.builtin.user:
|
||||
name: "{{ common_user_name }}"
|
||||
password: "{{ common_user_password }}"
|
||||
shell: /bin/bash
|
||||
state: present
|
||||
create_home: yes
|
||||
tags: [ 'common', 'users' ]
|
||||
- name: Ensure root password matches user '{{ common_user_name }}'
|
||||
ansible.builtin.user:
|
||||
name: root
|
||||
password: "{{ common_user_password }}"
|
||||
tags: [ 'common', 'users' ]
|
||||
- name: Configure sshd_config to allow root login with password
|
||||
become: true
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/ssh/sshd_config
|
||||
regexp: "^PermitRootLogin"
|
||||
line: "PermitRootLogin {{ common_sshd_permit_root_login }}"
|
||||
state: present
|
||||
create: yes
|
||||
notify: Restart sshd
|
||||
tags: [ 'common', 'sshd' ]
|
||||
- name: Ensure PasswordAuthentication is set to {{ common_sshd_password_authentication }} in sshd_config
|
||||
become: true
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/ssh/sshd_config
|
||||
regexp: "^PasswordAuthentication"
|
||||
line: "PasswordAuthentication {{ common_sshd_password_authentication }}"
|
||||
state: present
|
||||
create: yes
|
||||
notify: Restart sshd
|
||||
tags: [ 'common', 'sshd' ]
|
||||
- name: Ensure PermitEmptyPasswords is set to {{ common_sshd_permit_empty_passwords }} in sshd_config
|
||||
become: true
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/ssh/sshd_config
|
||||
regexp: "^PermitEmptyPasswords"
|
||||
line: "PermitEmptyPasswords {{ common_sshd_permit_empty_passwords }}"
|
||||
state: present
|
||||
create: yes
|
||||
notify: Restart sshd
|
||||
tags: [ 'common', 'sshd' ]
|
||||
7
ansible/roles/packages/defaults/main.yml
Normal file
7
ansible/roles/packages/defaults/main.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
# Default variables for the 'packages' role
|
||||
|
||||
packages_pkglist_file: "roles/packages/files/pkglist.txt"
|
||||
packages_aur_pkglist_file: "roles/packages/files/aur_pkglist.txt"
|
||||
packages_flatpak_pkglist_file: "roles/packages/files/flatpak_pkglist.txt"
|
||||
packages_appimage_pkglist_file: "roles/packages/files/appimage_pkglist.txt"
|
||||
1
ansible/roles/packages/files/appimage_pkglist.txt
Normal file
1
ansible/roles/packages/files/appimage_pkglist.txt
Normal file
@@ -0,0 +1 @@
|
||||
/home/will/Applications/Cursor-1.4.5-x86_64_9841ba6b5561254992d0620e86f167a3.AppImage
|
||||
19
ansible/roles/packages/files/aur_pkglist.txt
Normal file
19
ansible/roles/packages/files/aur_pkglist.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
1password
|
||||
appimagelauncher
|
||||
dracula-alacritty-git
|
||||
dracula-gtk-theme
|
||||
dracula-icons-theme
|
||||
grub-customizer
|
||||
gtk
|
||||
k0s-bin
|
||||
k0sctl-bin
|
||||
kubecolor
|
||||
llama-swap
|
||||
nautilus-bluetooth
|
||||
newelle
|
||||
orchis-theme-git
|
||||
pamac-all
|
||||
upass
|
||||
upscayl-bin
|
||||
vim-dracula
|
||||
yay-debug
|
||||
50
ansible/roles/packages/files/flatpak_pkglist.txt
Normal file
50
ansible/roles/packages/files/flatpak_pkglist.txt
Normal file
@@ -0,0 +1,50 @@
|
||||
app.devsuite.Ptyxis
|
||||
app.fotema.Fotema
|
||||
app.freelens.Freelens
|
||||
app.ytmdesktop.ytmdesktop
|
||||
com.belmoussaoui.Authenticator
|
||||
com.belmoussaoui.Decoder
|
||||
com.belmoussaoui.Obfuscate
|
||||
com.boxy_svg.BoxySVG
|
||||
com.discordapp.Discord
|
||||
com.github.geigi.cozy
|
||||
com.github.huluti.Curtail
|
||||
com.github.jeromerobert.pdfarranger
|
||||
com.github.johnfactotum.Foliate
|
||||
com.github.tenderowl.frog
|
||||
com.jeffser.Alpaca
|
||||
com.logseq.Logseq
|
||||
com.mattjakeman.ExtensionManager
|
||||
com.ml4w.dotfilesinstaller
|
||||
com.pojtinger.felicitas.Sessions
|
||||
com.rafaelmardojai.Blanket
|
||||
com.toolstack.Folio
|
||||
de.haeckerfelix.Fragments
|
||||
de.haeckerfelix.Shortwave
|
||||
dev.bragefuglseth.Fretboard
|
||||
es.danirod.Cartero
|
||||
io.appflowy.AppFlowy
|
||||
io.github.Ethanscharlie.albumripper
|
||||
io.github.JakubMelka.Pdf4qt
|
||||
io.github.chidiwilliams.Buzz
|
||||
io.github.dvlv.boxbuddyrs
|
||||
io.github.flattool.Ignition
|
||||
io.github.prateekmedia.appimagepool
|
||||
io.gitlab.adhami3310.Impression
|
||||
io.gitlab.gregorni.Letterpress
|
||||
io.gitlab.liferooter.TextPieces
|
||||
io.gitlab.news_flash.NewsFlash
|
||||
io.missioncenter.MissionCenter
|
||||
io.podman_desktop.PodmanDesktop
|
||||
md.obsidian.Obsidian
|
||||
net.nokyan.Resources
|
||||
org.freedesktop.Bustle
|
||||
org.gnome.DejaDup
|
||||
org.gnome.NetworkDisplays
|
||||
org.gnome.Solanum
|
||||
org.gnome.World.Iotas
|
||||
org.localsend.localsend_app
|
||||
org.nickvision.tubeconverter
|
||||
org.raspberrypi.rpi-imager
|
||||
page.kramo.Cartridges
|
||||
se.sjoerd.Graphs
|
||||
264
ansible/roles/packages/files/pkglist.txt
Normal file
264
ansible/roles/packages/files/pkglist.txt
Normal file
@@ -0,0 +1,264 @@
|
||||
7zip
|
||||
adw-gtk-theme
|
||||
aic94xx-firmware
|
||||
alacritty
|
||||
ansible
|
||||
argocd
|
||||
ast-firmware
|
||||
authenticator
|
||||
baobab
|
||||
base
|
||||
base-devel
|
||||
bind
|
||||
bluez-utils
|
||||
bridge-utils
|
||||
broadcom-wl-dkms
|
||||
btop
|
||||
btrbk
|
||||
btrfs-assistant
|
||||
btrfs-progs
|
||||
bun-bin
|
||||
cargo-zigbuild
|
||||
chaotic-keyring
|
||||
chaotic-mirrorlist
|
||||
chezmoi
|
||||
chromium
|
||||
clang
|
||||
cmake
|
||||
compsize
|
||||
cronie
|
||||
cuda
|
||||
decibels
|
||||
distrobox
|
||||
dnsmasq
|
||||
docker
|
||||
docker-buildx
|
||||
docker-compose
|
||||
dosfstools
|
||||
dracula-grub-theme-git
|
||||
efibootmgr
|
||||
epiphany
|
||||
evince
|
||||
exfatprogs
|
||||
fastfetch
|
||||
firefox
|
||||
fish
|
||||
foremost
|
||||
fuse2
|
||||
fzf
|
||||
gdm
|
||||
gemini-cli
|
||||
gftp
|
||||
ghostty
|
||||
gimp
|
||||
git
|
||||
git-lfs
|
||||
gitg
|
||||
github-cli
|
||||
glances
|
||||
gnome-backgrounds
|
||||
gnome-boxes
|
||||
gnome-browser-connector
|
||||
gnome-builder
|
||||
gnome-calculator
|
||||
gnome-calendar
|
||||
gnome-characters
|
||||
gnome-clocks
|
||||
gnome-color-manager
|
||||
gnome-connections
|
||||
gnome-console
|
||||
gnome-contacts
|
||||
gnome-control-center
|
||||
gnome-disk-utility
|
||||
gnome-font-viewer
|
||||
gnome-keyring
|
||||
gnome-keysign
|
||||
gnome-logs
|
||||
gnome-maps
|
||||
gnome-menus
|
||||
gnome-music
|
||||
gnome-remote-desktop
|
||||
gnome-session
|
||||
gnome-settings-daemon
|
||||
gnome-shell
|
||||
gnome-shell-extension-caffeine
|
||||
gnome-shell-extension-desktop-icons-ng
|
||||
gnome-shell-extensions
|
||||
gnome-software
|
||||
gnome-system-monitor
|
||||
gnome-text-editor
|
||||
gnome-themes-extra
|
||||
gnome-tour
|
||||
gnome-tweaks
|
||||
gnome-user-docs
|
||||
gnome-user-share
|
||||
gnome-weather
|
||||
go
|
||||
go-tools
|
||||
google-chrome
|
||||
gparted
|
||||
grilo-plugins
|
||||
grub
|
||||
grub-btrfs
|
||||
gtk-engine-murrine
|
||||
gvfs
|
||||
gvfs-afc
|
||||
gvfs-dnssd
|
||||
gvfs-goa
|
||||
gvfs-google
|
||||
gvfs-gphoto2
|
||||
gvfs-mtp
|
||||
gvfs-nfs
|
||||
gvfs-onedrive
|
||||
gvfs-smb
|
||||
gvfs-wsdd
|
||||
helm
|
||||
htop
|
||||
inetutils
|
||||
inkscape
|
||||
inotify-tools
|
||||
intel-media-driver
|
||||
intel-ucode
|
||||
iwd
|
||||
jq
|
||||
k9s
|
||||
krew
|
||||
kvantum-theme-orchis-git
|
||||
less
|
||||
libreoffice-still
|
||||
libva-intel-driver
|
||||
linux
|
||||
linux-firmware
|
||||
linux-firmware-qlogic
|
||||
linux-headers
|
||||
linux-zen
|
||||
linux-zen-headers
|
||||
loupe
|
||||
malcontent
|
||||
mesa-demos
|
||||
mesa-utils
|
||||
mplayer
|
||||
nano
|
||||
nautilus
|
||||
netctl
|
||||
network-manager-applet
|
||||
networkmanager
|
||||
nfs-utils
|
||||
npm
|
||||
open-iscsi
|
||||
opencl-mesa
|
||||
optipng
|
||||
orca
|
||||
perl-image-exiftool
|
||||
pnpm
|
||||
podman
|
||||
prettier
|
||||
python-pip
|
||||
python-standard-aifc
|
||||
python-standard-cgi
|
||||
python-standard-chunk
|
||||
python-uv
|
||||
qpdf
|
||||
rclone
|
||||
rdfind
|
||||
restic
|
||||
rustup
|
||||
rygel
|
||||
s3fs-fuse
|
||||
seahorse
|
||||
simple-scan
|
||||
smartmontools
|
||||
snapshot
|
||||
spotify
|
||||
starship
|
||||
sushi
|
||||
tailscale
|
||||
tecla
|
||||
tela-circle-icon-theme-all
|
||||
testdisk
|
||||
thunderbird
|
||||
timeshift
|
||||
timeshift-autosnap
|
||||
tk
|
||||
tmux
|
||||
torbrowser-launcher
|
||||
totem
|
||||
typescript
|
||||
upd72020x-fw
|
||||
vi
|
||||
vim
|
||||
vimix-cursors
|
||||
virt-manager
|
||||
virtualbox
|
||||
visual-studio-code-bin
|
||||
vlc
|
||||
vulkan-headers
|
||||
vulkan-intel
|
||||
vulkan-nouveau
|
||||
vulkan-radeon
|
||||
vulkan-swrast
|
||||
wd719x-firmware
|
||||
wget
|
||||
wireless_tools
|
||||
wl-clipboard
|
||||
xclip
|
||||
xdg-desktop-portal-gnome
|
||||
xdg-user-dirs-gtk
|
||||
xdg-utils
|
||||
xf86-video-amdgpu
|
||||
xf86-video-ati
|
||||
xf86-video-nouveau
|
||||
xf86-video-vesa
|
||||
xorg-bdftopcf
|
||||
xorg-docs
|
||||
xorg-font-util
|
||||
xorg-fonts-100dpi
|
||||
xorg-fonts-75dpi
|
||||
xorg-iceauth
|
||||
xorg-mkfontscale
|
||||
xorg-server
|
||||
xorg-server-devel
|
||||
xorg-server-xephyr
|
||||
xorg-server-xnest
|
||||
xorg-server-xvfb
|
||||
xorg-sessreg
|
||||
xorg-smproxy
|
||||
xorg-x11perf
|
||||
xorg-xbacklight
|
||||
xorg-xcmsdb
|
||||
xorg-xcursorgen
|
||||
xorg-xdpyinfo
|
||||
xorg-xdriinfo
|
||||
xorg-xev
|
||||
xorg-xgamma
|
||||
xorg-xhost
|
||||
xorg-xinit
|
||||
xorg-xinput
|
||||
xorg-xkbevd
|
||||
xorg-xkbutils
|
||||
xorg-xkill
|
||||
xorg-xlsatoms
|
||||
xorg-xlsclients
|
||||
xorg-xpr
|
||||
xorg-xrandr
|
||||
xorg-xrefresh
|
||||
xorg-xsetroot
|
||||
xorg-xvinfo
|
||||
xorg-xwd
|
||||
xorg-xwininfo
|
||||
xorg-xwud
|
||||
yay
|
||||
yelp
|
||||
yq
|
||||
yubikey-personalization-gui
|
||||
zed
|
||||
zen-browser-bin
|
||||
zenity
|
||||
zig
|
||||
zip
|
||||
zoom
|
||||
zsh
|
||||
zsh-autosuggestions
|
||||
zsh-completions
|
||||
zsh-history-substring-search
|
||||
zsh-syntax-highlighting
|
||||
74
ansible/roles/packages/tasks/main.yml
Normal file
74
ansible/roles/packages/tasks/main.yml
Normal file
@@ -0,0 +1,74 @@
|
||||
---
|
||||
- name: Ensure yay is installed
|
||||
block:
|
||||
- name: Check if yay is already installed
|
||||
command: which yay
|
||||
register: yay_check
|
||||
ignore_errors: yes
|
||||
tags: [ 'packages', 'yay' ]
|
||||
|
||||
- name: Install dependencies for building yay
|
||||
pacman:
|
||||
name:
|
||||
- git
|
||||
- base-devel
|
||||
state: present
|
||||
when: yay_check.rc != 0
|
||||
tags: [ 'packages', 'yay' ]
|
||||
|
||||
- name: Clone yay repository
|
||||
git:
|
||||
repo: https://aur.archlinux.org/yay.git
|
||||
dest: /tmp/yay
|
||||
clone: yes
|
||||
update: no
|
||||
when: yay_check.rc != 0
|
||||
tags: [ 'packages', 'yay' ]
|
||||
|
||||
- name: Build and install yay
|
||||
command: makepkg -si --noconfirm
|
||||
args:
|
||||
chdir: /tmp/yay
|
||||
when: yay_check.rc != 0
|
||||
tags: [ 'packages', 'yay' ]
|
||||
|
||||
- name: Remove yay build directory
|
||||
file:
|
||||
path: /tmp/yay
|
||||
state: absent
|
||||
when: yay_check.rc != 0
|
||||
tags: [ 'packages', 'yay' ]
|
||||
- name: Install packages from {{ packages_pkglist_file }}
|
||||
community.general.pacman:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
with_lines:
|
||||
- cat "{{ packages_pkglist_file }}"
|
||||
tags: [ 'packages', 'pacman' ]
|
||||
- name: Install AUR packages from {{ packages_aur_pkglist_file }}
|
||||
command: "yay -S --noconfirm {{ item }}"
|
||||
with_lines:
|
||||
- cat "{{ packages_aur_pkglist_file }}"
|
||||
tags: [ 'packages', 'aur' ]
|
||||
- name: Install Flatpak packages from {{ packages_flatpak_pkglist_file }}
|
||||
community.general.flatpak:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
with_lines:
|
||||
- cat "{{ packages_flatpak_pkglist_file }}"
|
||||
tags: [ 'packages', 'flatpak' ]
|
||||
- name: Ensure ~/Applications directory exists
|
||||
ansible.builtin.file:
|
||||
path: "{{ lookup('env', 'HOME') }}/Applications"
|
||||
state: directory
|
||||
mode: "0755"
|
||||
tags: [ 'packages', 'appimage' ]
|
||||
- name: Download AppImages from URLs in {{ packages_appimage_pkglist_file }} to ~/Applications
|
||||
ansible.builtin.get_url:
|
||||
url: "{{ item }}"
|
||||
dest: "{{ lookup('env', 'HOME') }}/Applications/{{ item | basename }}"
|
||||
mode: "0755"
|
||||
with_lines:
|
||||
- cat "{{ packages_appimage_pkglist_file }}"
|
||||
when: item != ""
|
||||
tags: [ 'packages', 'appimage' ]
|
||||
Reference in New Issue
Block a user