Add system maintenance playbook
This commit is contained in:
parent
0da725c799
commit
9393015c96
|
@ -0,0 +1,123 @@
|
|||
---
|
||||
- name: System Maintenance with Admin Setup (Idempotent & Secure)
|
||||
hosts: all
|
||||
become: true
|
||||
|
||||
vars:
|
||||
# ==== Customizable Variables ====
|
||||
admin_user: "admin"
|
||||
admin_group: "sysadmin"
|
||||
admin_password: "$6$Z1rC2h...EncryptedPassword..." # ganti dengan hasil `mkpasswd --method=SHA-512`
|
||||
ssh_key_path: "/home/{{ admin_user }}/.ssh/id_rsa"
|
||||
health_report_path: "/var/log/system_health_report.txt"
|
||||
cron_log_path: "/var/log/cron.log"
|
||||
default_service: "cron"
|
||||
|
||||
tasks:
|
||||
# ==== PACKAGE MAINTENANCE ====
|
||||
- name: Update package repositories
|
||||
apt:
|
||||
update_cache: yes
|
||||
register: update_result
|
||||
changed_when: update_result.cache_updated
|
||||
tags: update
|
||||
|
||||
- name: Upgrade security packages (dist-upgrade)
|
||||
apt:
|
||||
upgrade: dist
|
||||
tags: upgrade
|
||||
|
||||
# ==== CLEANUP ====
|
||||
- name: Clean all contents of /tmp directory
|
||||
shell: "rm -rf /tmp/* || true"
|
||||
tags: cleanup
|
||||
|
||||
- name: Ensure /tmp directory exists with correct permissions
|
||||
file:
|
||||
path: /tmp
|
||||
state: directory
|
||||
owner: root
|
||||
group: root
|
||||
mode: '1777'
|
||||
tags: cleanup
|
||||
|
||||
# ==== SERVICE MAINTENANCE ====
|
||||
- name: "Restart specific service (default: cron)"
|
||||
service:
|
||||
name: "{{ default_service }}"
|
||||
state: restarted
|
||||
tags: restart
|
||||
|
||||
# ==== ADMIN USER MANAGEMENT ====
|
||||
- name: Ensure admin group exists
|
||||
group:
|
||||
name: "{{ admin_group }}"
|
||||
state: present
|
||||
tags: admin
|
||||
|
||||
- name: Ensure admin user exists
|
||||
user:
|
||||
name: "{{ admin_user }}"
|
||||
group: "{{ admin_group }}"
|
||||
password: "{{ admin_password }}"
|
||||
shell: /bin/bash
|
||||
create_home: yes
|
||||
state: present
|
||||
tags: admin
|
||||
|
||||
- name: Grant sudo privileges to admin user (NOPASSWD)
|
||||
copy:
|
||||
dest: "/etc/sudoers.d/{{ admin_user }}"
|
||||
content: "{{ admin_user }} ALL=(ALL) NOPASSWD:ALL"
|
||||
mode: '0440'
|
||||
owner: root
|
||||
group: root
|
||||
tags: admin
|
||||
|
||||
- name: Ensure .ssh directory exists for admin
|
||||
file:
|
||||
path: "/home/{{ admin_user }}/.ssh"
|
||||
state: directory
|
||||
owner: "{{ admin_user }}"
|
||||
group: "{{ admin_group }}"
|
||||
mode: '0700'
|
||||
tags: admin
|
||||
|
||||
- name: Generate SSH key pair (idempotent)
|
||||
openssh_keypair:
|
||||
path: "{{ ssh_key_path }}"
|
||||
owner: "{{ admin_user }}"
|
||||
group: "{{ admin_group }}"
|
||||
mode: '0600'
|
||||
type: rsa
|
||||
size: 2048
|
||||
tags: admin
|
||||
|
||||
# ==== SYSTEM REPORTING ====
|
||||
- name: Generate system health report
|
||||
shell: |
|
||||
echo "===== SYSTEM HEALTH REPORT =====" > {{ health_report_path }}
|
||||
echo -e "\n--- TOP ---" >> {{ health_report_path }}
|
||||
top -b -n1 | head -n 20 >> {{ health_report_path }}
|
||||
echo -e "\n--- DISK USAGE ---" >> {{ health_report_path }}
|
||||
df -h >> {{ health_report_path }}
|
||||
echo -e "\n--- MEMORY ---" >> {{ health_report_path }}
|
||||
free -h >> {{ health_report_path }}
|
||||
args:
|
||||
executable: /bin/bash
|
||||
tags: report
|
||||
|
||||
# ==== LOGGING CONFIGURATION ====
|
||||
- name: Enable cron logging (if not already)
|
||||
lineinfile:
|
||||
path: /etc/rsyslog.d/50-default.conf
|
||||
regexp: '^#?cron.\*'
|
||||
line: 'cron.* {{ cron_log_path }}'
|
||||
notify: Restart rsyslog
|
||||
tags: logging
|
||||
|
||||
handlers:
|
||||
- name: Restart rsyslog
|
||||
service:
|
||||
name: rsyslog
|
||||
state: restarted
|
Loading…
Reference in New Issue