Files
jeet d2e8cc6e70 Fix issues 3,5,6,7,8,9,11,15,16: security hardening and reliability improvements
- ansible.cfg: enable host_key_checking (closes #1)
- update_upgrade.yml: fix reboot crash on non-Debian hosts, exclude AnsibleHost from targets (closes #2, #7)
- deploy.yml: replace silent ignore_errors with real container health assertion (closes #3)
- redeploy.yml: same assertion fix + restic --overwrite always + RESTIC_RESTORE_PATH variable (closes #3, #4, #5)
- disaster.yml: same fixes as redeploy.yml (closes #3, #4, #5)
- docker_update_containers.yml: create missing playbook (closes #6)
- fresh_install.yml: add safety guard to abort if containers already running (closes #8)
- docker_status.yml: add become: true (closes #9)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22 14:14:14 -04:00

87 lines
2.2 KiB
YAML

---
- name: Install various utilities on Debian/Ubuntu and Red Hat systems
hosts: Docker
become: true
gather_facts: true
tasks:
- name: Check if Docker containers are already running (safety guard)
ansible.builtin.shell: docker compose ps -q 2>/dev/null || true
args:
chdir: ~/docker
register: running_containers
changed_when: false
failed_when: false
- name: Abort if containers are already running on this host
ansible.builtin.fail:
msg: >
Docker containers are already running on {{ inventory_hostname }}.
Use redeploy.yml to restore from backup or deploy.yml to redeploy config.
Only run fresh_install.yml on hosts with no active containers.
when: running_containers.stdout != ""
- name: Update apt cache (Debian/Ubuntu)
apt:
update_cache: yes
cache_valid_time: 3600 # Cache valid for 1 hour
when: ansible_os_family == "Debian"
- name: Install packages for Debian/Ubuntu
apt:
name:
- build-essential
- git
- curl
- wget
- htop
- tar
- net-tools
- unzip
- python3
- restic
state: present
when: ansible_os_family == "Debian"
- name: Update Debian-based Systems
apt:
update_cache: yes
upgrade: dist
when: ansible_os_family == 'Debian'
- name: Install EPEL Repository (Red Hat/CentOS)
yum:
name: epel-release
state: present
when: ansible_os_family == "RedHat"
- name: Install packages for RedHat/CentOS
yum:
name:
- "@Development Tools"
- git
- vim
- curl
- wget
- htop
- tar
- python3
- net-tools
- unzip
- restic
state: present
when: ansible_os_family == "RedHat"
- name: Update RHEL-based Systems
yum:
name: '*'
state: latest
when: ansible_os_family == 'RedHat'
- name: Update Restic Binaries
ansible.builtin.command:
cmd: restic self-update
# This will run after the previous play is completed
- import_playbook: install_docker.yml