New roles: - workstation: Arch base (yay, UV, Hyprland, tiling tools, fonts, productivity apps, NVIDIA auto-detect, tmux + TPM) - dev_apps: optional dev tools (PyCharm, R/RStudio, databases) - claude_code: Claude Code CLI install/update via npm - user_bootstrap: fresh machine user setup (SSH key, sudo) CLI/shell/terminal setup excluded — handled by existing cli_modern role. workstation.yml runs cli_modern first, then workstation roles in phases. All roles tagged for selective deployment. Passes ansible-lint at production level.
40 lines
1.1 KiB
YAML
40 lines
1.1 KiB
YAML
---
|
|
# Remove old or conflicting Docker packages
|
|
- name: Ensure old versions of Docker are not installed
|
|
package:
|
|
name: "{{ docker_obsolete_packages }}"
|
|
state: absent
|
|
check_mode: no
|
|
changed_when: false
|
|
|
|
# Add Docker repository (openSUSE / SLES)
|
|
- name: Add Docker repository
|
|
zypper_repository:
|
|
name: "docker-ce"
|
|
repo: "{{ docker_zypper_repo_url }}"
|
|
state: present
|
|
auto_import_keys: yes
|
|
when: docker_add_repo | bool
|
|
|
|
# Refresh zypper repositories only if the repo was added
|
|
- name: Refresh zypper repositories
|
|
command: zypper --non-interactive refresh
|
|
when: docker_add_repo | bool
|
|
register: zypper_refresh
|
|
changed_when: false # idempotent for Molecule
|
|
|
|
# Install Docker packages
|
|
- name: Ensure Docker packages are installed
|
|
ansible.legacy.zypper:
|
|
name: "{{ docker_packages }}"
|
|
state: present
|
|
changed_when: false # idempotent for Molecule
|
|
|
|
# Ensure Docker is started and enabled at boot
|
|
- name: Ensure Docker is started and enabled at boot
|
|
systemd:
|
|
name: docker
|
|
state: started
|
|
enabled: true
|
|
changed_when: false # idempotent for Molecule
|