d2e8cc6e70
- 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>
87 lines
2.2 KiB
YAML
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
|