From 17ebacd5da4ff55da2676a1bc5f73391990c2b16 Mon Sep 17 00:00:00 2001 From: Jeffrey Serio <23226432+hyperreal64@users.noreply.github.com> Date: Thu, 1 Aug 2024 01:06:57 -0500 Subject: [PATCH] Clean up --- debian-homelab-setup.yml | 159 --------------- debian-update.yml | 24 +++ debian-vm-setup.yml | 186 ------------------ debian-vps-setup.yml | 150 -------------- files/etc/apt/apt.conf.d/20auto-upgrades | 2 - .../etc/apt/apt.conf.d/50unattended-upgrades | 164 --------------- inventory.yml | 36 +--- 7 files changed, 31 insertions(+), 690 deletions(-) delete mode 100644 debian-homelab-setup.yml create mode 100644 debian-update.yml delete mode 100644 debian-vm-setup.yml delete mode 100644 debian-vps-setup.yml delete mode 100644 files/etc/apt/apt.conf.d/20auto-upgrades delete mode 100644 files/etc/apt/apt.conf.d/50unattended-upgrades diff --git a/debian-homelab-setup.yml b/debian-homelab-setup.yml deleted file mode 100644 index 3b71eae..0000000 --- a/debian-homelab-setup.yml +++ /dev/null @@ -1,159 +0,0 @@ ---- -- name: Setup homelab basics for Debian/Ubuntu systems - hosts: homelab - tasks: - - name: Update cache and all packages - register: updatesys - ansible.builtin.apt: - upgrade: dist - update_cache: true - become: true - - - name: Display the last line of the previous task to check the stats - ansible.builtin.debug: - msg: "{{updatesys.stdout_lines|last}}" - - - name: Install basic packages - ansible.builtin.apt: - update_cache: true - name: - - apt-file - - apt-listchanges - - apt-utils - - atop - - autoconf - - automake - - bat - - build-essential - - byobu - - cmake - - curl - - firewalld - - git - - htop - - jc - - jq - - less - - man-db - - manpages - - nfs-common - - pipx - - python3-dev - - python3-pip - - rclone - - rsync - - unattended-upgrades - - vim - - wget - - zsh - state: present - become: true - - - name: Ensure systemd-logind is unmasked - ansible.builtin.systemd_service: - name: systemd-logind - enabled: true - masked: no - become: true - - - name: Ensure systemd-networkd is enabled - ansible.builtin.systemd_service: - name: systemd-networkd - enabled: true - become: true - - - name: Ensure NetworkManager is disabled - ansible.builtin.systemd_service: - name: NetworkManager - enabled: false - state: stopped - become: true - - - name: Ensure man-db.timer is enabled - ansible.builtin.systemd_service: - name: man-db.timer - enabled: true - become: true - - - name: Disable apt downloading translations - ansible.builtin.lineinfile: - path: /etc/apt/apt.conf.d/99translations - create: true - line: 'Acquire::Languages "none";' - owner: root - group: root - mode: "0644" - become: true - - - name: Copy 20auto-upgrades - ansible.builtin.copy: - src: etc/apt/apt.conf.d/20auto-upgrades - dest: /etc/apt/apt.conf.d/20auto-upgrades - owner: root - group: root - mode: "0644" - become: true - - - name: Copy 50unattended-upgrades - ansible.builtin.copy: - src: etc/apt/apt.conf.d/50unattended-upgrades - dest: /etc/apt/apt.conf.d/50unattended-upgrades - owner: root - group: root - mode: "0644" - become: true - - - name: Ensure unattended-upgrades is enabled - ansible.builtin.systemd_service: - name: unattended-upgrades - enabled: true - state: started - become: true - - - name: Set the shell to zsh for user - ansible.builtin.user: - name: "{{ ansible_user }}" - shell: /usr/bin/zsh - become: true - - - name: Ensure glances systemd unit is in place for user - ansible.builtin.blockinfile: - path: "{{ ansible_user_dir }}/.config/systemd/user/glances.service" - create: true - state: present - block: | - [Unit] - Description=Glances - After=network.target - - [Service] - ExecStart={{ ansible_user_dir }}/.local/bin/glances -s - Restart=always - RemainAfterExit=no - - [Install] - WantedBy=default.target - owner: "{{ ansible_user }}" - group: "{{ ansible_user }}" - mode: "0644" - - - name: Check if reboot is required - ansible.builtin.stat: - path: /var/run/reboot-required - register: reboot_required - become: true - - - name: Set is_reboot_required fact - ansible.builtin.set_fact: - is_reboot_required: "{{ True if reboot_required.stat.exists else False }}" - - - name: Reboot is needed - ansible.builtin.reboot: - reboot_timeout: 120 - when: is_reboot_required | bool - become: true - - - name: Post-reboot confirmation - ansible.builtin.debug: - msg: "{{ ansible_host }} is now back up and running" - when: is_reboot_required | bool diff --git a/debian-update.yml b/debian-update.yml new file mode 100644 index 0000000..46a32a1 --- /dev/null +++ b/debian-update.yml @@ -0,0 +1,24 @@ +--- +- hosts: all + gather_facts: true + become: true + + tasks: + - name: Perform a dist-upgrade + ansible.builtin.apt: + upgrade: dist + update_cache: true + + - name: Check if reboot is required + ansible.builtin.stat: + path: /var/run/reboot-required + get_checksum: false + register: reboot_required_file + + - name: Reboot the server (if required) + ansible.builtin.reboot: + when: reboot_required_file.stat.exists == true + + - name: Remove dependencies that are no longer required + ansible.builtin.apt: + autoremove: true diff --git a/debian-vm-setup.yml b/debian-vm-setup.yml deleted file mode 100644 index 1585ceb..0000000 --- a/debian-vm-setup.yml +++ /dev/null @@ -1,186 +0,0 @@ ---- -- name: Provision a Debian server on a virtual machine - hosts: vms - become: true - tasks: - - name: Configure APT sources - ansible.builtin.blockinfile: - path: /etc/apt/sources.list - block: | - deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware - deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware - deb http://deb.debian.org/debian-security/ bookworm-security main contrib non-free non-free-firmware - owner: root - group: root - mode: "0644" - - - name: Disable apt downloading translations - ansible.builtin.lineinfile: - path: /etc/apt/apt.conf.d/99translations - create: true - line: 'Acquire::Languages "none";' - owner: root - group: root - mode: "0644" - - - name: Update cache and all packages - register: updatesys - ansible.builtin.apt: - upgrade: dist - update_cache: true - - - name: Display the last line of the previous task to check the stats - ansible.builtin.debug: - msg: "{{updatesys.stdout_lines|last}}" - - - name: Install basic packages - ansible.builtin.apt: - update_cache: true - name: - - apt-file - - apt-listchanges - - apt-utils - - atop - - autoconf - - automake - - bat - - build-essential - - byobu - - cmake - - curl - - firewalld - - git - - htop - - jc - - jq - - less - - man-db - - manpages - - pipx - - python3-dev - - python3-pip - - rclone - - rsync - - sudo - - systemd-resolved - - unattended-upgrades - - vim - - wget - - zsh - state: present - - - name: Ensure man-db.timer is enabled - ansible.builtin.systemd_service: - name: man-db.timer - enabled: true - - - name: Copy 20auto-upgrades - ansible.builtin.copy: - src: etc/apt/apt.conf.d/20auto-upgrades - dest: /etc/apt/apt.conf.d/20auto-upgrades - owner: root - group: root - mode: "0644" - - - name: Copy 50unattended-upgrades - ansible.builtin.copy: - src: etc/apt/apt.conf.d/50unattended-upgrades - dest: /etc/apt/apt.conf.d/50unattended-upgrades - owner: root - group: root - mode: "0644" - - - name: Ensure unattended-upgrades is enabled - ansible.builtin.systemd_service: - name: unattended-upgrades - enabled: true - state: started - - - name: Ensure firewalld is enabled - ansible.builtin.systemd_service: - name: firewalld - enabled: true - state: started - - - name: Ensure sudo no password privileges for the user 'jas' - ansible.builtin.lineinfile: - path: /etc/sudoers.d/jas - create: true - state: present - line: "jas ALL=(ALL) NOPASSWD: ALL" - owner: root - group: root - mode: "0640" - validate: /usr/sbin/visudo -csf %s - - - name: Ensure the shell is set to zsh for user - ansible.builtin.user: - name: jas - shell: /usr/bin/zsh - - - name: Ensure ethernet interface is configured for systemd-networkd - ansible.builtin.blockinfile: - path: /etc/systemd/network/ens3.network - create: true - state: present - block: | - [Match] - Name=ens3 - - [Network] - DHCP=yes - owner: root - group: root - mode: "0644" - - - name: Ensure systemd-networkd is enabled - ansible.builtin.systemd_service: - name: systemd-networkd - enabled: true - - - name: Ensure systemd-resolved is enabled - ansible.builtin.systemd_service: - name: systemd-resolved - enabled: true - - - name: Ensure default network.service is disabled - ansible.builtin.systemd_service: - name: networking - enabled: false - - - name: Ensure glances systemd unit is in place for user - ansible.builtin.blockinfile: - path: /home/jas/.config/systemd/user/glances.service - create: true - state: present - block: | - [Unit] - Description=Glances - After=network.target - - [Service] - ExecStart=/home/jas/.local/bin/glances -s - Restart=always - RemainAfterExit=no - - [Install] - WantedBy=default.target - owner: jas - group: jas - mode: "0644" - - - name: Ensure empty .zshrc is in place for user - ansible.builtin.file: - path: /home/jas/.zshrc - state: touch - owner: jas - group: jas - mode: "0644" - - - name: Reboot the system - ansible.builtin.reboot: - reboot_timeout: 120 - - - name: Post-reboot confirmation - ansible.builtin.debug: - msg: "{{ ansible_host }} is now back up and running" diff --git a/debian-vps-setup.yml b/debian-vps-setup.yml deleted file mode 100644 index 820f5f7..0000000 --- a/debian-vps-setup.yml +++ /dev/null @@ -1,150 +0,0 @@ ---- -- name: Provision a Debian server on a remote VPS - hosts: remotes - become: true - tasks: - - name: Update cache and all packages - register: updatesys - ansible.builtin.apt: - upgrade: dist - update_cache: true - - - name: Display the last line of the previous task to check the stats - ansible.builtin.debug: - msg: "{{updatesys.stdout_lines|last}}" - - - name: Install basic packages - ansible.builtin.apt: - update_cache: true - name: - - apt-file - - apt-listchanges - - apt-utils - - bat - - curl - - fail2ban - - firewalld - - git - - htop - - jc - - jq - - less - - man-db - - manpages - - pipx - - python3-dev - - python3-pip - - rsync - - unattended-upgrades - - vim - - wget - state: present - - - name: Ensure man-db.timer is enabled - ansible.builtin.systemd_service: - name: man-db.timer - enabled: true - - - name: Disable apt downloading translations - ansible.builtin.lineinfile: - path: /etc/apt/apt.conf.d/99translations - create: true - line: 'Acquire::Languages "none";' - owner: root - group: root - mode: "0644" - - - name: Copy 20auto-upgrades - ansible.builtin.copy: - src: etc/apt/apt.conf.d/20auto-upgrades - dest: /etc/apt/apt.conf.d/20auto-upgrades - owner: root - group: root - mode: "0644" - - - name: Copy 50unattended-upgrades - ansible.builtin.copy: - src: etc/apt/apt.conf.d/50unattended-upgrades - dest: /etc/apt/apt.conf.d/50unattended-upgrades - owner: root - group: root - mode: "0644" - - - name: Ensure unattended-upgrades is enabled - ansible.builtin.systemd_service: - name: unattended-upgrades - enabled: true - state: started - - - name: Ensure /var/log/auth.log exists for fail2ban - ansible.builtin.file: - path: /var/log/auth.log - state: touch - owner: root - group: root - mode: "0644" - - - name: Ensure fail2ban is enabled - ansible.builtin.systemd_service: - name: fail2ban - enabled: true - state: started - - - name: Ensure firewalld is enabled - ansible.builtin.systemd_service: - name: firewalld - enabled: true - state: started - - - name: Ensure the user 'jas' exists - ansible.builtin.user: - name: jas - shell: /bin/bash - create_home: true - - - name: Ensure ~/.ssh exists for the user 'jas' - ansible.builtin.file: - path: /home/jas/.ssh - state: directory - owner: jas - group: jas - mode: "0700" - - - name: Ensure SSH authorized key exists for the user 'jas' - ansible.builtin.copy: - src: /root/.ssh/authorized_keys - remote_src: true - dest: /home/jas/.ssh/authorized_keys - owner: jas - group: jas - mode: "0600" - - - name: Ensure sudo no password privileges for the user 'jas' - ansible.builtin.lineinfile: - path: /etc/sudoers.d/jas - create: true - state: present - line: "jas ALL=(ALL) NOPASSWD: ALL" - owner: root - group: root - mode: "0640" - validate: /usr/sbin/visudo -csf %s - - - name: Check if reboot is required - ansible.builtin.stat: - path: /var/run/reboot-required - register: reboot_required - - - name: Set is_reboot_required fact - ansible.builtin.set_fact: - is_reboot_required: "{{ True if reboot_required.stat.exists else False }}" - - - name: Reboot is needed - ansible.builtin.reboot: - reboot_timeout: 120 - when: is_reboot_required | bool - - - name: Post-reboot confirmation - ansible.builtin.debug: - msg: "{{ ansible_host }} is now back up and running" - when: is_reboot_required | bool diff --git a/files/etc/apt/apt.conf.d/20auto-upgrades b/files/etc/apt/apt.conf.d/20auto-upgrades deleted file mode 100644 index 8d6d7c8..0000000 --- a/files/etc/apt/apt.conf.d/20auto-upgrades +++ /dev/null @@ -1,2 +0,0 @@ -APT::Periodic::Update-Package-Lists "1"; -APT::Periodic::Unattended-Upgrade "1"; diff --git a/files/etc/apt/apt.conf.d/50unattended-upgrades b/files/etc/apt/apt.conf.d/50unattended-upgrades deleted file mode 100644 index 80b5aca..0000000 --- a/files/etc/apt/apt.conf.d/50unattended-upgrades +++ /dev/null @@ -1,164 +0,0 @@ -// Unattended-Upgrade::Origins-Pattern controls which packages are -// upgraded. -// -// Lines below have the format "keyword=value,...". A -// package will be upgraded only if the values in its metadata match -// all the supplied keywords in a line. (In other words, omitted -// keywords are wild cards.) The keywords originate from the Release -// file, but several aliases are accepted. The accepted keywords are: -// a,archive,suite (eg, "stable") -// c,component (eg, "main", "contrib", "non-free") -// l,label (eg, "Debian", "Debian-Security") -// o,origin (eg, "Debian", "Unofficial Multimedia Packages") -// n,codename (eg, "jessie", "jessie-updates") -// site (eg, "http.debian.net") -// The available values on the system are printed by the command -// "apt-cache policy", and can be debugged by running -// "unattended-upgrades -d" and looking at the log file. -// -// Within lines unattended-upgrades allows 2 macros whose values are -// derived from /etc/debian_version: -// ${distro_id} Installed origin. -// ${distro_codename} Installed codename (eg, "buster") -Unattended-Upgrade::Origins-Pattern { - // Codename based matching: - // This will follow the migration of a release through different - // archives (e.g. from testing to stable and later oldstable). - // Software will be the latest available for the named release, - // but the Debian release itself will not be automatically upgraded. - "origin=Debian,codename=${distro_codename}-updates"; - "origin=Debian,codename=${distro_codename}-proposed-updates"; - "origin=Debian,codename=${distro_codename},label=Debian"; - "origin=Debian,codename=${distro_codename},label=Debian-Security"; - "origin=Debian,codename=${distro_codename}-security,label=Debian-Security"; - - // Archive or Suite based matching: - // Note that this will silently match a different release after - // migration to the specified archive (e.g. testing becomes the - // new stable). -// "o=Debian,a=stable"; -// "o=Debian,a=stable-updates"; -// "o=Debian,a=proposed-updates"; -// "o=Debian Backports,a=${distro_codename}-backports,l=Debian Backports"; -}; - -// Python regular expressions, matching packages to exclude from upgrading -Unattended-Upgrade::Package-Blacklist { - // The following matches all packages starting with linux- -// "linux-"; - - // Use $ to explicitely define the end of a package name. Without - // the $, "libc6" would match all of them. -// "libc6$"; -// "libc6-dev$"; -// "libc6-i686$"; - - // Special characters need escaping -// "libstdc\+\+6$"; - - // The following matches packages like xen-system-amd64, xen-utils-4.1, - // xenstore-utils and libxenstore3.0 -// "(lib)?xen(store)?"; - - // For more information about Python regular expressions, see - // https://docs.python.org/3/howto/regex.html -}; - -// This option allows you to control if on a unclean dpkg exit -// unattended-upgrades will automatically run -// dpkg --force-confold --configure -a -// The default is true, to ensure updates keep getting installed -//Unattended-Upgrade::AutoFixInterruptedDpkg "true"; - -// Split the upgrade into the smallest possible chunks so that -// they can be interrupted with SIGTERM. This makes the upgrade -// a bit slower but it has the benefit that shutdown while a upgrade -// is running is possible (with a small delay) -//Unattended-Upgrade::MinimalSteps "true"; - -// Install all updates when the machine is shutting down -// instead of doing it in the background while the machine is running. -// This will (obviously) make shutdown slower. -// Unattended-upgrades increases logind's InhibitDelayMaxSec to 30s. -// This allows more time for unattended-upgrades to shut down gracefully -// or even install a few packages in InstallOnShutdown mode, but is still a -// big step back from the 30 minutes allowed for InstallOnShutdown previously. -// Users enabling InstallOnShutdown mode are advised to increase -// InhibitDelayMaxSec even further, possibly to 30 minutes. -//Unattended-Upgrade::InstallOnShutdown "false"; - -// Send email to this address for problems or packages upgrades -// If empty or unset then no email is sent, make sure that you -// have a working mail setup on your system. A package that provides -// 'mailx' must be installed. E.g. "user@example.com" -Unattended-Upgrade::Mail "hyperreal@fedoraproject.org"; - -// Set this value to one of: -// "always", "only-on-error" or "on-change" -// If this is not set, then any legacy MailOnlyOnError (boolean) value -// is used to chose between "only-on-error" and "on-change" -Unattended-Upgrade::MailReport "on-change"; - -// Remove unused automatically installed kernel-related packages -// (kernel images, kernel headers and kernel version locked tools). -Unattended-Upgrade::Remove-Unused-Kernel-Packages "true"; - -// Do automatic removal of newly unused dependencies after the upgrade -Unattended-Upgrade::Remove-New-Unused-Dependencies "true"; - -// Do automatic removal of unused packages after the upgrade -// (equivalent to apt-get autoremove) -//Unattended-Upgrade::Remove-Unused-Dependencies "false"; - -// Automatically reboot *WITHOUT CONFIRMATION* if -// the file /var/run/reboot-required is found after the upgrade -Unattended-Upgrade::Automatic-Reboot "true"; - -// Automatically reboot even if there are users currently logged in -// when Unattended-Upgrade::Automatic-Reboot is set to true -Unattended-Upgrade::Automatic-Reboot-WithUsers "true"; - -// If automatic reboot is enabled and needed, reboot at the specific -// time instead of immediately -// Default: "now" -//Unattended-Upgrade::Automatic-Reboot-Time "02:00"; - -// Use apt bandwidth limit feature, this example limits the download -// speed to 70kb/sec -//Acquire::http::Dl-Limit "70"; - -// Enable logging to syslog. Default is False -// Unattended-Upgrade::SyslogEnable "false"; - -// Specify syslog facility. Default is daemon -// Unattended-Upgrade::SyslogFacility "daemon"; - -// Download and install upgrades only on AC power -// (i.e. skip or gracefully stop updates on battery) -// Unattended-Upgrade::OnlyOnACPower "true"; - -// Download and install upgrades only on non-metered connection -// (i.e. skip or gracefully stop updates on a metered connection) -// Unattended-Upgrade::Skip-Updates-On-Metered-Connections "true"; - -// Verbose logging -// Unattended-Upgrade::Verbose "false"; - -// Print debugging information both in unattended-upgrades and -// in unattended-upgrade-shutdown -// Unattended-Upgrade::Debug "false"; - -// Allow package downgrade if Pin-Priority exceeds 1000 -// Unattended-Upgrade::Allow-downgrade "false"; - -// When APT fails to mark a package to be upgraded or installed try adjusting -// candidates of related packages to help APT's resolver in finding a solution -// where the package can be upgraded or installed. -// This is a workaround until APT's resolver is fixed to always find a -// solution if it exists. (See Debian bug #711128.) -// The fallback is enabled by default, except on Debian's sid release because -// uninstallable packages are frequent there. -// Disabling the fallback speeds up unattended-upgrades when there are -// uninstallable packages at the expense of rarely keeping back packages which -// could be upgraded or installed. -// Unattended-Upgrade::Allow-APT-Mark-Fallback "true"; diff --git a/inventory.yml b/inventory.yml index b3b1c55..74fea37 100644 --- a/inventory.yml +++ b/inventory.yml @@ -1,37 +1,15 @@ --- homelab: hosts: - pi0: + hyperreal.coffee: ansible_user: jas - ansible_host: 10.0.0.10 - ansible_python_interpreter: /usr/bin/python3 - pi1: - ansible_user: jas - ansible_host: 10.0.0.11 - ansible_python_interpreter: /usr/bin/python3 - pi2: - ansible_user: jas - ansible_host: 10.0.0.12 - ansible_python_interpreter: /usr/bin/python3 - -vps: - hosts: - bsky: - ansible_user: root - ansible_host: bsky.hyperreal.coffee - ansible_python_interpreter: /usr/bin/python3 - nirn: - ansible_user: root - ansible_host: nirn.quest - ansible_python_interpreter: /usr/bin/python3 - hyperreal: - ansible_user: root ansible_host: hyperreal.coffee ansible_python_interpreter: /usr/bin/python3 - -vms: - hosts: - hyperreal: - ansible_user: root + aux-vm: + ansible_user: jas ansible_host: 10.0.0.26 ansible_python_interpreter: /usr/bin/python3 + box.moonshadow.dev: + ansible_user: jas + ansible_host: box.moonshadow.dev + ansible_python_interpreter: /usr/bin/python3