--- - name: "Development machine configure" gather_facts: true hosts: - desktop.local - macbook.local - laptop.local roles: - role: "locales" - role: "timezone" - role: "font" - role: "bash" - role: "man" - role: "which" - role: "jq" - role: "ag" - role: "libheif" - role: "tmuxinator" - role: "rsync" - role: "gpg" - role: "git" - role: "git-crypt" - role: "zoxide" - role: "dotfiles" - role: "password_store" - role: "wireguard" - role: "vim" - role: "mise" - role: "neomutt" - role: "go" - role: "python" - role: "nodejs" - role: "docker" - role: "podman" - role: "ansible" - role: "alacritty" - role: "btop" - role: "claude" - role: "firefox" - role: "obsidian" - role: "localsend" - role: "microsoft-teams" - role: "gnome-calendar" - role: "gnome-newsflash" - role: "gnome-planify" - role: "gnome-loupe" - role: "gnome-papers" - role: "gnome-disk-utility" - role: "prometheus-node-exporter" - role: "gpu_driver" tasks: - name: "Configure distro roles" when: ansible_distribution == role.distro tags: always ansible.builtin.include_role: name: "{{ role.name }}" apply: tags: "{{ role.tags | default([]) }}" loop: - { name: "yay", distro: "Archlinux" } - { name: "mpv", distro: "Archlinux" } - { name: "hyprland", distro: "Archlinux" } - { name: "zen-browser", distro: "Archlinux" } - { name: "chromium", distro: "Archlinux" } - { name: "steam", distro: "Archlinux" } - { name: "gnome", distro: "Ubuntu" } loop_control: loop_var: "role" - name: "Raspberry Pi configure" gather_facts: true hosts: - rpi5.local roles: - role: "locales" - role: "timezone" - role: "bash" - role: "man" - role: "jq" - role: "ag" - role: "btop" - role: "gpg" - role: "git" - role: "git-crypt" - role: "dotfiles" - role: "password_store" - role: "vim" - role: "wireguard" - role: "gateway" - role: "proxy" - role: "wg_portal" - role: "pihole" - role: "prometheus" - role: "prometheus-node-exporter" - role: "grafana" - role: "neomutt" - role: "backup" - role: "garage" - name: "Proxmox VE configure" gather_facts: true hosts: - pve.local roles: - role: "pve" - role: "pve-storage" - role: "locales" - role: "timezone" - role: "bash" - role: "man" - role: "jq" - role: "ag" - role: "btop" - role: "gpg" - role: "git" - role: "git-crypt" - role: "dotfiles" - role: "password_store" - role: "vim" - role: "prometheus-node-exporter" - role: "restic" - role: "ethtool" tasks: - name: "Provision LXC containers" tags: ["pve-lxc"] ansible.builtin.include_role: name: "pve-lxc" vars: pve_lxc_id: "{{ hostvars[service_host].pve_lxc_id }}" pve_lxc_hostname: "{{ hostvars[service_host].pve_lxc_hostname }}" pve_lxc_template: "{{ hostvars[service_host].pve_lxc_template }}" pve_lxc_disk: "{{ hostvars[service_host].pve_lxc_disk }}" pve_lxc_cores: "{{ hostvars[service_host].pve_lxc_cores }}" pve_lxc_memory: "{{ hostvars[service_host].pve_lxc_memory }}" pve_lxc_ip: "{{ hostvars[service_host].pve_lxc_ip }}" pve_lxc_gateway: "{{ hostvars[service_host].pve_lxc_gateway }}" pve_lxc_dns: "{{ hostvars[service_host].pve_lxc_dns }}" loop: "{{ groups['services'] }}" loop_control: loop_var: "service_host"