121 lines
3.1 KiB
Markdown

# Maintenance Role
Handles system maintenance tasks including package updates, cleanup, and conditional reboots.
## Requirements
- Debian/Ubuntu-based systems with `apt` package manager
- `sudo` privileges for package management and system operations
## Role Variables
### Default Variables (`defaults/main.yml`)
```yaml
# Package management
maintenance_update_cache: true # Update apt cache before operations
maintenance_upgrade_packages: true # Perform dist-upgrade
maintenance_autoremove: true # Remove unused packages
maintenance_autoclean: true # Clean apt cache
# Reboot handling
maintenance_check_reboot: true # Check if reboot is required
maintenance_allow_reboot: true # Allow automatic reboots
```
### Host Variables
```yaml
skip_reboot: true # Skip reboots for this host (optional)
```
### Playbook Variables
```yaml
maintenance_serial: "100%" # Serial execution (e.g., "1" for one-at-a-time)
target_group: "all" # Target host group
```
## Dependencies
None.
## Example Playbook
### Basic Usage
```yaml
- hosts: servers
become: true
roles:
- maintenance
```
### With Custom Variables
```yaml
- hosts: servers
become: true
vars:
maintenance_allow_reboot: false # Disable automatic reboots
roles:
- maintenance
```
### Using the Dedicated Maintenance Playbook
```bash
# Run on all hosts
ansible-playbook maintenance-playbook.yml
# Run on specific group
ansible-playbook maintenance-playbook.yml -e "target_group=dev"
# Run with serial execution
ansible-playbook maintenance-playbook.yml -e "target_group=dev" -e "maintenance_serial=1"
# Dry-run
ansible-playbook maintenance-playbook.yml --check --diff
```
### Using Makefile (Recommended)
```bash
# Basic usage
make maintenance # All hosts
make maintenance GROUP=dev # Specific group
make maintenance HOST=dev01 # Specific host
make maintenance CHECK=true # Dry-run
# Advanced options
make maintenance GROUP=dev SERIAL=1 # Serial execution
make maintenance GROUP=local # Local machine (auto-sudo)
```
## Tasks Performed
1. **Package Updates**: Performs `apt dist-upgrade` to update all packages
2. **Cleanup**: Removes unused packages (`apt autoremove`) and cleans cache (`apt autoclean`)
3. **Reboot Check**: Checks if `/var/run/reboot-required` exists
4. **Conditional Reboot**: Reboots system if required (unless `skip_reboot=true`)
## Reboot Behavior
The role respects the following reboot conditions:
- Only reboots if `/var/run/reboot-required` exists
- Only on `apt`-based systems (`ansible_facts['pkg_mgr'] == "apt"`)
- Skips reboot if `skip_reboot` is set to `true` in host variables
- Provides informative reboot message
## Integration with Maintenance Playbook
This role is designed to work with the dedicated `maintenance-playbook.yml` which provides:
- Flexible host targeting
- Serial execution support
- Detailed progress reporting
- System information display
- Intelligent sudo handling
## License
BSD
## Author Information
Part of the Ansible Development Environment Setup project.