78 lines
2.3 KiB
YAML
78 lines
2.3 KiB
YAML
---
|
|
# ------------------------------------------------------------------------------
|
|
# FILE: roles/common/tasks/main.yml
|
|
# DESCRIPTION: Baseline configuration applied to all managed Ubuntu hosts.
|
|
# Handles hostname, timezone, core packages, NTP, ansible user,
|
|
# and optional LVM root volume expansion.
|
|
# ------------------------------------------------------------------------------
|
|
|
|
- name: Set hostname
|
|
hostname:
|
|
name: "{{ inventory_hostname | replace('_', '-') }}"
|
|
|
|
- name: Set timezone
|
|
timezone:
|
|
name: "{{ common_timezone }}"
|
|
|
|
- name: Update apt cache
|
|
apt:
|
|
update_cache: yes
|
|
cache_valid_time: 3600
|
|
|
|
- name: Install base utility packages
|
|
apt:
|
|
name: "{{ common_packages }}"
|
|
state: present
|
|
|
|
- name: Install chrony
|
|
apt:
|
|
name: chrony
|
|
state: present
|
|
|
|
- name: Configure chrony to use sundial
|
|
template:
|
|
src: chrony.conf.j2
|
|
dest: /etc/chrony/chrony.conf
|
|
mode: '0644'
|
|
notify: restart chrony
|
|
|
|
- name: Ensure chrony is enabled and running
|
|
systemd:
|
|
name: chrony
|
|
state: started
|
|
enabled: yes
|
|
|
|
- name: Ensure ansible user has passwordless sudo
|
|
lineinfile:
|
|
path: /etc/sudoers.d/{{ ansible_user }}
|
|
line: "{{ ansible_user }} ALL=(ALL) NOPASSWD:ALL"
|
|
create: yes
|
|
mode: '0440'
|
|
validate: 'visudo -cf %s'
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# LVM root volume expansion
|
|
# Extends the root PV to the full disk size and grows the LV + filesystem.
|
|
# This codifies what was previously done manually after provisioning.
|
|
# Runs only when common_expand_root_lvm is true (default: true).
|
|
# Safe to re-run — pvresize and lvextend are idempotent when already at max.
|
|
# ------------------------------------------------------------------------------
|
|
|
|
- name: Expand root PV to full disk size
|
|
command: pvresize {{ common_root_pv }}
|
|
register: pvresize_result
|
|
changed_when: "'changed' in pvresize_result.stdout or pvresize_result.rc == 0"
|
|
when: common_expand_root_lvm | bool
|
|
|
|
- name: Extend root LV to 100% of free VG space
|
|
lvol:
|
|
vg: "{{ common_root_vg }}"
|
|
lv: "{{ common_root_lv }}"
|
|
size: +100%FREE
|
|
resizefs: yes
|
|
when:
|
|
- common_expand_root_lvm | bool
|
|
ignore_errors: yes
|
|
# ignore_errors because lvextend returns non-zero when already at max size.
|
|
# resizefs: yes handles the resize2fs call inline — no separate task needed.
|