# Ansible Infrastructure Management This repository contains Ansible playbooks and roles for managing infrastructure across multiple environments. ## Directory Structure ``` ├── playbook.yml # Main playbook for common configuration ├── general.yml # General system setup playbook ├── bootstrap.yml # Bootstrap playbook for new hosts ├── roles/ # Ansible roles │ ├── base/ # Base configuration (users, SSH, system) │ ├── general/ # General system configurations │ ├── caddy/ # Caddy web server │ ├── ns/ # Nameserver configuration │ ├── resolvers/ # DNS resolver setup │ └── ... # Other roles ├── group_vars/ # Group-specific variables ├── host_vars/ # Host-specific variables └── hosts # Inventory file ## Quick Start ### Bootstrap a new host ```bash # For hosts with existing user access make bootstrap-init HOSTNAME=hostname ANSIBLE_HOST=ip_address # For hosts with only root access make bootstrap-init-root HOSTNAME=hostname ANSIBLE_HOST=ip_address ``` ### Run playbooks ```bash # Run main playbook ./run.sh # Run on specific host ansible-playbook -l hostname playbook.yml # Run with specific tags ansible-playbook -t caddy playbook.yml ``` ## Inventory Groups - `vntx_servers` - VNTX network services - `app_servers` - Application servers - `home_servers` - Home network devices - `tailscale_home` - Devices using Tailscale VPN - `caddy_servers` - Servers running Caddy web server ## Key Features - Automated user management with GitHub SSH key integration - Base package installation across all systems - Role-based configuration management - Support for multiple OS families (Debian, Ubuntu, AlmaLinux) - Tailscale VPN integration - Caddy web server with reverse proxy configuration