60 lines
1.9 KiB
Markdown
Executable file
60 lines
1.9 KiB
Markdown
Executable file
# 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
|