The problem
As the number of Linux systems grows, manual configuration becomes inconsistent and recovery knowledge gets trapped in shell history.
What I did
I am developing Ansible-based baselines that reflect real tasks already performed manually in the environment.
- Package installation and update policy
- Users, SSH keys and service accounts
- Zabbix/Wazuh agent deployment
- Configuration templates and systemd services
- Firewall and application-policy files
- Documented variables for host-specific differences
Implementation notes
Representative commands from the way I diagnose and maintain this project. Public examples use placeholders instead of credentials or sensitive addresses.
Baseline execution pattern
# Validate inventory and connectivity
ansible-inventory -i inventory/hosts.yml --graph
ansible all -i inventory/hosts.yml -m ping
# Preview changes before applying them
ansible-playbook -i inventory/hosts.yml playbooks/baseline.yml --check --diff
# Apply a tagged baseline to a controlled host group
ansible-playbook -i inventory/hosts.yml playbooks/baseline.yml \
--limit linux_servers --tags packages,users,monitoring
# Run syntax and lint checks first
ansible-playbook playbooks/baseline.yml --syntax-check
ansible-lint playbooks/baseline.ymlResult
This gives me credible hands-on configuration-management experience while keeping the scope honest: a serious lab and small environment, not a fictional enterprise fleet.
